• Home
  • History
  • Annotate
  • only in /external/llvm/lib/Target/ARM/
History log of /external/llvm/lib/Target/ARM/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 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
15SDOptimizer.cpp
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMFrameLowering.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb2.td
RMJITInfo.cpp
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMCInstLower.cpp
RMMachineFunctionInfo.cpp
RMMachineFunctionInfo.h
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
RMTargetTransformInfo.cpp
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMBaseInfo.h
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCExpr.cpp
CTargetDesc/ARMMCExpr.h
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/ARMMachObjectWriter.cpp
CTargetDesc/ARMTargetStreamer.cpp
humb1FrameLowering.cpp
humb1FrameLowering.h
humb2SizeReduction.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
15SDOptimizer.cpp
RM.h
RMAsmPrinter.cpp
RMAsmPrinter.h
RMAtomicExpandPass.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCallingConv.h
RMCallingConv.td
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMFeatures.h
RMFrameLowering.cpp
RMFrameLowering.h
RMHazardRecognizer.cpp
RMHazardRecognizer.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMOptimizeBarriersPass.cpp
RMRegisterInfo.td
RMScheduleV6.td
RMSelectionDAGInfo.cpp
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
RMTargetObjectFile.cpp
RMTargetObjectFile.h
RMTargetTransformInfo.cpp
ndroid.mk
smParser/ARMAsmParser.cpp
MakeLists.txt
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMMCAsmInfo.cpp
CTargetDesc/ARMMCAsmInfo.h
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCExpr.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/ARMMachObjectWriter.cpp
CTargetDesc/ARMTargetStreamer.cpp
CTargetDesc/ARMWinCOFFObjectWriter.cpp
CTargetDesc/ARMWinCOFFStreamer.cpp
CTargetDesc/Android.mk
CTargetDesc/CMakeLists.txt
LxExpansionPass.cpp
EADME-Thumb.txt
humb1FrameLowering.cpp
humb1RegisterInfo.h
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
15SDOptimizer.cpp
RM.h
RM.td
RMAsmPrinter.cpp
RMAsmPrinter.h
RMAtomicExpandPass.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMBuildAttrs.h
RMCallingConv.td
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.h
RMExpandPseudoInsts.cpp
RMFPUName.def
RMFastISel.cpp
RMFeatures.h
RMFrameLowering.cpp
RMFrameLowering.h
RMHazardRecognizer.cpp
RMHazardRecognizer.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.cpp
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMCInstLower.cpp
RMMachineFunctionInfo.h
RMOptimizeBarriersPass.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMRelocations.h
RMScheduleA9.td
RMScheduleSwift.td
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
RMTargetObjectFile.cpp
RMTargetObjectFile.h
RMTargetTransformInfo.cpp
ndroid.mk
smParser/ARMAsmParser.cpp
smParser/Android.mk
smParser/CMakeLists.txt
MakeLists.txt
isassembler/ARMDisassembler.cpp
isassembler/Android.mk
isassembler/CMakeLists.txt
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
nstPrinter/Android.mk
nstPrinter/CMakeLists.txt
LVMBuild.txt
CTargetDesc/ARMArchName.def
CTargetDesc/ARMArchName.h
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMBaseInfo.h
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMFixupKinds.h
CTargetDesc/ARMMCAsmInfo.cpp
CTargetDesc/ARMMCAsmInfo.h
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCExpr.h
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/ARMMachORelocationInfo.cpp
CTargetDesc/ARMMachObjectWriter.cpp
CTargetDesc/ARMTargetStreamer.cpp
CTargetDesc/ARMUnwindOp.h
CTargetDesc/ARMUnwindOpAsm.cpp
CTargetDesc/ARMUnwindOpAsm.h
CTargetDesc/Android.mk
CTargetDesc/CMakeLists.txt
LxExpansionPass.cpp
argetInfo/ARMTargetInfo.cpp
argetInfo/Android.mk
argetInfo/CMakeLists.txt
argetInfo/LLVMBuild.txt
humb1FrameLowering.cpp
humb1FrameLowering.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
humb2SizeReduction.cpp
bd3e4ce9cfa61bcc0176ac17a06f0904cb854a9a 19-Feb-2014 Colin Cross <ccross@android.com> am b7485134: am 449fc261: Merge "llvm: convert makefiles to support multilib build"

* commit 'b7485134a2cbecc47904988b4cfde24019ac4fa1':
llvm: convert makefiles to support multilib build
373aa5c665fe6df6b9c5586d397dc3617f25aab5 07-Feb-2014 Stephen Hines <srhines@google.com> Update LLVM for merge to 3.4.

Update config.h files.

Add RS SubtargetFeature for +long64 on ARM devices.

Adjust Android.mk for added/removed files:

+ Delinearization.cpp
- PathNumbering.cpp
- PathProfileInfo.cpp
- PathProfileVerifier.cpp
- ProfileDataLoader.cpp
- ProfileDataLoaderPass.cpp
- ProfileEstimatorPass.cpp
- ProfileInfo.cpp
- ProfileInfoLoader.cpp
- ProfileInfoLoaderPass.cpp
- ProfileVerifierPass.cpp

+ LiveRegUnits.cpp
- ShrinkWrapping.cpp
+ StackMaps.cpp
- StrongPHIElimination.cpp

+ DIEHash.cpp

+ LegacyPassManager.cpp

+ ELF.cpp

+ Unicode.cpp

- MipsOptimizeMathLibCalls.cpp

- MipsELFStreamer.cpp
+ MipsTargetStreamer.cpp

- EdgeProfiling.cpp
+ DataFlowSanitizer.cpp
+ DebugIR.cpp
- OptimalEdgeProfiling.cpp
- PathProfiling.cpp
- ProfilingUtils.cpp

- BasicBlockPlacement.cpp
+ LoopRerollPass.cpp
+ PartiallyInlineLibCalls.cpp
+ SampleProfile.cpp

+ GlobalStatus.cpp

Change-Id: I17dcf0bf53a1720acd8226ae3e30d84993562a91
RM.td
RMSubtarget.cpp
RMSubtarget.h
ce9904c6ea8fd669978a8eefb854b330eb9828ff 12-Feb-2014 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/release_34' into merge-20140211

Conflicts:
lib/Linker/LinkModules.cpp
lib/Support/Unix/Signals.inc

Change-Id: Ia54f291fa5dc828052d2412736e8495c1282aa64
b7325c318ecf01d4c82391c1f0a63090c8de0144 05-Feb-2014 Colin Cross <ccross@android.com> llvm: convert makefiles to support multilib build

Convert makefiles to allow for building two architectures at the
same time. This will also cause make checkbuild to build the target
libraries for all supported architectures.

Change-Id: Ia5e6fe5b1186a67753faafd3532ed4cb280a8b10
ndroid.mk
isassembler/Android.mk
CTargetDesc/Android.mk
argetInfo/Android.mk
54ed08e250a76b570c2162d49633e11b8ebb2d98 09-Dec-2013 Tim Northover <tnorthover@apple.com> Merge r196725 (conflicts on same API as before):
------------------------------------------------------------------------
r196725 | tnorthover | 2013-12-08 15:56:50 +0000 (Sun, 08 Dec 2013) |
19 lines

ARM: fix folding of stack-adjustment (yet again).

When trying to eliminate an "sub sp, sp, #N" instruction by folding
it into an existing push/pop using dummy registers, we need to account
for the fact that this might affect precisely how "fp" gets set in the
prologue.

We were attempting this, but assuming that *whenever* we performed a
fold it would make a difference. This is false, for example, in:
push {r4, r7, lr}
add fp, sp, #4
vpush {d8}
sub sp, sp, #8

we can fold the "sub" into the "vpush", forming "vpush {d7, d8}".
However, in that case the "add fp" instruction mustn't change, which
we were getting wrong before.

Should fix PR18160.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196769 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
e8098892f517c492193f8f8ebdcbb861d7a7b54a 08-Dec-2013 Tim Northover <tnorthover@apple.com> Merging r196493. Simple conflict due to change API of updated
function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196717 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
2bdc0dd2db145591eb3fdc01fa0b2a3d831f334b 08-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r196588:
------------------------------------------------------------------------
r196588 | weimingz | 2013-12-06 09:56:48 -0800 (Fri, 06 Dec 2013) | 7 lines

Bug 18149: [AArch32] VSel instructions has no ARMCC field

The current peephole optimizing for compare inst assumes an instr that
uses CPSR has an MO for ARM Cond code.However, for VSEL instructions
(vseqeq, vselgt, vselgt, vselvs), there is no such operand nor do
they support the modification of Cond Code.

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196704 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
31928dfc03d92322f9f2fb1c4a7878024d3cc9d1 07-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r196269:
------------------------------------------------------------------------
r196269 | jamesm | 2013-12-03 03:23:11 -0800 (Tue, 03 Dec 2013) | 5 lines

Addrspacecasts are no-ops on ARM.

Testcase added.


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196651 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
1b26fdbf1f01e90b803cc035b6b932cd95c76830 02-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r196046:
------------------------------------------------------------------------
r196046 | tnorthover | 2013-12-01 06:16:24 -0800 (Sun, 01 Dec 2013) | 8 lines

ARM: fix bug in -Oz stack adjustment folding

Previously, we clobbered callee-saved registers when folding an "add
sp, #N" into a "pop {rD, ...}" instruction. This change checks whether
a register we're going to add to the "pop" could actually be live
outside the function before doing so and should fix the issue.

This should fix PR18081.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196074 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.h
RMFrameLowering.cpp
humb1FrameLowering.cpp
3d238de4d54eb0b16afd96a57f49f92b2f7748e0 02-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r195401:
------------------------------------------------------------------------
r195401 | lhames | 2013-11-21 16:46:32 -0800 (Thu, 21 Nov 2013) | 8 lines

Fix a typo where we were creating <def,kill> operands instead of
<def,dead> ones.

Add an assertion to make sure we catch this in the future.

Fixes <rdar://problem/15464559>.


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196073 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
354362524a72b3fa43a6c09380b7ae3b2380cbba 19-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file. The memory leaks in this version have been fixed. Thanks
Alexey for pointing them out.

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

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195064 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16 18-Nov-2013 Alexey Samsonov <samsonov@google.com> Revert r194865 and r194874.

This change is incorrect. If you delete virtual destructor of both a base class
and a subclass, then the following code:
Base *foo = new Child();
delete foo;
will not cause the destructor for members of Child class. As a result, I observe
plently of memory leaks. Notable examples I investigated are:
ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5a364c5561ec04e33a6f5d52c14f1bac6f247ea0 15-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file.

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

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194865 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
cc7052343e5e955d4e2f48885c06360f9003390a 15-Nov-2013 Bob Wilson <bob.wilson@apple.com> Avoid illegal integer promotion in fastisel

Stop folding constant adds into GEP when the type size doesn't match.
Otherwise, the adds' operands are effectively being promoted, changing the
conditions of an overflow. Results are different when:

sext(a) + sext(b) != sext(a + b)

Problem originally found on x86-64, but also fixed issues with ARM and PPC,
which used similar code.

<rdar://problem/15292280>

Patch by Duncan Exon Smith!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194840 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bf7329d9a0169abbd6ec837dc8b682b2f2fd98cd 14-Nov-2013 Tim Northover <tnorthover@apple.com> ARM: produce friendly error for invalid inline asm

We used to perform an invalid operation on an MVT and crash, which wasn't much
fun.

Patch by Oliver Stannard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194714 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
929bdb23794b615dc6b0cc59db21f0450c3ce33b 13-Nov-2013 Weiming Zhao <weimingz@codeaurora.org> Enable generating legacy IT block for AArch32

By default, the behavior of IT block generation will be determinated
dynamically base on the arch (armv8 vs armv7). This patch adds backend
options: -arm-restrict-it and -arm-no-restrict-it. The former one
restricts the generation of IT blocks (the same behavior as thumbv8) for
both arches. The later one allows the generation of legacy IT block (the
same behavior as ARMv7 Thumb2) for both arches.

Clang will support -mrestrict-it and -mno-restrict-it, which is
compatible with GCC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194592 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
humb2ITBlockPass.cpp
59e648e3c8966e0678902a2994558f25c8573ce4 12-Nov-2013 Tim Northover <tnorthover@apple.com> ARM: diagnose invalid system LDM/STM

The system LDM and STM instructions can't usually writeback to the base
register. The one exception is when an LDM is actually an exception-return
(i.e. contains PC in the register list).

(There's already a test that "ldm sp!, {r0-r3, pc}^" works, which is why there
is no positive test).

rdar://problem/15223374

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194512 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2ca352d027da26194deaa77ebc486df159e51c28 12-Nov-2013 Bradley Smith <bradley.smith@arm.com> [ARM] Add support for FP_HP_extension build attribute



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194470 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
ef572e31e210a03c0669e3ed2ed7cf2d789f8599 11-Nov-2013 Artyom Skrobov <Artyom.Skrobov@arm.com> [ARM] Add support for MVFR2 which is new in ARMv8

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194416 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMRegisterInfo.td
1343fbcb7e00b12b63ae90b8c211c2d42416a74f 09-Nov-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove some unnecessary temporary strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194335 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f008d3465ea57849801cc6c71e64625f4a6d4bc4 09-Nov-2013 Logan Chien <tzuhsiang.chien@gmail.com> [arm] Refine ARMBuildAttrs.h.

This commit cleans up some comments in ARMBuildAttrs.h.
Besides, this commit fixes an error related to AllowWMMXv1
and AllowWMMXv2 (although they are not used currently.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194327 91177308-0d34-0410-b5e6-96231b3b80d8
RMBuildAttrs.h
323ac85d6ad7ba5d9593d8e151d879bd91d82e08 08-Nov-2013 Tim Northover <tnorthover@apple.com> ARM: fold prologue/epilogue sp updates into push/pop for code size

ARM prologues usually look like:
push {r7, lr}
sub sp, sp, #4

If code size is extremely important, this can be optimised to the single
instruction:
push {r6, r7, lr}

where we don't actually care about the contents of r6, but pushing it subtracts
4 from sp as a side effect.

This should implement such a conversion, predicated on the "minsize" function
attribute (-Oz) since I've yet to find any code it actually makes faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194264 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMFrameLowering.cpp
humb1FrameLowering.cpp
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
RMInstrThumb2.td
fa840ba402806d978c18401c6bea1c808607d944 08-Nov-2013 Artyom Skrobov <Artyom.Skrobov@arm.com> [ARM] Handling for coprocessor instructions that are undefined starting from ARMv8 (ARM encodings)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194261 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
1b91231347c00bf1be46bdd5b27ae8c45fdc0d0c 08-Nov-2013 Artyom Skrobov <Artyom.Skrobov@arm.com> [ARM] In ARMAsmParser, MatchCoprocessorOperandName() permitted p10 and p11 as operands for coprocessor instructions, resulting in encodings that clash with FP/NEON instruction encodings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194253 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
e53abc20724ddde4e91467671328b531361a734f 05-Nov-2013 Tim Northover <tnorthover@apple.com> ARM: remove unnecessary state-tracking during frame lowering.

ResolveFrameIndex had what appeared to be a very nasty hack for when the
frame-index referred to a callee-saved register. In this case it "adjusted" the
offset so that the address was correct if (and only if) the MachineInstr
immediately followed the respective push.

This "worked" for all forms of GPR & DPR but was only ever used to set the
frame pointer itself, and once this was put in a more sensible location the
entire state-tracking machinery it relied on became redundant. So I stripped
it.

The only wrinkle is that "add r7, sp, #0" might theoretically be slower (need
an actual ALU slot) compared to "mov r7, sp" so I added a micro-optimisation
that also makes emitARMRegUpdate and emitT2RegUpdate also work when NumBytes ==
0.

No test changes since there shouldn't be any functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194025 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMFrameLowering.cpp
RMMachineFunctionInfo.h
humb1FrameLowering.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
cb01efb7988d119d6e2aedab1740695aa6a9cc0c 03-Nov-2013 Bob Wilson <bob.wilson@apple.com> Enable optimization of sin / cos pair into call to __sincos_stret for iOS7+.

rdar://12856873
Patch by Evan Cheng, with a fix for rdar://13209539 by Tilmann Scheller

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193942 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.cpp
RMSubtarget.h
6186de5c54b580414b2d162e0f335b62b3d9812c 01-Nov-2013 Bradley Smith <bradley.smith@arm.com> [ARM] Add Virtualization subtarget feature and more build attributes in this area

Add a Virtualization ARM subtarget feature along with adding proper build
attribute emission for Tag_Virtualization_use (encodes Virtualization and
TrustZone) and Tag_MPextension_use.

Also rework test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll testcase to
something that is more maintainable. This changes the focus of this
testcase away from testing CPU defaults (which is tested elsewhere), onto
specifically testing that attributes are encoded correctly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193859 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMBuildAttrs.h
RMSubtarget.cpp
RMSubtarget.h
479a2de32a994b1902869b88e56253936d943531 01-Nov-2013 Bradley Smith <bradley.smith@arm.com> [ARM] Fix Tag_ABI_HardFP_use build attribute

Fix Tag_ABI_HardFP_use build attribute to handle single precision FP,
replace deprecated Tag_ABI_HardFP_use value of 3 with 0 and also add
some tests for Tag_ABI_VFP_args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193856 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
0e536ee4cae5f7359e8a8db99edadc39a5c12132 31-Oct-2013 Jim Grosbach <grosbach@apple.com> Legalize: Improve legalization of long vector extends.

When an extend more than doubles the size of the elements (e.g., a zext
from v16i8 to v16i32), the normal legalization method of splitting the
vectors will run into problems as by the time the destination vector is
legal, the source vector is illegal. The end result is the operation
often becoming scalarized, with the typical horrible performance. For
example, on x86_64, the simple input of:
define void @bar(<16 x i8> %a, <16 x i32>* %p) nounwind {
%tmp = zext <16 x i8> %a to <16 x i32>
store <16 x i32> %tmp, <16 x i32>*%p
ret void
}

Generates:
.section __TEXT,__text,regular,pure_instructions
.section __TEXT,__const
.align 5
LCPI0_0:
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.long 255 ## 0xff
.section __TEXT,__text,regular,pure_instructions
.globl _bar
.align 4, 0x90
_bar:
vpunpckhbw %xmm0, %xmm0, %xmm1
vpunpckhwd %xmm0, %xmm1, %xmm2
vpmovzxwd %xmm1, %xmm1
vinsertf128 $1, %xmm2, %ymm1, %ymm1
vmovaps LCPI0_0(%rip), %ymm2
vandps %ymm2, %ymm1, %ymm1
vpmovzxbw %xmm0, %xmm3
vpunpckhwd %xmm0, %xmm3, %xmm3
vpmovzxbd %xmm0, %xmm0
vinsertf128 $1, %xmm3, %ymm0, %ymm0
vandps %ymm2, %ymm0, %ymm0
vmovaps %ymm0, (%rdi)
vmovaps %ymm1, 32(%rdi)
vzeroupper
ret

So instead we can check if there are legal types that enable us to split
more cleverly when the input vector is already legal such that we don't
turn it into an illegal type. If the extend is such that it's more than
doubling the size of the input we check if
- the number of vector elements is even,
- the source type is legal,
- the type of a split source is illegal,
- the type of an extended (by doubling element size) source is legal, and
- the type of that extended source when split is legal.
If the conditions are met, instead of just splitting both the
destination and the source types, we create an extend that only goes up
one "step" (doubling the element width), and the continue legalizing the
rest of the operation normally. The result is that this operates as a
new, more effecient, termination condition for the loop of "split the
operation until the destination type is legal."

With this change, the above example now compiles to:
_bar:
vpxor %xmm1, %xmm1, %xmm1
vpunpcklbw %xmm1, %xmm0, %xmm2
vpunpckhwd %xmm1, %xmm2, %xmm3
vpunpcklwd %xmm1, %xmm2, %xmm2
vinsertf128 $1, %xmm3, %ymm2, %ymm2
vpunpckhbw %xmm1, %xmm0, %xmm0
vpunpckhwd %xmm1, %xmm0, %xmm3
vpunpcklwd %xmm1, %xmm0, %xmm0
vinsertf128 $1, %xmm3, %ymm0, %ymm0
vmovaps %ymm0, 32(%rdi)
vmovaps %ymm2, (%rdi)
vzeroupper
ret

This generalizes a custom lowering that was added a while back to the
ARM backend. That lowering is no longer necessary, and is removed. The
testcases for it, however, provide excellent ARM tests for this change
and so remain.

rdar://14735100

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193727 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3f04b5068619ca0411521c9871f4bfc6b04f951f 30-Oct-2013 Artyom Skrobov <Artyom.Skrobov@arm.com> [ARM] NEON instructions were erroneously decoded from certain invalid encodings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193705 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
d1ea5928ddbd38e99507f7f18df8ec8a865c7799 29-Oct-2013 Manman Ren <manman.ren@gmail.com> Struct byval cleanup: add helper functions to reduce code duplication.

Helper functions are added:
emitPostLd: emit a post-increment load operation with given size.
emitPostSt: emit a post-increment store operation with given size.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193656 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
93cf0939f95b3d580d9c05375a7c84164e1ba72e 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Move getSymbol to TargetLoweringObjectFile.

This allows constructing a Mangler with just a TargetMachine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193630 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
ffc7dca885151ed42642c2d6733e8db75d276621 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a helper getSymbol to AsmPrinter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193627 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMCInstLower.cpp
57bca7b26ec916ca1b74b1408608a6c69a1aa422 29-Oct-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Make sure HasCRC is initialized to false in Subtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193624 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
c04d241d13820b33224b5cbd89a427fc08e5d1d9 29-Oct-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Unaligned vectorized double stores are expensive

Updated a test case that assumed that <2 x double> would vectorize to use
<4 x float>.

radar://15338229

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193574 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
7e8cebf22d170769b0bf0c2a69309faa0e36ac4c 29-Oct-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Account for zero cost scalar SROA instructions

By vectorizing a series of srl, or, ... instructions we have obfuscated the
intention so much that the backend does not know how to fold this code away.

radar://15336950

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193573 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
3d478aee8e2480661cb0d98b10da8ad2ebf59fcf 28-Oct-2013 Lang Hames <lhames@gmail.com> Return early from getUnconditionalBranchTargetOpValue if the branch target is
an MCExpr, in order to avoid writing an encoded zero value in the immediate
field.

When getUnconditionalBranchTargetOpValue is called with an MCExpr target, we
don't know what the final immediate field value should be. We shouldn't
explicitly set the immediate field to an encoded zero value as zero is encoded
with a non-zero bit pattern. This leads to bits being set that pollute the
final immediate value. The nature of the encoding is such that the polluted
bits only affect very large immediate values, explaining why this hasn't
caused problems earlier.

Fixes <rdar://problem/15155975>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193535 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
23125d02d929758e1b0dbb30b13f1deff7a5ea4b 28-Oct-2013 Logan Chien <tzuhsiang.chien@gmail.com> [arm] Implement eabi_attribute, cpu, and fpu directives.

This commit allows the ARM integrated assembler to parse
and assemble the code with .eabi_attribute, .cpu, and
.fpu directives.

To implement the feature, this commit moves the code from
AttrEmitter to ARMTargetStreamers, and several new test
cases related to cortex-m4, cortex-r5, and cortex-a15 are
added.

Besides, this commit also change the Subtarget->isFPOnlySP()
to Subtarget->hasD16() to match the usage of .fpu directive.

This commit changes the test cases:

* Several .eabi_attribute directives in
2010-09-29-mc-asm-header-test.ll are removed because the .fpu
directive already cover the functionality.

* In the Cortex-A15 test case, the value for
Tag_Advanced_SIMD_arch has be changed from 1 to 2,
which is more precise.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193524 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMBuildAttrs.h
RMFPUName.def
RMFPUName.h
smParser/ARMAsmParser.cpp
CTargetDesc/ARMELFStreamer.cpp
c8f4e5db29270fc7ed164af973ece7ba5921539b 25-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: allow .thumb_func to be separated from symbol definition

When assembling, a .thumb_func directive is supposed to be applicable to the
next symbol definition, even if there are intervening directives. We were
racing ahead to try and find it, and this commit should fix the issue.

Patch by Gabor Ballabas

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193403 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
214c37d1816b62a25525282817f7088a1e2ed1dc 25-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: don't expand atomicrmw inline on Cortex-M0

There's a barrier instruction so that should still be used, but most actual
atomic operations are going to need a platform decision on the correct
behaviour (either nop if single-threaded or OS-support otherwise).

rdar://problem/15287210

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193399 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.h
3115047182dfa0e4692901e897a58e5be3329423 25-Oct-2013 Jim Grosbach <grosbach@apple.com> ARM: Tweak usage of '*vfp' compiler_rt functions.

Only use them if the subtarget has ARM mode, as these routines are implemented
as ARM code.

rdar://15302004

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e8d84d8936dc8fb4fc260b0601b37e93679de421 24-Oct-2013 David Peixotto <dpeixott@codeaurora.org> Remove class abstraction from ARM struct byval lowering

This commit changes the struct byval lowering for arm to use inline
checks for the subtarget instead of a class abstraction to represent
the differences. The class abstraction was judged to be too much
code for this task.

No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193357 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
44edc227c743052bd58e73a5e1402fa68ed728f0 24-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: Mark double-precision instructions as such

This prevents us from silently accepting invalid instructions on (for example)
Cortex-M4 with just single-precision VFP support.

No tests for the extra Pat Requires because they're essentially assertions: the
affected code should have been lowered to libcalls before ISel.

rdar://problem/15302004

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193354 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
RMInstrVFP.td
e2dee623e0eeb12c6e22add0e55139693ffb2dca 24-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: add a couple more NEON predicates.

The fused multiply instructions were added in VFPv4 but are still NEON
instructions, in particular they shouldn't be available on a Cortex-M4 not
matter how floaty it is.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193342 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
eac623a18b1e7ad9e5a7da76a323039450b7d7ce 24-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: mark various aliases with their architecture requirements.

If an alias inherits directly from InstAlias then it doesn't get any default
"Requires" values, so llvm-mc will allow it even on architectures that don't
support the underlying instruction.

This tidies up the obvious VFP and NEON cases I found.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193340 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
6c0138e5fca970b126a76ee9252af462760c99c0 24-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: Use non-VFP softcalls on embedded Darwinish targets

The compiler-rt functions __adddf3vfp and so on exist purely to allow Thumb1
code to make use of VFP instructions by switching back to ARM mode, they make
no sense for M-class processors which don't even have an ARM mode.

Given that justification, in practice this is a platform ABI decision so the
actual check is based on that rather than CPU features.

rdar://problem/15302004

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193327 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cdd776d13f799da1aff4b2c9c58a236bee74ea2e 24-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: fix assert on unpredictable POP instruction.

POP instructions are aliased to the ARM LDM variants but have different syntax.
This caused two problems: we tried to access a non-existent operand to annotate
the '!', and the error message didn't make much sense.

With some vigorous hand-waving in the error message both problems can be
fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193322 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
01b0e94bb731310e72f66977e4b57cd3f3280ba4 22-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: provide diagnostics on more writeback LDM/STM instructions

The set of circumstances where the writeback register is allowed to be in the
list of registers is rather baroque, but I think this implements them all on
the assembly parsing side.

For disassembly, we still warn about an ARM-mode LDM even if the architecture
revision is < v7 (the required architecture information isn't available). It's
a silly instruction anyway, so hopefully no-one will mind.

rdar://problem/15223374

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193185 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
5b46ad4faf3216b4faaf30fa3a32f0af06f1ae36 22-Oct-2013 Jim Grosbach <grosbach@apple.com> ARM: Thumb2 copy for GPRPair needs to use thumb instructions.

Use tMOVr instead of plain MOVr.

rdar://15193017

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193139 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
6c28682963e96699e7e0ab15282319c152bd6373 22-Oct-2013 Jim Grosbach <grosbach@apple.com> ARM: Clean up copyPhysReg() a bit.

No functional change, just cleaning things up for readability.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193138 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
22cfec4c01516481090f22117ff555e166734661 18-Oct-2013 Richard Barton <richard.barton@arm.com> Pure refactoring change.

Patch by Artyom Skrobov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192977 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb.td
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
humb2InstrInfo.cpp
b1c480900bdc6486624a476b6ae25cb02a3b6276 18-Oct-2013 Silviu Baranga <silviu.baranga@arm.com> Add hardware division as a default feature on Cortex-A15. Also add test cases to check this, and change diagnostics for the hwdiv-arm feature to something useful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192963 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrInfo.td
7014d274e4adb51cbb20201ab002057395b7dcaa 17-Oct-2013 David Peixotto <dpeixott@codeaurora.org> 17309 ARM backend incorrectly lowers COPY_STRUCT_BYVAL_I32 for thumb1 targets

This commit implements the correct lowering of the
COPY_STRUCT_BYVAL_I32 pseudo-instruction for thumb1 targets.
Previously, the lowering of COPY_STRUCT_BYVAL_I32 generated the
post-increment forms of ldr/ldrh/ldrb instructions. Thumb1 does not
have the post-increment form of these instructions so the generated
assembly contained invalid instructions.

Passing the generated assembly to gcc caused it to complain with an
error like this:

Error: cannot honor width suffix -- `ldrb r3,[r0],#1'

and the integrated assembler would generate an object file with an
invalid instruction encoding.

This commit contains a small test case that demonstrates the problem
with thumb1 targets as well as an expanded test case that more
throughly tests the lowering of byval struct passing for arm,
thumb1, and thumb2 targets.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192916 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6483751a362948bb83940e55f63226c27c472bc0 17-Oct-2013 David Peixotto <dpeixott@codeaurora.org> Refactor lowering for COPY_STRUCT_BYVAL_I32

This commit refactors the lowering of the COPY_STRUCT_BYVAL_I32
pseudo-instruction in the ARM backend. We introduce a new helper
class that encapsulates all of the operations needed during the
lowering. The operations are implemented for each subtarget in
different subclasses. Currently only arm and thumb2 subtargets are
supported.

This refactoring was done to easily implement support for thumb1
subtargets. This initial patch does not add support for thumb1, but
is only a refactoring. A follow on patch will implement the support
for thumb1 subtargets.

No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192915 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
06957f43f6051901590b318c10b1a0a5c7f898d4 16-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a MCAsmInfoELF class and factor some code into it.

We had a MCAsmInfoCOFF, but no common class for all the ELF MCAsmInfos before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192760 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCAsmInfo.cpp
CTargetDesc/ARMMCAsmInfo.h
05ac87f864a34bff0e6f2a029d48eab3e4cb464a 15-Oct-2013 Manman Ren <manman.ren@gmail.com> Struct byval: fix a copy-paste error for thumb2.

PR17309


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192730 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0d1e2aebe641fc26bba5d895bbcadcac6f23aaec 14-Oct-2013 Bernard Ogden <bogden@arm.com> Add Cortex-A57 support

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192591 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
7220572e74844aa37b1b492ef67a8c1b403a254f 14-Oct-2013 Bernard Ogden <bogden@arm.com> Add subtarget feature support for Cortex-A53

Some previous implicit defaults have changed, for example FP and NEON
are now on by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192590 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
fc3dc102e0bef8ecb7cd13ceab77dc130175f792 11-Oct-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Fix FP ABI attributes with no VFP enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192458 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8ccf2b3c9e0f70220c88f3328ddebebd7866f92c 10-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> ARM: Put isV8EligibleForIT into the llvm namespace. While there make it inline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192350 91177308-0d34-0410-b5e6-96231b3b80d8
RMFeatures.h
acd79ce0ada50c7a437757d188f410d67030fbb9 10-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: correct liveness flags during ARMLoadStoreOpt

When we had a sequence like:

s1 = VLDRS [r0, 1], Q0<imp-def>
s3 = VLDRS [r0, 2], Q0<imp-use,kill>, Q0<imp-def>
s0 = VLDRS [r0, 0], Q0<imp-use,kill>, Q0<imp-def>
s2 = VLDRS [r0, 4], Q0<imp-use,kill>, Q0<imp-def>

we were gathering the {s0, s1} loads below the s3 load. This is fine,
but confused the verifier since now the s3 load had Q0<imp-use> with
no definition above it.

This should mark such uses <undef> as well. The liveness structure at
the beginning and end of the block is unaffected, and the true sN
definitions should prevent any dodgy reorderings being introduced
elsewhere.

rdar://problem/15124449

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192344 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3353c592de08c4a7b7b282714b8044d7cfc4c6ad 09-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> Flip the ownership of MCStreamer and MCTargetStreamer.

MCStreamer now owns the target streamer. This prevents leaking the target
streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192303 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
320296a4cfe414ce59f406b8a5ce15272f563103 08-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a MCTargetStreamer interface.

This patch fixes an old FIXME by creating a MCTargetStreamer interface
and moving the target specific functions for ARM, Mips and PPC to it.

The ARM streamer is still declared in a common place because it is
used from lib/CodeGen/ARMException.cpp, but the Mips and PPC are
completely hidden in the corresponding Target directories.

I will send an email to llvmdev with instructions on how to use this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192181 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmParser.cpp
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
fb92f4645968724d2095ef95a7034d7e20d39b3f 07-Oct-2013 Manman Ren <manman.ren@gmail.com> Struct byval: use the correct alignment for loads generated to load
from struct byval to registers.

We used to pass 0 which means the alignment of PtrVT. Even when the alignment
of the struct is smaller than 4, the LOADs would have alignment of 4, and
further optimizations could combine the LOADs into a ldm, which would
cause crash.

The fix is to pass the alignment of the struct byval.

rdar://problem/15144402


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192126 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ca7b2d08d7b918e5e8e921a837623af962b27d00 07-Oct-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Improve build attributes emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192111 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMBuildAttrs.h
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
ef8c4ca252f1289ca8d0a1e6cfd96ca17fe3c5a8 07-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove getEHExceptionRegister and getEHHandlerRegister.

They haven't been used for a long time. Patch by MathOnNapkins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192099 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
cf3e4cb29a5fd485f11354060bb7a99e8cfdaf09 07-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: allow cortex-m0 to use hint instructions

The hint instructions ("nop", "yield", etc) are mostly Thumb2-only, but have
been ported across to the v6M architecture. Fortunately, v6M seems to sit
nicely between v6 (thumb-1 only) and v6T2, so we can add a feature for it
fairly easily.

rdar://problem/15144406

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192097 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrInfo.td
RMInstrThumb.td
RMSubtarget.h
smParser/ARMAsmParser.cpp
5e195a4c8d8cd4498ab7e0aa16a3b6f273daf457 05-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove some really nasty uses of hasRawTextSupport.

When MC was first added, targets could use hasRawTextSupport to keep features
working before they were added to the MC interface.

The design goal of MC is to provide an uniform api for printing assembly and
object files. Short of relaxations and other corner cases, a object file is
just another representation of the assembly.

It was never the intention that targets would keep doing things like

if (hasRawTextSupport())
Set flags in one way.
else
Set flags in another way.

When they do that they create two code paths and the object file is no longer
just another representation of the assembly. This also then requires testing
with llc -filetype=obj, which is extremelly brittle.

This patch removes some of these hacks by replacing them with smaller ones.
The ARM flag setting is trivial, so I just moved it to the constructor. For
Mips, the patch adds two temporary hack directives that allow the assembly
to represent the same things as the object file was already able to.

The hope is that the mips developers will replace the hack directives with
the same ones that gas uses and drop the -print-hack-directives flag.

I will also try to implement a target streamer interface, so that we can
move this out of the common code.

In summary, for any new work, two rules of the thumb are
* Don't use "llc -filetype=obj" in tests.
* Don't add calls to hasRawTextSupport.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192035 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmParser.cpp
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMELFStreamer.h
CTargetDesc/ARMMCTargetDesc.cpp
d1bd8d904c5adbe14f700be02f1e6479b5a6d04b 04-Oct-2013 Matthias Braun <matze@braunis.de> ARM: optimizeSelect has to consider the previous register class

optimizeSelect folds (predicated) copy instructions, it must not ignore
the original register class of the operand when replacing the register
with the copies dest register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191963 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
4e54f41d6ce6b5a502d2f8496f1e8360ed953b7d 04-Oct-2013 Matthias Braun <matze@braunis.de> ARM: do not add a regmask for TAILJUMPs

The jump doesn't really kill the registers, the following call does but
we never get back anyway.
This avoids some verify-machineinstrs problems when TAILJUMPs are
if-converted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191962 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e1bde51d63f888e0011dfd3b9cfd78b1736d0b5d 04-Oct-2013 Matthias Braun <matze@braunis.de> ARM: preserve undef flag in pseudo instruction expanders

Copy over the whole register machine operand instead of creating a new one
with an incomplete set of flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191961 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
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
RMBaseInstrInfo.cpp
RMFeatures.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
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
RMBaseRegisterInfo.cpp
RMCallingConv.td
RMExpandPseudoInsts.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
441aeddd56d000ff77460586961a523e41edd205 01-Oct-2013 Joey Gouly <joey.gouly@arm.com> [ARM] Remove an unused function from the disassembler.

Pointed out by Joerg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191749 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
a64fa348df0f5d80109ae244b03142b3c4f9a981 30-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> [ARM] Clean up ARMAsmParser::validateInstruction().

Fix some LLVM Coding Standards violations.

No changes in functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191686 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9724873c317d2b170cfea87cdf2a402fcd7c6c7d 30-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> [ARM] Assembler: ARM LDRD with writeback requires the base register to be different from the destination registers.

See ARM ARM A8.8.72.

Violating this constraint results in unpredictable behavior.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191678 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7373265e1a2042032dfa48f1d0accca4e5b68fe1 30-Sep-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Swift model: Fix uop description on some writes

Those writes really need two/three uops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191677 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
d42730dc712026cbfb1322a979e0ac72cd31a19e 30-Sep-2013 Arnold Schwaighofer <aschwaighofer@apple.com> IfConverter: Use TargetSchedule for instruction latencies

For targets that have instruction itineraries this means no change. Targets
that move over to the new schedule model will use be able the new schedule
module for instruction latencies in the if-converter (the logic is such that if
there is no itineary we will use the new sched model for the latencies).

Before, we queried "TTI->getInstructionLatency()" for the instruction latency
and the extra prediction cost. Now, we query the TargetSchedule abstraction for
the instruction latency and TargetInstrInfo for the extra predictation cost. The
TargetSchedule abstraction will internally call "TTI->getInstructionLatency" if
an itinerary exists, otherwise it will use the new schedule model.

ATTENTION: Out of tree targets!

(I will also send out an email later to LLVMDev)

This means, if your target implements

unsigned getInstrLatency(const InstrItineraryData *ItinData,
const MachineInstr *MI,
unsigned *PredCost);

and returns a value for "PredCost", you now also need to implement

unsigned getPredictationCost(const MachineInstr *MI);

(if your target uses the IfConversion.cpp pass)

radar://15077010

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191671 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
3f4f420ab7acb10221ba971543a7eed5489fb626 28-Sep-2013 Robert Wilhelm <robert.wilhelm@gmx.net> Even more spelling fixes for "instruction".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191611 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
humb1RegisterInfo.cpp
cca114611945332852094fcadfaa4ffbd012bfb3 27-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Teach assembler to enforce constraints for ARM LDRD destination register operands.

As specified in A8.8.72/A8.8.73/A8.8.74 in the ARM ARM, all variants of the ARM LDRD instruction have the following two constraints:

LDRD<c> <Rt>, <Rt2>, ...

(a) Rt must be even-numbered and not r14
(b) Rt2 must be R(t+1)

If those two constraints are not met the result of executing the instruction will be unpredictable.

Constraint (b) was already enforced, this commit adds support for constraint (a).

Fixes rdar://14479793.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191520 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f1e7cba627ded914a3d40c52ad7d85ac6bf3a837 27-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191505 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6b968eccd79409b0986f394fa597101cf79433d8 27-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Teach assembler to enforce constraint for Thumb2 LDRD (literal/immediate) destination register operands.

LDRD<c> <Rt>, <Rt2>, <label>
LDRD<c> <Rt>, <Rt2>, [<Rn>{, #+/-<imm>}]
LDRD<c> <Rt>, <Rt2>, [<Rn>], #+/-<imm>
LDRD<c> <Rt>, <Rt2>, [<Rn>, #+/-<imm>]!

As specified in A8.8.72/A8.8.73 in the ARM ARM, the T1 encoding has a constraint which enforces that Rt != Rt2.

If this constraint is not met the result of executing the instruction will be unpredictable.

Fixes rdar://14479780.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191504 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
82f36241c2484a72ba11b7ae5af3f485504a7b6e 26-Sep-2013 Weiming Zhao <weimingz@codeaurora.org> Fix PR 17372: Emitting PLD for stack address for ARM Thumb2

t2PLDi12, t2PLDi8, t2PLDs was omitted in Thumb2InstrInfo.
This patch fixes it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191441 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
CTargetDesc/ARMMCTargetDesc.cpp
541681c8485c18b564970c80180a798b2c1663e8 26-Sep-2013 Weiming Zhao <weimingz@codeaurora.org> Fix PR 17368: disable vector mul distribution for square of add/sub for ARM

Generally, it is desirable to distribute (a + b) * c to a*c + b*c for
ARM with VMLx forwarding, where a, b and c are vectors.
However, for (a + b)*(a + b), distribution will result in one extra
instruction.
With distribution:
x = a + b (add)
y = a * x (mul)
z = y + b * y (mla)

Without distribution:
x = a + b (add)
z = x * x (mul)

This patch checks if a mul is a square of add/sub. If yes, skip
distribution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191410 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dfca6eec3171802d6fcb091da01604ef4420fb3b 25-Sep-2013 Andrew Trick <atrick@apple.com> CriticalAntiDepBreaker is no longer needed for armv7 scheduling.

This is being disabled because it is no longer needed for
performance. It is only used by postRAscheduler which is also planned
for removal, and it is implemented with an out-dated view of register
liveness. It consideres aliases instead of register units, assumes
valid kill flags, and assumes implicit uses on partial register
defs. Kill flags and implicit operands are error prone and impossible
to verify. We should gradually eliminate dependence on them in the
postRA phases.

Targets that still benefit from this should move to the MI
scheduler. If that doesn't solve the problem, then we should add a
hook to regalloc to optimize reload placement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191348 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
3e84ad28d4d3ceee25771b1e30315c20b7608c39 22-Sep-2013 Tim Northover <tnorthover@apple.com> ISelDAG: spot chain cycles involving MachineNodes

Previously, the DAGISel function WalkChainUsers was spotting that it
had entered already-selected territory by whether a node was a
MachineNode (amongst other things). Since it's fairly common practice
to insert MachineNodes during ISelLowering, this was not the correct
check.

Looking around, it seems that other nodes get their NodeId set to -1
upon selection, so this makes sure the same thing happens to all
MachineNodes and uses that characteristic to determine whether we
should stop looking for a loop during selection.

This should fix PR15840.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191165 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5cc319a42a914b24b164a94d9a563c728a7a4026 20-Sep-2013 Richard Mitton <richard@codersnotes.com> Added support for generate DWARF .debug_aranges sections automatically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191052 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
5df37dab763ce377095389c4ea1cff88db369954 19-Sep-2013 Amara Emerson <amara.emerson@arm.com> [ARMv8] Add support for the v8 cryptography extensions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190996 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMSubtarget.cpp
RMSubtarget.h
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
CTargetDesc/ARMMCTargetDesc.cpp
9bc7603750926c15648dae0d31a5451861a0d11e 16-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> ARM: Deduplicate ConstantPoolValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190779 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
94ee55d4b39d6506cf4e0f4e4b1c0b7fbbfeaed5 16-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace some unnecessary vector copies with references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190770 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
d9d6e6d59159160299a51fe5010a940db27ae89b 14-Sep-2013 Robert Wilhelm <robert.wilhelm@gmx.net> Fix spelling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190749 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2a9af9f18eac90b0de739b6ceddf6c2209086303 13-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Change hasV8Fp to hasFPARMv8, and other command line options
to be more consistent.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190692 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMBuildAttrs.h
RMISelLowering.cpp
RMInstrInfo.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
8312905790f2250d7c807b4c153be7d64ab22572 13-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Emit the proper .fpu directive.

Patch by Bradley Smith!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190683 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
715d98d657491b3fb8ea0e14643e9801b2f9628c 12-Sep-2013 Joey Gouly <joey.gouly@arm.com> Add an instruction deprecation feature to TableGen.

The 'Deprecated' class allows you to specify a SubtargetFeature that the
instruction is deprecated on.

The 'ComplexDeprecationPredicate' class allows you to define a custom
predicate that is called to check for deprecation.
For example:
ComplexDeprecationPredicate<"MCR">

would mean you would have to define the following function:
bool getMCRDeprecationInfo(MCInst &MI, MCSubtargetInfo &STI,
std::string &Info)

Which returns 'false' for not deprecated, and 'true' for deprecated
and store the warning message in 'Info'.

The MCTargetAsmParser constructor was chaned to take an extra argument of
the MCInstrInfo class, so out-of-tree targets will need to be changed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190598 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
1039e106d095979b3707bb27cfa765cd2c0f3b54 10-Sep-2013 Jim Grosbach <grosbach@apple.com> ARM: Use the PICADD opcode calculated.

We were figuring out whether to use tPICADD or PICADD, then just using
tPICADD unconditionally anyway. Oops.

A testcase from someone familiar enough with ELF to produce one would
be appreciated. The existing PIC testcase correctly verifies the .s
generated, but that doesn't catch this bug, which only showed up in
direct-to-object mode.

http://llvm.org/bugs/show_bug.cgi?id=17180

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190417 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
28823ec4088e216f455278ba42f99f79d0d71969 10-Sep-2013 Logan Chien <tzuhsiang.chien@gmail.com> Remove unused private member in ARMAsmPrinter.cpp.

This commit removes the unused "AttributeItem" from
ObjectAttributeEmitter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190412 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b57d99694b87326a2eea26d76becf67bf5784b49 09-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in Thumb mode.
IT blocks can only be one instruction lonf, and can only contain a subset of
the 16 instructions.

Patch by Artyom Skrobov!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190309 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMFastISel.cpp
RMTargetMachine.cpp
humb2ITBlockPass.cpp
c3cee57f7d20f69a84fd88464ed8cf050e63c7ad 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMCTargetDesc.h
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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMBaseInfo.h
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
RMRegisterInfo.td
humb2InstrInfo.cpp
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
RMInstrThumb2.td
RMRegisterInfo.td
humb2InstrInfo.cpp
1bfa80359edc004bc8a91999de7c8e16708d2206 04-Sep-2013 Jim Grosbach <grosbach@apple.com> ARM: Teach A15 SDOptimizer to properly handle D-reg by-lane.

These instructions, such as vmul.f32, require the second source operand to
be in D0-D15 rather than the full D0-D31. When optimizing, make sure to
account for that by constraining the register class of a replacement virtual
register to be compatible with the virtual register(s) it's replacing.

I've been unsuccessful in creating a non-fragile regression test. This issue
was detected by the LLVM nightly test suite running on an A15 (Bullet).

PR17093: http://llvm.org/bugs/show_bug.cgi?id=17093

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189972 91177308-0d34-0410-b5e6-96231b3b80d8
15SDOptimizer.cpp
3d476a80e9da0136681f69247abfbd6de986c137 04-Sep-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Swift: Only build vldm/vstm with q register aligned register lists

Unaligned vldm/vstm need more uops and therefore are slower in general on swift.

radar://14522102

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189961 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
87b120690b64f41c5b2367653e542ae2cfaa27ba 04-Sep-2013 Silviu Baranga <silviu.baranga@arm.com> Fix scheduling for vldm/vstm instructions that load/store more than 32 bytes on Cortex-A9. This also makes the existing code more compact.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189958 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
b81d7a89129ff1621fa609144b400df3500542d6 03-Sep-2013 Jim Grosbach <grosbach@apple.com> Revert "Revert "ARM: Improve pattern for isel mul of vector by scalar.""

This reverts commit r189648.

Fixes for the previously failing clang-side arm_neon_intrinsics test
cases will be checked in separately.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189841 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
195dd8a1ce38970e3463ee1425647280373b60a7 02-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Default to the Swift CPU when targeting armv7s/thumbv7s.

Test cases adjusted accordingly.

This fixes rdar://14871821.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189766 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
5bed440eb13b4104b64fa9c557954f335aac2aab 02-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> Revert 189756 for now, it doesn't match what rdar://14871821 really wants.

What we really want is to enable Swift by default for *v7s triples (and there already seems to be some logic which attempts to do that). In that case the iOS version doesn't matter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189763 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
024e76b69bc46a20e96eba22f2655d249c495d00 02-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Default to Swift when compiling for iOS 6 or later.

Test cases adjusted accordingly.

This fixes rdar://14871821.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189756 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
5510728d28bb1ee04abc32da3d21b7df12948053 01-Sep-2013 Charles Davis <cdavis5x@gmail.com> Move everything depending on Object/MachOFormat.h over to Support/MachO.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189728 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMachObjectWriter.cpp
5de35bc7303ac36714e9e8ad42987c86cabf9c74 30-Aug-2013 Michael Gottesman <mgottesman@apple.com> Revert "ARM: Improve pattern for isel mul of vector by scalar."

This reverts commit r189619.

The commit was breaking the arm_neon_intrinsic test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189648 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
88acef0b8e93d065aa4de164422ce4c546a7cd5f 30-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Improve pattern for isel mul of vector by scalar.

In addition to recognizing when the multiply's second argument is
coming from an explicit VDUPLANE, also look for a plain scalar
f32 reference and reference it via the corresponding vector
lane.

rdar://14870054

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189619 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
441c557708b5dbe91f1799baf790ad418c23ea70 29-Aug-2013 Cameron Esfahani <dirty@apple.com> Clean up some usage of Triple. The base class has methods for determining if the target is iOS and Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189604 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.h
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
22266c1d4817fc30355a90bb264ede08482bba3a 28-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: Use "dmb sy" for barriers on M-class CPUs

The usual default of "dmb ish" (inner-shareable) isn't even a valid instruction
on v6M or v7M (well, it does the same thing but software is strongly
discouraged from using it) so we should emit a full-system barrier there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189483 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
d3128a4a5a8531a256a224422d7da178d18459eb 28-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: remove unused v(add|sub)hn and vqdml[as]l intrinsics.

Clang is now generating cleaner IR, so this removes the old variants which
should be completely unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189481 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c85bb78714e8e05fb3022148320ea685d7f98d60 28-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: add patterns for vqdmlal with separate vqdmull and vqadds

The vqdmlal and vqdmlls instructions are really just a fused pair consisting of
a vqdmull.sN and a vqadd.sN. This adds patterns to LLVM so that we can switch
Clang's CodeGen over to generating these instead of the special vqdmlal
intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189480 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
dcfa0f7a408e54f15f0237daf2336df852053c6b 27-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add some negative tests for the recent VFP/NEON instructions.

Fix two issues I found while writing these tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189341 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
c59efb626a7a11ec661981e96ba09bba0497b731 27-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: add natural patterns for vaddhl and vsubhl.

These instructions aren't particularly complicated and it's well worth having
patterns for some reasonably useful LLVM IR that will match them. Soon we
should be able to switch Clang over to producing this natural version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189335 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f69a29b23a116a3520f185054290c445abf9aa62 27-Aug-2013 Charles Davis <cdavis5x@gmail.com> Revert "Fix the build broken by r189315." and "Move everything depending on Object/MachOFormat.h over to Support/MachO.h."

This reverts commits r189319 and r189315. r189315 broke some tests on what I
believe are big-endian platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189321 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMachObjectWriter.cpp
9c3dd1b0d1e96ef408b68da3b06c6ebd6c943601 27-Aug-2013 Charles Davis <cdavis5x@gmail.com> Move everything depending on Object/MachOFormat.h over to Support/MachO.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189315 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMachObjectWriter.cpp
383a810b129aa5120d6a7f6e88e141ec4a45f61b 26-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Constrain regclass for TSTri instruction.

Get the register class right for the TST instruction. This keeps the
machine verifier happy, enabling us to turn it on for another test.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189274 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e3dad19e0de5c639886055c09da1f4faaa8556f9 26-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: FastISel verifier error cleanup.

Constant pool and global value reference instructions need more
restricted register classes than plain GPR.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189270 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bb4066123d91c0347cb6333caca527d1a979e703 26-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Fix ELF global base reg intialization.

The create machine code wasn't properly in SSA, which the machine verifier
properly complains about. Now that fast-isel is closer to verifier clean,
errors like this show up more clearly.

Additionally, the Thumb pseudo tPICADD was used for both ARM and Thumb
mode functions, which is obviously wrong. Fix that along the way.

Test case is part of the following commit which will finish making an
additional fast-isel test verifier clean an enable it for the
regression test suite. This commit is separate since its not just
a verifier cleanup, but an actual correctness issue.

rdar://12594152 (for the fast-isel verifier aspects)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189269 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
6cbb39e556c94ef47a8e02e3a4bb87eb91df5aa3 23-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARM] Fix another ARM FastISel -verify-machineinstrs issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189109 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a0b2d332c114571716746ba90c815cfb6f68d4ab 23-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add CodeGen for VMAXNM/VMINNM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189103 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrVFP.td
287c84a0b45cc826b1200f4cf4be3547d2fcd69c 23-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: make sure ARM-mode pseudo-inst requires IsARM

I'd forgotten that "Requires" blocks override rather than add to the
constraints, so my pseudo-instruction was being selected in Thumb mode leading
to nonsense instructions.

rdar://problem/14817358

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189096 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
35eab1db2f21aee9678fe946a5d983a67285e7e4 22-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add CodeGen support for VSEL.

This uses the ARMcmov pattern that Tim cleaned up in r188995.

Thanks to Simon Tatham for his floating point help!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189024 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrVFP.td
5f268555b967fccbfab6e7b69305d74006116927 22-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Fix ARM vcvt encoding when the number of fractional bits is zero.

The instruction to convert between floating point and fixed point representations
takes an immediate operand for the number of fractional bits of the fixed point
value. ARMARM specifies that when that number of bits is zero, the assembler
should encode floating point/integer conversion instructions.

This patch adds the necessary instruction aliases to achieve this behaviour.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189009 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
bad8d4ca599024de8fdc6255a4b73bb294f49239 22-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARM] Constrain some register classes in EmitAtomicBinary64 so that
we pass these tests with -verify-machineinstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189006 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7ddda4704cdb24163591857e8d08614463cec335 22-Aug-2013 Logan Chien <tzuhsiang.chien@gmail.com> Fix ARM FastISel PIC function call.

The function call to external function should come with PLT relocation
type if the PIC relocation model is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189002 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
bccc6f89b7a15abda5593a30c101ae85d1dc3b77 22-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: respect tied 64-bit inlineasm operands when printing

The code for 'Q' and 'R' operand modifiers needs to look through tied
operands to discover the register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188990 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
e2a48fbd9d1ec8bebb5b10cf8770d716f8bdda28 22-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: R9 is not safe to use for tcGPR.

Indirect tail-calls shouldn't use R9 for the branch destination, as
it's not reliably a call-clobbered register.

rdar://14793425

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188967 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
8b262e5ab8cbeb8f6f61d92b20d886675966fe34 20-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Fix fast-isel copy/paste-o.

Update testcase to be more careful about checking register
values. While regexes are general goodness for these sorts of
testcases, in this example, the registers are constrained by
the calling convention, so we can and should check their
explicit values.

rdar://14779513

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188819 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
32c2bfda77d54ca6ad8e08d2de03daa7ae432305 20-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: implement some simple f64 materializations.

Previously we used a const-pool load for virtually all 64-bit floating values.
Actually, we can get quite a few common values (including 0.0, 1.0) via "vmov"
instructions of one stripe or another.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188773 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
57cf3500a3dec411500737b91e1a3970be488337 18-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: make sure we keep inline asm operands tied.

When patching inlineasm nodes to use GPRPair for 64-bit values, we
were dropping the information that two operands were tied, which
effectively broke the live-interval of vregs affected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188643 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
62c7749437a74a4e0cf28edff865bd82f2b9aecc 17-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Properly constrain comparison fastisel register classes.

Ongoing 'make the verifier happy' improvements to ARM fast-isel.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188595 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
785bd598529fa12d0a0f577c4d63c4ab371bc559 17-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Fast-isel register class constrain for extends.

Properly constrain the operand register class for instructions used
in [sz]ext expansion. Update more tests to use the verifier now that
we're getting the register classes correct.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188594 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b49860ef030cb2dba0386278ee8737eecc4e7272 17-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Fix more fast-isel verifier failures.

Teach the generic instruction selection helper functions to constrain
the register classes of their input operands. For non-physical register
references, the generic code needs to be careful not to mess that up
when replacing references to result registers. As the comment indicates
for MachineRegisterInfo::replaceRegWith(), it's important to call
constrainRegClass() first.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188593 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0673379712100110c213a0e7610b73b6c706e83d 17-Aug-2013 Jim Grosbach <grosbach@apple.com> ARM: Clean up fast-isel machine verifier errors.

Lots of machine verifier errors result from using a plain GPR regclass
for incoming argument copies. A more restrictive rGPR class is more
appropriate since it more accurately represents what's happening, plus
it lines up better with isel later on so the verifier is happier.
Reduces the number of ARM fast-isel tests not running with the verifier
enabled by over half.

rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188592 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
671aea08f8dfb09a0191e7b9e266c2884efd3252 16-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> When initializing the PIC global base register on ARM/ELF add pc to fix the address.

This unbreaks PIC with fast isel on ELF targets (PR16717). The output matches
what GCC and SDag do for PIC but may not cover all of the many flavors of PIC
that exist.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188551 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
e97fc44045732de9fc4715241013f9238ec007dc 16-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Add support for Thumb2 literal loads with negative zero offset

Thumb2 literal loads use an offset encoding which allows for
negative zero. This fixes parsing and encoding so that #-0
is correctly processed. The parser represents #-0 as INT32_MIN.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188549 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
14c41370e36068ae25c871d5bd8f99f92bbb7d45 15-Aug-2013 Renato Golin <renato.golin@linaro.org> make arm-use-movt available for all ARM

Before this patch this flag is IOS specific, but is also
useful for bare project like bootloaders / kernels etc,
since movw / movt prevents simple relocation. Therefore
make this flag more commonly available.

note: this patch depends on a similiar rename in clang

Patch by Jeroen Hofstee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188487 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
24adc8f60f0a39e45363eef5392fe1a7e27bd12f 15-Aug-2013 Renato Golin <renato.golin@linaro.org> make arm-reserve-r9 available for all ARM

r9 is defined as a platform-specific register in the ARM EABI.
It can be reserved for a special purpose or be used as a general
purpose register. Add support for reserving r9 for all ARM, while
leaving the IOS usage unchanged.

Patch by Jeroen Hofstee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188485 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
5a0910b34959fa8e0b5a49908f51a15bc3a48069 15-Aug-2013 Craig Topper <craig.topper@gmail.com> Replace getValueType().getSimpleVT() with getSimpleValueType(). Also remove one weird cast from MVT->EVT just to call getSimpleVT().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188441 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dd34dc99fdf66edc52b5fc2ddf8132ebaa134aee 14-Aug-2013 Renato Golin <renato.golin@linaro.org> Let t2LDRBi8 and t2LDRBi12 have same Base Pointer

When determining if two different loads are from the same base address,
this patch allows one load to use a t2LDRi8 address mode and another to
use a t2LDRi12 address mode. The current implementation is very
conservative and this allows the case of differing Thumb2 byte loads to
be considered. Allowing these differing modes instead of forcing the exact
same opcode is useful for situations where one opcodes loads from a base
address+1 and a second opcode loads for a base address-1.

Patch by Daniel Stewart.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188385 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
3f87f2510c0d84fe092ac311a0e25a5e2f7aa3ac 13-Aug-2013 Joey Gouly <joey.gouly@arm.com> ARMv8: SWP and SWPB are obsoleted on ARMv8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188288 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ea8ddd86b1e364a799e57fc0ac468a9c4a8f8bcf 13-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Fix signed overflow in when computing encodings for ADR instructions



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188268 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
fc6434a73d053c3e1d9c79034a267ae1434483ad 09-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> Add a overload to CostTable which allows it to infer the size of the table.

Use it to avoid repeating ourselves too often. Also store MVT::SimpleValueType
in the TTI tables so they can be statically initialized, MVT's constructors
create bloated initialization code otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188095 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
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
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
cee35382331d792ed9354bb7fe0f3e10b09f46a3 08-Aug-2013 Silviu Baranga <silviu.baranga@arm.com> Remove the now redundant FeatureFP16 from the Cortex-A15 feature list. It was made redundant when FeatureVFP4 was added which implies FP16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187985 91177308-0d34-0410-b5e6-96231b3b80d8
RM.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
RMInstrThumb2.td
fab2daa4a1127ecb217abe2b07c1769122b6fee1 08-Aug-2013 Stephen Hines <srhines@google.com> Merge commit '10251753b6897adcd22cc981c0cc42f348c109de' into merge-20130807

Conflicts:
lib/Archive/ArchiveReader.cpp
lib/Support/Unix/PathV2.inc

Change-Id: I29d8c1e321a4a380b6013f00bac6a8e4b593cc4e
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
RMRegisterInfo.td
8775a51d94b277ca6ebe12a1d20bfc2bc5a53960 06-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: implement allowTruncateForTailCall

Now that it's in place, it seems silly not to let ARM make use of the extra
tail call opportunities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187795 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
8e1d64666f493e4994b26a390bec1290a5d94b96 06-Aug-2013 NAKAMURA Takumi <geek4civic@gmail.com> Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen.

Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel.
It races to emit *.inc files simultaneously.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187780 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
527692a59442345afc662488c68d4f9d9e468da9 04-Aug-2013 Benjamin Kramer <benny.kra@googlemail.com> ARMAsmParser: Plug a leak.

Using an object to do the cleanup may look like overkill, but it's safer and nicer than putting deletes everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187696 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e7bc73b8d127e0e17ba6ac7ceb7462134c730f68 02-Aug-2013 Joey Gouly <joey.gouly@arm.com> Add a missing 'return' statement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187671 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
787fdb86a71c5108c231b3bbbb7d3fea3ce4bb8c 02-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add an assembler warning for the deprecated 'setend' instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187666 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
38ffffeebc22ca8ea67456193672109a3adc11b6 02-Aug-2013 Renato Golin <renato.golin@linaro.org> Fixes ARM LNT bot from SLP change in O3

This patch fixes the multiple breakages on ARM test-suite after the SLP
vectorizer was introduced by default on O3. The problem was an illegal
vector type on ARMTTI::getCmpSelInstrCost() <3 x i1> which is not simple.

The guard protects this code from breaking (cause of the problems) but
doesn't fix the issue that is generating the odd vector in the first
place, which also needs to be investigated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187658 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
61fc8d670f1e991804c2ab753e567981e60962cb 01-Aug-2013 Bill Wendling <isanbard@gmail.com> Use function attributes to indicate that we don't want to realign the stack.

Function attributes are the future! So just query whether we want to realign the
stack directly from the function instead of through a random target options
structure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187618 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
f7f22a64df583df9da6bdd74e2f928568276f837 30-Jul-2013 Saleem Abdulrasool <compnerd@compnerd.org> [ARM] check bitwidth in PerformORCombine

When simplifying a (or (and B A) (and C ~A)) to a (VBSL A B C) ensure that the
bitwidth of the second operands to both ands match before comparing the negation
of the values.

Split the check of the value of the second operands to the ands. Move the cast
and variable declaration slightly higher to make it slightly easier to follow.

Bug-Id: 16700
Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187404 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fd79485dfa4fee67467299720efac2d0c21d846c 29-Jul-2013 Silviu Baranga <silviu.baranga@arm.com> Allow generation of vmla.f32 instructions when targeting Cortex-A15. The patch also adds the VFP4 feature to Cortex-A15 and fixes the DontUseFusedMAC predicate so that we can still generate vmla.f32 instructions on non-darwin targets with VFP4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187349 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMTargetMachine.cpp
214de30d9d3739bb384188720aa6c389edcf89dc 27-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Create a constant pool symbol for the GOT in the ARMCGBR the same way we
do in the SDag when lowering references to the GOT: use
ARMConstantPoolSymbol rather than creating a dummy global variable. The
computation of the alignment still feels weird (it uses IR types and
datalayout) but it preserves the exact previous behavior. This change
fixes the memory leak of the global variable detected on the valgrind
leak checking bot.

Thanks to Benjamin Kramer for pointing me at ARMConstantPoolSymbol to
handle this use case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187303 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
6c54b3dfb4ac80418a9e9ee11e5cc1702e9694e6 27-Jul-2013 Chandler Carruth <chandlerc@gmail.com> Fix yet another memory leak found by the vg-leak bot. Folks (including
me) should start watching this bot more as its catching lots of bugs.

The fix here is to not construct the global if we aren't going to need
it. That's cheaper anyways, and globals have highly predictable types in
practice. I've added an assert to catch skew between our manual testing
of the type and the actual type just for paranoia's sake.

Note that this pattern is actually fine in most globals because when you
build a global with a module it automatically is moved to be owned by
that module. But here, we're in isel and don't really want to do that.
The solution of not creating a global is simpler anyways.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187302 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
17f99a991f2e270a34c53854ce80acc30754537b 24-Jul-2013 Quentin Colombet <qcolombet@apple.com> [ARM][ISel] Improve the lowering of vector loads.

When vectors are built from a single value, the ARM lowering issues a
scalar_to_vector node.
This node is then always morphed into a move from the general purpose unit to
the vector unit.
When the value comes from a load, this can be simplified into a vector load to
the right lane.

This patch changes the lowering of insert_vector_elt to expose a vector
friendly pattern in this situation.

This is a step toward fixing <rdar://problem/14170854>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186999 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMAsmBackend.cpp
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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
7b61a701932d850d2777fafda1fea5ec841d893b 20-Jul-2013 Lang Hames <lhames@gmail.com> Refactor AnalyzeBranch on ARM. The previous version did not always analyze
indirect branches correctly. Under some circumstances, this led to the deletion
of basic blocks that were the destination of indirect branches. In that case it
left indirect branches to nowhere in the code.

This patch replaces, and is more general than either of the previous fixes for
indirect-branch-analysis issues, r181161 and r186461.

For other branches (not indirect) this refactor should have *almost* identical
behavior to the previous version. There are some corner cases where this
refactor is able to analyze blocks that the previous version could not (e.g.
this necessitated the update to thumb2-ifcvt2.ll).

<rdar://problem/14464830>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186735 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
55dcefbc4006204c0d2816d5a7c921517c53383c 19-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add a line that got missed off somehow. Sorry about that!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186692 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6fec715a1a662ce3b560f85c710875cfeeb1fb98 19-Jul-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Implement the NEON instructions VRINT{N, X, A, Z, M, P}.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186688 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
4e377d9306f471025415beb7639e0a3e776efa27 18-Jul-2013 Joey Gouly <joey.gouly@arm.com> Change 'n' to 'N' to keep consistent with other instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186576 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
59b3300664d062bf04159eacaeb44d6c729e6a8c 18-Jul-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add NEON instructions VCVT{A, N, P, M}.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186574 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
6a3d933e1645d34984f4c7c9e2e4e46d0d15e1b3 18-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add Thumb tests for the ARMv8 FP instructions that I recently added.

Also, fix the namespace for two instructions that I missed previously.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186572 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
d46bb05e1ae484c491ea85527e45da86e78be658 18-Jul-2013 Joey Gouly <joey.gouly@arm.com> Remove the extra leading 0 from VMAXNMND.
The N3VDIntnp pattern takes bits<5> and I gave it 6 bits.

Thanks to Jiangning Liu for spotting it!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186568 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
19c14abf1c4ccebfa7d07bdd6ea8462a15c0b749 17-Jul-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add support for the NEON instructions vmaxnm/vminnm.

This adds a new class for non-predicable NEON instructions and a
new DecoderNamespace for v8 NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186504 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
d055c595443fefe64b33d28d0b2556ace04084ad 17-Jul-2013 JF Bastien <jfb@google.com> Fix ARMFastISel::ARMEmitIntExt shift emission

My patch 'r183551 - ARM FastISel integer sext/zext improvements' was incorrect when emitting ARM register-immediate ASR, LSL, LSR instructions: they are pseudo-instructions in ARMInstrInfo.td and I should have used MOVsi instead.

This is not an issue when code is generated through a .s file, but is an issue when generated straight to a .o (-filetype=obj).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186489 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
82d4215f64dc941f21bbae7ec781367d343387b8 17-Jul-2013 Lang Hames <lhames@gmail.com> Related to r181161 - Indirect branches may not be the last branch in a basic
block. Blocks that have an indirect branch terminator, even if it's not the
last terminator, should still be treated as unanalyzable.

<rdar://problem/14437274>

Reducing a useful regression test case is proving difficult - I hope to have
one soon.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186461 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
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
RMInstrThumb2.td
ad9a0d27d36f18dff2b2d37dd13b11ed2d07688b 16-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: allow printing of ARM atomic DAG nodes.

We'd forgotten to provide string representations for the special ARMISD atomic
nodes; this adds them in. No effect on CodeGen, just makes the output of
"-view-whatever-dags" slightly more readable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186406 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
103ba845f09252d90a05109af7174f54bf412daf 16-Jul-2013 Renato Golin <renato.golin@linaro.org> ARM EABI divmod support

This patch enables calls to __aeabi_idivmod when in EABI mode,
by using the remainder value returned on registers (R1),
enabled by the ARM triple "none-eabi". Note that Darwin and
GNUEABI triples will continue lowering on GNU style, that is,
using the stack for the remainder.

Still need to add SREM/UREM support fix for 64-bit lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186390 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.h
b9df53a40b22c74ce3f3a7b4a7c0676a38cf5e73 15-Jul-2013 Craig Topper <craig.topper@gmail.com> Use llvm::array_lengthof to replace sizeof(array)/sizeof(array[0]).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186301 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a0ec3f9b7b826b9b40b80199923b664bad808cce 14-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMLoadStoreOptimizer.cpp
1b6f5a29ab62fd3e763983f31200b4cc69fa752b 13-Jul-2013 JF Bastien <jfb@google.com> Fix ARM paired GPR COPY lowering

ARM paired GPR COPY was being lowered to two MOVr without CC. This
patch puts the CC back.

My test is a reduction of the case where I encountered the issue,
64-bit atomics use paired GPRs.

The issue only occurs with selectionDAG, FastISel doesn't encounter it
so I didn't bother calling it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186226 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
adde9da01c78dd837a4e32217c9445c2c1aadb27 13-Jul-2013 Eric Christopher <echristo@gmail.com> Remove extraneous braces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186212 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4a1c764264a8908aa041acf12f68cd8bcc2037b1 12-Jul-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Add cost for gather/scather

Fixes a 35% degradation compared to unvectorized code in
MiBench/automotive-susan and an equally serious regression on a private
image processing benchmark.

radar://14351991

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186188 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
c0a11edba6ea46c782672ab3fb4e4ab3dc267a22 12-Jul-2013 Arnold Schwaighofer <aschwaighofer@apple.com> TargetTransformInfo: address calculation parameter for gather/scather

Address calculation for gather/scather in vectorized code can incur a
significant cost making vectorization unbeneficial. Add infrastructure to add
cost.
Tests and cost model for targets will be in follow-up commits.

radar://14351991

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186187 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
4d6d0d0d821489e866c4709126e5fa97e12735d6 11-Jul-2013 Stephen Hines <srhines@google.com> Allow global-merge option to be accessed externally.

Change-Id: I39d1c5e05b5f1bbbf76f7491f7dc8cfa70a83611
RMTargetMachine.cpp
5fa2ba2769d31815f54ebf1af42f868f1486e4d0 10-Jul-2013 Craig Topper <craig.topper@gmail.com> Simplify code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186013 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ea870a53a5a0c644e5b15af5ae59d8a4378a4d2a 10-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185995 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
9ddfe5ea6f46448cf01e114c971e6bd7ac6ad06c 10-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Explicitly define ARMISelLowering::isFMAFasterThanFMulAndFAdd. No functionality change.

Currently ARM is the only backend that supports FMA instructions (for at least some subtargets) but does not implement this virtual, so FMAs are never generated except from explicit fma intrinsic calls. Apparently this is due to the fact that it supports both fused (one rounding step) and unfused (two rounding step) multiply + add instructions. This patch clarifies that this the case without changing behavior by implementing the virtual function to simply return false, as the default TargetLoweringBase version does.

It is possible that some cpus perform the fused version faster than the unfused version and vice-versa, so the function implementation should be revisited if hard data is found.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185994 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
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
RMInstrThumb2.td
12f45c3782c0d01bcf9973bbc23dba2b17ce54cb 09-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add MC assembly/disassembly support for VRINT{A, N, P, M} to V8FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185929 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
8dc741d29f9c9beff8a9f26ff23b307b9df4f8fd 09-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add MC assembly/disassembly support for VRINT{Z, X, R} to V8FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185926 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
9fb5a6588becc92be1d7cf503d2947b170be3c31 09-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add MC assembly/disassembly support for VCVT{A, N, P, M} to V8FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185922 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
881b0b5c77ec3f6849e32b7763b6c75057b81501 08-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add a comment to this change, requested by Eric Christopher.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185853 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
dc2d418dd29ad9396aea06f2b72c9a7d29b30940 08-Jul-2013 Jim Grosbach <grosbach@apple.com> ARM: Improve codegen for generic vselect.

Fall back to by-element insert rather than building it up on the stack.

rdar://14351991

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185846 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2a9683289b78a2533b261e1b341f9ea9724465a0 06-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add MC support for the v8fp instructions: vmaxnm and vminnm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185767 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
fe3b2995aa38b25bada9fa2e850590b3988668b5 05-Jul-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM: Add a pack pattern for matching arithmetic shift right

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185714 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ffd3bb8f0d875f4aae3097660f973b1e7512ee05 05-Jul-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM: Fix incorrect pack pattern

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.

radar://14338767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185712 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
00d9fe2de7f0b8f9d1ea19ae30cc78b1a1e1fb92 05-Jul-2013 Joey Gouly <joey.gouly@arm.com> PR16490: fix a crash in ARMDAGToDAGISel::SelectInlineAsm.

In the SelectionDAG immediate operands to inline asm are constructed as
two separate operands. The first is a constant of value InlineAsm::Kind_Imm
and the second is a constant with the value of the immediate.

In ARMDAGToDAGISel::SelectInlineAsm, if we reach an operand of Kind_Imm we
should skip over the next operand too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185688 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1e9ddc229f3d837a79eed1d7ac43743db148f8d1 04-Jul-2013 Joey Gouly <joey.gouly@arm.com> Remove an unneeded call to 'UpdateThumbVFPPredicate', spotted by Amaury.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185651 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
4ea250524f77a67102118747dad6ee69f9f3b3aa 04-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add support for MC assembling and disassembling of vsel{ge, gt, eq, vs} instructions.

This adds a new decoder table/namespace 'VFPV8', as these instructions have their
top 4 bits as 0b1111, while other Thumb instructions have 0b1110.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185642 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
f349a6e9e6ee0b589c403e0c5785266da121d05c 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes.

These exception-related opcodes are not used any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185625 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
929d9ef111cc0053e245d04464c5ba9fba7727b2 04-Jul-2013 Joey Gouly <joey.gouly@arm.com> Add a V8FP instruction 'vcvt{b,t}' to convert between half and double precision.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185620 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
6227d5c690504c7ada5780c00a635b282c46e275 04-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185606 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
c93822901aef17aaf8bb1303f27b47025fd1d582 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r185595-185596 which broke buildbots.

Revert "Simplify landing pad lowering."
Revert "Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185600 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
62204220e1dc2dc21256adf765728ae257b33eac 04-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes.

These exception-related opcodes are not used any longer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185596 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
62da588a2eb70166e1b6cc332d8084f03117dc12 04-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Have ARMBaseRegisterInfo::getCallPreservedMask return the 'correct' mask for the GHC calling convention.

This is purely academic because GHC calls are always tail calls so the register mask will never be used; however, this change makes the code clearer and brings the ARM implementation of the GHC calling convention in line with the X86 implementation. Also, it might save someone else some time trying to figuring out what is happening...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185592 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCallingConv.td
8e2e5ff0240dfb90c6dbc93e7fc441f71bfde400 03-Jul-2013 Quentin Colombet <qcolombet@apple.com> [ARM] Improve the instruction selection of vector loads.

In the ARM back-end, build_vector nodes are lowered to a target specific
build_vector that uses floating point type.
This works well, unless the inserted bitcasts survive until instruction
selection. In that case, they incur moves between integer unit and floating
point unit that may result in inefficient code.

In other words, this conversion may introduce artificial dependencies when the
code leading to the build vector cannot be completed with a floating point type.

In particular, this happens when loads are not aligned.

Before this patch, in that case, the compiler generates general purpose loads
and creates the floating point vector from them, instead of directly using the
vector unit.

The patch uses a vector friendly sequence of code when the inserted bitcasts to
floating point survived DAGCombine.

This is done by a target specific DAGCombine that changes the target specific
build_vector into a sequence of insert_vector_elt that get rid of the bitcasts.

<rdar://problem/14170854>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185587 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
79c163d6ddeb84ea1743eca0644688951bfc5a97 03-Jul-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Prevent ARMAsmParser::shouldOmitCCOutOperand() from misidentifying certain Thumb2 add immediate T3 encodings.

Before the fix Thumb2 instructions of type "add rD, rN, #imm" (T3 encoding, see ARM ARM A8.8.4) with rD and rN both being low registers (r0-r7) were classified as having the T4 encoding.

The T4 encoding doesn't have a cc_out operand so for above instructions the operand gets erroneously removed, corrupting the token stream and leading to parse errors later in the process.

This bug prevented "add r1, r7, #0xcbcbcbcb" from being assembled correctly.

Fixes <rdar://problem/14224440>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185575 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
365ef0b197d7c841f8e501da64296df65be4ca23 03-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185540 91177308-0d34-0410-b5e6-96231b3b80d8
15SDOptimizer.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
a10c01a6c62792be825c562314a646437b21bfec 03-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: relax the atomic release barrier to "dmb ishst" on Swift

Swift cores implement store barriers that are stronger than the ARM
specification but weaker than general barriers. They are, in fact, just about
enough to provide the ordering needed for atomic operations with release
semantics.

This patch makes use of that quirk.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185527 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a3863ea2dacafc925a8272ebf9884fc64bef686c 02-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove address spaces from MC.

This is dead code since PIC16 was removed in 2010. The result was an odd mix,
where some parts would carefully pass it along and others would assert it was
zero (most of the object streamer for example).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185436 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
0a39e264330c5f6eb9e5e9e60d276613985e178d 02-Jul-2013 Logan Chien <tzuhsiang.chien@gmail.com> Fix ARM EHABI compact model 1 and 2 without handlerdata.

According to ARM EHABI section 9.2, if the
__aeabi_unwind_cpp_pr1() or __aeabi_unwind_cpp_pr2() is
used, then the handler data must be emitted after the unwind
opcodes. The handler data consists of several words, and
should be terminated by zero.

In case that the .handlerdata directive is not specified by
the programmer, we should emit zero to terminate the handler
data.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185422 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
e29e2afc738348c74966ed81b3568779247c9fbd 01-Jul-2013 Chad Rosier <mcrosier@apple.com> [ARMAsmParser] Sort the ARM register lists based on the encoding value, not the
tablegen enum values. This should be the last fix due to fallout from r185094.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185379 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
40d0492cdea1023463a9902ee81b3c5251204039 01-Jul-2013 Tim Northover <tnorthover@apple.com> Revert r185339 (ARM: relax the atomic release barrier to "dmb ishst")

Turns out I'd misread the architecture reference manual and thought
that was a load/store-store barrier, when it's not.

Thanks for pointing it out Eli!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185356 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d59fc0af0a3ebd13c7004511e64e3233dfe87b17 01-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: relax the atomic release barrier to "dmb ishst"

I believe the full "dmb ish" barrier is not required to guarantee release
semantics for atomic operations. The weaker "dmb ishst" prevents previous
operations being reordered with a store executed afterwards, which is enough.

A key point to note (fortunately already correct) is that this barrier alone is
*insufficient* for sequential consistency, no matter how liberally placed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185339 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
75f29256f3587b19740398adb9678b6ba376912f 28-Jun-2013 David Blaikie <dblaikie@gmail.com> Remove unused member

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185219 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
f52578c08c71dc356428c25b0ba8759fd7ee2c66 28-Jun-2013 Eric Christopher <echristo@gmail.com> Remove unused variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185180 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
10ddc4d7f232507933c266180d0052f12e65c4ab 28-Jun-2013 Weiming Zhao <weimingz@codeaurora.org> Bug 13662: Enable GPRPair for all i64 operands of inline asm on ARM

This patch assigns paired GPRs for inline asm with
64-bit data on ARM. It's enabled for both ARM and Thumb to support modifiers
like %H, %Q, %R.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185169 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
bcd8e7ad4d1dd486675e774778b3409464380f62 28-Jun-2013 Tim Northover <tnorthover@apple.com> ARM: ensure fixed-point conversions have sane types

We were generating intrinsics for NEON fixed-point conversions that didn't
exist (e.g. float -> i16). There are two cases to consider:
+ iN is smaller than float. In this case we can do the conversion but need an
extend or truncate as well.
+ iN is larger than float. In this case using the NEON conversion would be
incorrect so we don't perform any combining.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185158 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a744d41a3f8af25938e12617abe2a8d32f6eabf6 28-Jun-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Fix pseudo-instructions for SRS (Store Return State).

The mapping between SRS pseudo-instructions and SRS native instructions was incorrect, the correct mapping is:

srsfa -> srsib
srsea -> srsia
srsfd -> srsdb
srsed -> srsda

This fixes <rdar://problem/14214734>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185155 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
31d2f08f8893f38d2d7293195f3707edfefbeeb6 27-Jun-2013 Joey Gouly <joey.gouly@arm.com> Add a Subtarget feature 'v8fp' to the ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185073 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMBuildAttrs.h
RMSubtarget.cpp
RMSubtarget.h
165a7a925d73286abfc826b3d6339843b02c09e0 27-Jun-2013 Stephen Lin <stephenwlin@gmail.com> Clarify and doxygen-ify comments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185030 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
6b97ebe9a32342207b24a5f73ebbf3070ec8d189 26-Jun-2013 Stephen Lin <stephenwlin@gmail.com> ARM: Proactively ensure that the LowerCallResult hack for 'this'-returns is not used for incompatible calling conventions.

(Currently, ARM 'this'-returns are handled in the standard calling convention case by treating R0 as preserved and doing some extra magic in LowerCallResult; this may not apply to calling conventions added in the future so this patch provides and documents an interface for indicating such)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185024 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMISelLowering.cpp
8b9962d514c1834c17254e53b169bf618079562c 26-Jun-2013 Stephen Lin <stephenwlin@gmail.com> Minor formatting fix to ARMBaseRegisterInfo::getCalleeSavedRegs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185016 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
849eedce9921eb8f285cd0df0ad69ee5133459d1 26-Jun-2013 Joey Gouly <joey.gouly@arm.com> Add a subtarget feature 'v8' to the ARM backend.
This allows for targeting the ARMv8 AArch32 variant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184967 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMBuildAttrs.h
RMInstrInfo.td
RMSubtarget.cpp
RMSubtarget.h
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
fce567aec90610e81e0b23968d8935ecf5b04505 26-Jun-2013 Joey Gouly <joey.gouly@arm.com> Remove the 'generic' CPU from the ARM eabi attributes printer.
Make v4 the default ARM architecture attribute, to match CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184962 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6e0857e0b6b241e8b698417659a5821f15290a63 26-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: operands should be explicit when disassembled

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184943 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
ebc3938ae717d7352de800344c3ad5a1bceb74e5 24-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: check predicate bits for thumb instructions

When encoded to thumb, VFP instruction and VMOV/VDUP between scalar and
core registers, must have their predicate bit to 0b1110.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184707 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
07c3e159d8fffc8b16bcd52cc395a78007c62910 24-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: rGPR is meant to be unpredictable, not undefined

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184706 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
4ee72398a15cd7b8e217bb3d34a4e9e0e72caca1 24-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix thumb1 nop decoding

In thumb1, NOP is a pseudo-instruction equivalent to mov r8, r8.
However the disassembler should not use this alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184703 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
ff08da15cf3d0412ee9cc325fc5a720bcad178f2 24-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix IT decoding

mask == 0 -> UNPRED

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184702 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
5b3fca50a08865f0db55fc92ad1c037a04e12177 22-Jun-2013 Chad Rosier <mcrosier@apple.com> The getRegForInlineAsmConstraint function should only accept MVT value types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184642 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
1948910e3186d31bc0d213ecd0d7e87bb2c2760d 22-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: Don't lose unreferenced non-trivial by-value parameters

A FastISel optimization was causing us to emit no information for such
parameters & when they go missing we end up emitting a different
function type. By avoiding that shortcut we not only get types correct
(very important) but also location information (handy) - even if it's
only live at the start of a function & may be clobbered later.

Reviewed/discussion by Evan Cheng & Dan Gohman.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184604 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2b7cdf09a142b7f3e9a0ec8c7044eaf89bc59caa 21-Jun-2013 Quentin Colombet <qcolombet@apple.com> ARM: Remove a (false) dependency on the memoryoperand's value as we do not use
it at the moment.
This allows to form more paired loads even when stack coloring pass destroys the
memoryoperand's value.

<rdar://problem/13978317>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184492 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
4cbbbf49b69646ff990203ef3feae6a2726b8753 20-Jun-2013 Joey Gouly <joey.gouly@arm.com> This reverts r155000.
The cdp2 instruction should have the same restrictions as cdp on the
co-processor registers.

VFP instructions on v8/AArch32 share the same encoding space as cdp2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184445 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0159ae4295720c5ce8fc770ddb5fed67e90b8d3a 19-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: PR14763/r183329 correct the location of indirect parameters

We had been papering over a problem with location info for non-trivial
types passed by value by emitting their type as references (this caused
the debugger to interpret the location information correctly, but broke
the type of the function). r183329 corrected the type information but
lead to the debugger interpreting the pointer parameter as the value -
the debug info describing the location needed an extra dereference.

Use a new flag in DIVariable to add the extra indirection (either by
promoting an existing DW_OP_reg (parameter passed in a register) to
DW_OP_breg + 0 or by adding DW_OP_deref to an existing DW_OP_breg + n
(parameter passed on the stack).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184368 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
ba54bca472a15d0657e1b88776f7069042b60b4e 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184360 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
f9fd58a44bbc7d9371ce39eb20eec16b0f1f7395 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184352 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
ea44281d5da5096de50ce1cb358ff0c6f20e1a2a 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184349 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
a95e3091eb9ba5010f6c5f6f51958b01ca3a85f6 18-Jun-2013 Jim Grosbach <grosbach@apple.com> ARM: Add optional datatype suffix to NEON mvn asm syntax.

rdar://14194152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
41502e1af77443c31138cee309bd89898f23e33a 18-Jun-2013 Michael Gottesman <mgottesman@apple.com> [ARMTargetLowering] ARMISD::{SUB,ADD}{C,E} second result is a boolean implying that upper bits are always 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184231 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8493edfb4b61e5c63669fc19a55b640e1ad7aee1 18-Jun-2013 Michael Gottesman <mgottesman@apple.com> Converted an overly aggressive assert to a conditional check in AddCombineTo64bitMLAL.

Said assert assumes that ADDC will always have a glue node as its second
argument and is checked before we even know that we are actually performing the
relevant MLAL optimization. This is incorrect since on ARM we *CAN* codegen ADDC
with a use list based second argument. Thus to have both effects, I converted
the assert to a conditional check which if it fails we do not perform the
optimization.

In terms of tests I can not produce an ADDC from the IR level until I get in my
multiprecision optimization patch which is forthcoming. The tests for said patch
would cause this assert to fail implying that said tests will provide the
relevant tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184230 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bf811d602d1d81b93846c6cbbd1cec85f2f153cb 18-Jun-2013 Kevin Enderby <enderby@apple.com> Change the arm assembler to support this from the v7c spec:
"When assembling to the ARM instruction set, the .N qualifier produces
an assembler error and the .W qualifier has no effect."

In the pre-matcher handler in the asm parser the ".w" (wide) qualifier
when in ARM mode is now discarded. And an error message is now
produced when the ".n" (narrow) qualifier is used in ARM mode.

Test cases for these were added.

rdar://14064574


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184224 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
13769fa725b03a937335cf04d2b9cc1ca426060f 18-Jun-2013 David Blaikie <dblaikie@gmail.com> Reduce indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184213 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
cea0032f73a56a62b692b25ca4084850cd51763b 18-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: thumb stores cannot use PC as dest register

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184179 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
99cb622041a0839c7dfcf0263c5102a305a0fdb5 18-Jun-2013 Bill Wendling <isanbard@gmail.com> Use pointers to the MCAsmInfo and MCRegInfo.

Someone may want to do something crazy, like replace these objects if they
change or something.

No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184175 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
0187e7a9ba5c50b4559e0c2e0afceb6d5cd32190 16-Jun-2013 David Blaikie <dblaikie@gmail.com> DebugInfo: remove target-specific Frame Index handling for DBG_VALUE MachineInstrs

Frame index handling is now target-agnostic, so delete the target hooks
for creation & asm printing of target-specific addressing in DBG_VALUEs
and any related functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184067 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
6d9dbd5526e3161db884fc4fe99c278bb59ccc19 16-Jun-2013 David Blaikie <dblaikie@gmail.com> Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions

Rather than using the full power of target-specific addressing modes in
DBG_VALUEs with Frame Indicies, simply use Frame Index + Offset. This
reduces the complexity of debug info handling down to two
representations of values (reg+offset and frame index+offset) rather
than three or four.

Ideally we could ensure that frame indicies had been eliminated by the
time we reached an assembly or dwarf generation, but I haven't spent the
time to figure out where the FIs are leaking through into that & whether
there's a good place to convert them. Some FI+offset=>reg+offset
conversion is done (see PrologEpilogInserter, for example) which is
necessary for some SelectionDAG assumptions about registers, I believe,
but it might be possible to make this a more thorough conversion &
ensure there are no remaining FIs no matter how instruction selection
is performed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184066 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a5ce5f36d3a1e312304e8312ca64a1342f5f55a6 15-Jun-2013 Andrew Trick <atrick@apple.com> Update machine models. Specify buffer sizes for OOO processors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184033 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
RMScheduleSwift.td
b86a0cdb674549d8493043331cecd9cbf53b80da 15-Jun-2013 Andrew Trick <atrick@apple.com> Machine Model: Add MicroOpBufferSize and resource BufferSize.

Replace the ill-defined MinLatency and ILPWindow properties with
with straightforward buffer sizes:
MCSchedMode::MicroOpBufferSize
MCProcResourceDesc::BufferSize

These can be used to more precisely model instruction execution if desired.

Disabled some misched tests temporarily. They'll be reenabled in a few commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184032 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMScheduleA9.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
RMInstrThumb2.td
fe532ad6d6643219669056dc268d63fb29a8d1ee 14-Jun-2013 JF Bastien <jfb@google.com> Enable FastISel on ARM for Linux and NaCl, not MCJIT

This is a resubmit of r182877, which was reverted because it broken
MCJIT tests on ARM. The patch leaves MCJIT on ARM as it was before: only
enabled for iOS. I've CC'ed people from the original review and revert.

FastISel was only enabled for iOS ARM and Thumb2, this patch enables it
for ARM (not Thumb2) on Linux and NaCl, but not MCJIT.

Thumb2 support needs a bit more work, mainly around register class
restrictions.

The patch punts to SelectionDAG when doing TLS relocation on non-Darwin
targets. I will fix this and other FastISel-to-SelectionDAG failures in
a separate patch.

The patch also forces FastISel to retain frame pointers: iOS always
keeps them for backtracking (so emitted code won't change because of
this), but Linux was getting much worse code that was incorrect when
using big frames (such as test-suite's lencod). I'll also fix this in a
later patch, it will probably require a peephole so that FastISel
doesn't rematerialize frame pointers back-to-back.

The test changes are straightforward, similar to:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130513/174279.html
They also add a vararg test that got dropped in that change.

I ran all of lnt test-suite on A15 hardware with --optimize-option=-O0
and all the tests pass. All the tests also pass on x86 make check-all. I
also re-ran the check-all tests that failed on ARM, and they all seem to
pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183966 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9151f6474c0c3c696e75a12a605c48f54da4665f 12-Jun-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r183849.

s/LLVM_HOSTTRIPLE/LLVM_HOST_TRIPLE

Add #include<ctype.h> to LinkModules.cpp for isdigit().

Add missing libLLVMObject to llc dependencies.

Android.mk updates:
Remove Linker.cpp
Remove JITDwarfEmitter.cpp
Remove MipsDirectObjLower.cpp
Add MCExternalSymbolizer.cpp
Add MCRelocationInfo.cpp
Add MCSymbolizer.cpp
Add ARMMachORelocationInfo.cpp
Add Mips16HardFloat.cpp
Add MipsOptimizeMathLibCalls.cpp
Add X86ELFRelocationInfo.cpp
Add X86MachORelocationInfo.cpp

Change-Id: I3f3dbc2b62e89ef9e303f5456c6a99f0937f6981
CTargetDesc/Android.mk
8117ac555d06b23f61ddd06aa54d3dfa3e5b8e56 13-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix B decoding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183914 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1290ce00a372f10fa1667d3566477f86ede04c73 13-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix t2am_imm8_offset operand printing for imm=#-0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183913 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
1878f9a7874b1ff569d745c0269f49d3daf7203d 12-Jun-2013 Stephen Hines <srhines@google.com> Merge commit '100fbdd06be7590b23c4707a98cd605bdb519498' into merge_20130612
5ab770417bd230d2e319490261d300c50e932b71 12-Jun-2013 JF Bastien <jfb@google.com> ARM FastISel fix sext/zext fold

Sign- and zero-extension folding was slightly incorrect because it wasn't checking that the shift on extensions was zero. Further, I recently added AND rd, rn, #255 as a form of 8-bit zero extension, and failed to add the folding code for it.

This patch fixes both issues.

This patch fixes both, and the test should remain the same:
test/CodeGen/ARM/fast-isel-fold.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183794 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6c921a55f4d5fc51a127fcc673ac1c9b46273899 11-Jun-2013 NAKAMURA Takumi <geek4civic@gmail.com> Rework r183728, suppress assert(0) for now. Its behavior depends on assertions on win32 hosts.

FIXME: Introduce yet another checker but assert(0).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183736 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
55ab7315d04ce4f25a15e5cd50f6a23d950a00cf 11-Jun-2013 Mihai Popa <mihail.popa@gmail.com> It adds support for negative zero offsets for loads and stores.
Negative zero is returned by the primary expression parser as INT32_MIN, so all that the method needs to do is to accept this value.
Behavior already present for Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183734 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
16ad92ad3cd0cbbaa4d0524d9f201dd5dbefa15a 11-Jun-2013 Mihai Popa <mihail.popa@gmail.com> This patch adds support for FPINST/FPINST2 as operands to vmsr/vmrs. These are optional registers that may be supported some ARM implementations to aid with resolution of floating point exceptions. The manual pages for vmsr and vmrs do not detail their use. Encodings and other information can be found in ARM Architecture Reference Manual section F, chapter 6, paragraph 3.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183733 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMRegisterInfo.td
aa8003712e8b28bc4f263aeb79d8851146273a05 11-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: Enforce decoding rules for VLDn instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183731 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
3862709058ecfe809c9d4b32e3bff0efe8ebe646 11-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: Fix STREX/LDREX reecoding

The decoded MCInst wasn't reencoded as the same instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183729 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
c139672407b6ad8d2929fd0c52591216fd32b4b6 11-Jun-2013 NAKAMURA Takumi <geek4civic@gmail.com> Tweak a couple of tests on win32 hosts with +Asserts.

- Don't use assert(0), or tests may pass or fail according to assertions.
- For now, The tests are marked as XFAIL for win32 hosts.

FIXME: Could we avoid XFAIL to specify triple in the RUN lines?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183728 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
6915854dd27bfedd2bc261cb19b148557670b98c 11-Jun-2013 NAKAMURA Takumi <geek4civic@gmail.com> ARMAsmBackend.cpp: Use Triple::isOSBinFormatCOFF() instead of isOSWindows().

FYI, isOSBinFormatCOFF() is as same as isOSWindows(), on trunk.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183727 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
2266ef3f5e7608d0ae491acd77b755b171cc6475 11-Jun-2013 NAKAMURA Takumi <geek4civic@gmail.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183726 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
9bdd78501484a1add2d8a757fd29960dd9fc9de7 11-Jun-2013 Tim Northover <tnorthover@apple.com> ARM: diagnose ARM/Thumb assembly switches on CPUs only supporting one.

Some ARM CPUs only support ARM mode (ancient v4 ones, for example) and some
only support Thumb mode (M-class ones currently). This makes sure such CPUs
default to the correct mode and makes the AsmParser diagnose an attempt to
switch modes incorrectly.

rdar://14024354

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183710 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
6c1bd2919ee76ef4953136f0b73192fbef3a69ab 10-Jun-2013 Aaron Ballman <aaron@aaronballman.com> Silencing an MSVC warning about comparing signed and unsigned values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183682 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
38946caa431a3e790f82600047db10a4ec55743c 10-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> Fix misleading comments in ARMAsmParser

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183657 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMBaseInfo.h
18cba562c8016f8095643b5dd8c4b34b294b62dd 09-Jun-2013 Logan Chien <tzuhsiang.chien@gmail.com> Fix ARM unwind opcode assembler in several cases.

Changes to ARM unwind opcode assembler:

* Fix multiple .save or .vsave directives. Besides, the
order is preserved now.

* For the directives which will generate multiple opcodes,
such as ".save {r0-r11}", the order of the unwind opcode
is fixed now, i.e. the registers with less encoding value
are popped first.

* Fix the $sp offset calculation. Now, we can use the
.setfp, .pad, .save, and .vsave directives at any order.

Changes to test cases:

* Add test cases to check the order of multiple opcodes
for the .save directive.

* Fix the incorrect $sp offset in the test case. The
stack pointer offset specified in the test case was
incorrect. (Changed test cases: ehabi-mc-section.ll and
ehabi-mc.ll)

* The opcode to restore $sp are slightly reordered. The
behavior are not changed, and the new output is same
as the output of GNU as. (Changed test cases:
eh-directive-pad.s and eh-directive-setfp.s)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183627 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMUnwindOpAsm.cpp
CTargetDesc/ARMUnwindOpAsm.h
1fe907e7f2de32df894373e24a10c8f54534d770 09-Jun-2013 JF Bastien <jfb@google.com> ARM FastISel fix load register classes

The register classes when emitting loads weren't quite restricting enough, leading to MI verification failure on the result register.

These are new failures that weren't there the first time I tried enabling ARM FastISel for new targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183624 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9eefea009fb559cf441254f7022a2824386852c6 08-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix VMOVvnf32 decoding when ambiguous with VCVT

Enforce Table A7-15 (op=1, cmode=0b111) -> UNDEF

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183612 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
ae50ddb2aeaec7dd91ef8db3918688c104a6baed 08-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: enforce SRS decoding constraints

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183611 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
46e136c952e0242308db2682ba2ec4020cdcd006 08-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix CPS decoding when ambiguous with QADD

Handle the case when the disassembler table can't tell
the difference between some encodings of QADD and CPS.

Add some necessary safe guards in CPS decoding as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183610 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
c64835b0c57913b11abd648b76913390e62af8d6 08-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix VCVT decoding

UNPRED was reported instead of UNDEF

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183608 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
2c69e900644535d58292756c0a114c88ce51824c 08-Jun-2013 JF Bastien <jfb@google.com> Fix unused variable warning from my previous patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183601 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8fc760cbe8d42e788f29b4a21537bc5e25d5ffa3 07-Jun-2013 JF Bastien <jfb@google.com> ARM FastISel integer sext/zext improvements

My recent ARM FastISel patch exposed this bug:
http://llvm.org/bugs/show_bug.cgi?id=16178
The root cause is that it can't select integer sext/zext pre-ARMv6 and
asserts out.

The current integer sext/zext code doesn't handle other cases gracefully
either, so this patch makes it handle all sext and zext from i1/i8/i16
to i8/i16/i32, with and without ARMv6, both in Thumb and ARM mode. This
should fix the bug as well as make FastISel faster because it bails to
SelectionDAG less often. See fastisel-ext.patch for this.

fastisel-ext-tests.patch changes current tests to always use reg-imm AND
for 8-bit zext instead of UXTB. This simplifies code since it is
supported on ARMv4t and later, and at least on A15 both should perform
exactly the same (both have exec 1 uop 1, type I).

2013-05-31-char-shift-crash.ll is a bitcode version of the above bug
16178 repro.

fast-isel-ext.ll tests all sext/zext combinations that ARM FastISel
should now handle.

Note that my ARM FastISel enabling patch was reverted due to a separate
failure when dealing with MCJIT, I'll fix this second failure and then
turn FastISel on again for non-iOS ARM targets.

I've tested "make check-all" on my x86 box, and "lnt test-suite" on A15
hardware.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183551 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
57148c166ab232191098492633c924fad9c44ef3 07-Jun-2013 Bill Wendling <isanbard@gmail.com> Don't cache the instruction and register info from the TargetMachine, because
the internals of TargetMachine could change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183488 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMHazardRecognizer.cpp
RMHazardRecognizer.h
RMInstrInfo.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2RegisterInfo.cpp
humb2RegisterInfo.h
c6752d5565d77e1824eb08cfc2bd53b5f6229fdb 07-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Use the right resources for DIV

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183477 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
873ff29514f13f6919f172ba430994ff99becbd2 07-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add VFP div instruction on Swift

Reapply 183271.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183472 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
7f155d7d2bb8c702ed0f64393e38ec1cc26e2f08 07-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add SIMD/VFP load/store instructions on Swift

Reapply 183270 again (because three is a magic number).

This should now no longer seg fault after r183459.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183464 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
6b10d853039915aa24995fa7696e90323758e31b 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Revert "ARM sched model: Add SIMD/VFP load/store instructions on Swift"

Breaks linux build bots (I thought the problem was something else).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183447 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
5bf5b96c2b61198c40b97a4f99973bd31d671ec2 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add SIMD/VFP load/store instructions on Swift

Reapply 183270.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183445 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
5be946b4866989cddf16fd3d1977da3c77351098 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add integer VFP/SIMD instructions on Swift

Reapply 183269.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183441 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
d9445b6221fd3e94f95a328504b739bf636a5dbf 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add integer load/store instructions on Swift

Reapply 183268.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183438 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
67c2056e006688dbfe36bcea2298863d4cc174a9 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add integer arithmetic instructions on Swift

Reapply 183267.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183436 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
d8f8c35f4d524a4c90a8536551f726ce4e1d437c 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Cortex A9 - More InstRW sched resources

Add more InstRW mappings.

Reapply 183266.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183435 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
f1f6dcefa8c445fa6bd2bba3d72a3e6adff16ca1 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add branch thumb instructions

Reapply 183265.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183432 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
87aab6dc968a617e5498c384c2dcdbb6cb19acea 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add branch instructions

Reapply 183263.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
e022a6b0f45184726afe0aa48ef04a9af3e94b62 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add preload instructions

Reapply 183261.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183425 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f2988a00843bf5ddef7c9ee8b26534a1aa8c56cf 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add more ALU and CMP thumb instructions

Reapply of 183260.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183423 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
6a2e7ac0b6647a409394e58b385e579ea62b5cba 06-Jun-2013 Bill Wendling <isanbard@gmail.com> Cache the TargetLowering info object as a pointer.

Caching it as a pointer allows us to reset it if the TargetMachine object
changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183361 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
31588f300500d290e43952fcd8dd8e7f2bb460eb 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add more ALU and CMP instructions

Reapply of 183258.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183321 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c82157378e452035e6244194f3778e4a558435f3 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add divsion, loads, branches, vfp cvt

Add some generic SchedWrites and assign resources for Swift and Cortex A9.

Reapply of r183257. (Removed empty InstRW for division on swift)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183319 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
d87bd5627e5b78cb556d6c7b5aa76ae3d55d8acf 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARMInstrInfo: Improve isSwiftFastImmShift

An instruction with less than 3 inputs is trivially a fast immediate shift.

Reapply of 183256, should not have caused the tablegen segfault on linux either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183314 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2248cf590617cbe91eeb6a845ad06d675d9f2e91 05-Jun-2013 Mihai Popa <mihail.popa@gmail.com> This is a simple patch that changes RRX and RRXS to accept all registers as operands.
According to the ARM reference manual, RRX(S) have defined encodings for lr, pc and sp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183307 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
00ed010d9ef388d718ac358132848661b286f7b0 05-Jun-2013 Evan Cheng <evan.cheng@apple.com> Cortex-R5 can issue Thumb2 integer division instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183275 91177308-0d34-0410-b5e6-96231b3b80d8
RM.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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
f500aa0b2465152d1bae390e4d4a48e3a17e85a5 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add VFP div instruction on Swift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183271 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
858f6f8899e058412fc031f8b7231b9e13dca02a 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add SIMD/VFP load/store instructions on Swift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183270 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
e52041c16e1910b041513710031bafebe9cd5649 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add integer VFP/SIMD instructions on Swift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183269 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
f3a2329d3394c9a730aedbeaf2d761a9fe910fcf 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add integer load/store instructions on Swift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183268 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
755d1295a52c8d3e0c74c5ee37c6bd27074b52a8 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add integer arithmetic instructions on Swift

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183267 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleSwift.td
eb9948e7815818c7c4c05a6fb13bd1bfae820bbd 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Cortex A9 - More InstRW sched resources

Add more InstRW mappings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183266 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
002faf20a7093ed0d7dfe84c72d1ce7f790e77a4 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add branch thumb instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183265 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
36ea7912800a281a62d2605ab15e5b02cabacd09 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add branch instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183263 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
d3b8445d14593b76b10dc8aee4bebdcbf11443ad 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add preload instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183261 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
23cb39a3d915d6eaa2e053cae1c3158a2fdbe5c2 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add more ALU and CMP thumb instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183260 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
4c53731e5b21fc953cd431074f83063b87f95585 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add more ALU and CMP instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183258 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
611c6e135910779a8d1ed6db023d87f19799f6ac 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add divsion, loads, branches, vfp cvt

Add some generic SchedWrites and assign resources for Swift and Cortex A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183257 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
ede7eeae328d455b00d600639adacda695a499b6 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARMInstrInfo: Improve isSwiftFastImmShift

An instruction with less than 3 inputs is trivially a fast immediate shift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183256 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
35e7751af455f2cc559cdc2d3424b53706e09bb3 04-Jun-2013 David Majnemer <david.majnemer@gmail.com> ARM: Fix crash in ARM backend inside of ARMConstantIslandPass

The ARM backend did not expect LDRBi12 to hold a constant pool operand.
Allow for LLVM to deal with the instruction similar to how it deals with
LDRi12.

This fixes PR16215.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183238 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
bed23081860275c79137f65d592920e7991b8198 31-May-2013 Ahmed Bougacha <ahmed.bougacha@gmail.com> Add a way to define the bit range covered by a SubRegIndex.

NOTE: If this broke your out-of-tree backend, in *RegisterInfo.td, change
the instances of SubRegIndex that have a comps template arg to use the
ComposedSubRegIndex class instead.

In TableGen land, this adds Size and Offset attributes to SubRegIndex,
and the ComposedSubRegIndex class, for which the Size and Offset are
computed by TableGen. This also adds an accessor in MCRegisterInfo, and
Size/Offsets for the X86 and ARM subreg indices.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183020 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
ee5e24cb3e987c74d4dce146b4f78e83fb2b56a8 31-May-2013 Tim Northover <tnorthover@apple.com> ARM: permit upper-case BE/LE on setend instruction

Patch by Amaury de la Vieuville.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183012 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
242c9f4615feeee2fbdd1f29cd9a8e8ffd43c075 31-May-2013 Tim Northover <tnorthover@apple.com> ARM: add fstmx and fldmx instructions for assembly

These instructions are deprecated oddities, but we still need to be able to
disassemble (and reassemble) them if and when they're encountered.

Patch by Amaury de la Vieuville.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183011 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
isassembler/ARMDisassembler.cpp
e93c701cac2ac62bcd390b978604da76be9967d0 31-May-2013 Tim Northover <tnorthover@apple.com> ARM: fix VEXT encoding corner case

The disassembly of VEXT instructions was too lax in the bits checked. This
fixes the case where the instruction affects Q-registers but a misaligned lane
was specified (should be UNDEFINED).

Patch by Amaury de la Vieuville

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183003 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9e3e730417ec806f5a671e23d762795e550d0930 30-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert r182937 and r182877.

r182877 broke MCJIT tests on ARM and r182937 was working around another failure
by r182877.

This should make the ARM bots green.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182960 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6e0b2a0cb0d398f175a5294bf0ad5488c714e8c2 30-May-2013 Andrew Trick <atrick@apple.com> Order CALLSEQ_START and CALLSEQ_END nodes.

Fixes PR16146: gdb.base__call-ar-st.exp fails after
pre-RA-sched=source fixes.

Patch by Xiaoyi Guo!

This also fixes an unsupported dbg.value test case. Codegen was
previously incorrect but the test was passing by luck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182885 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f567a6d39b05ebdcdb42b4183f6cfdada75ec189 29-May-2013 JF Bastien <jfb@google.com> Enable FastISel on ARM for Linux and NaCl

FastISel was only enabled for iOS ARM and Thumb2, this patch enables it
for ARM (not Thumb2) on Linux and NaCl.

Thumb2 support needs a bit more work, mainly around register class
restrictions.

The patch punts to SelectionDAG when doing TLS relocation on non-Darwin
targets. I will fix this and other FastISel-to-SelectionDAG failures in
a separate patch.

The patch also forces FastISel to retain frame pointers: iOS always
keeps them for backtracking (so emitted code won't change because of
this), but Linux was getting much worse code that was incorrect when
using big frames (such as test-suite's lencod). I'll also fix this in a
later patch, it will probably require a peephole so that FastISel
doesn't rematerialize frame pointers back-to-back.

The test changes are straightforward, similar to:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130513/174279.html
They also add a vararg test that got dropped in that change.

I ran all of test-suite on A15 hardware with --optimize-option=-O0 and
all the tests pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182877 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMFastISel.cpp
RMInstrThumb2.td
ac6d9bec671252dd1e596fa71180ff6b39d06b5d 25-May-2013 Andrew Trick <atrick@apple.com> Track IR ordering of SelectionDAG nodes 2/4.

Change SelectionDAG::getXXXNode() interfaces as well as call sites of
these functions to pass in SDLoc instead of DebugLoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182703 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
de7cbbfcce5c068f0699bdcb6dac093c0c91ba6f 25-May-2013 Quentin Colombet <qcolombet@apple.com> Follow up of the introduction of MCSymbolizer.
- Ressurect old MCDisassemble API to soften transition.
- Extend MCTargetDesc to set target specific symbolizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182688 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
c6af2432c802d241c8fffbe0371c023e6c58844e 25-May-2013 Michael J. Spencer <bigcheesegs@gmail.com> Replace Count{Leading,Trailing}Zeros_{32,64} with count{Leading,Trailing}Zeros.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182680 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAddressingModes.h
CTargetDesc/ARMMCCodeEmitter.cpp
humb2InstrInfo.cpp
49a6a8d8f2994249c81b7914b07015714748a55c 24-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove the Copied parameter from MemoryObject::readBytes.

There was exactly one caller using this API right, the others were relying on
specific behavior of the default implementation. Since it's too hard to use it
right just remove it and standardize on the default behavior.

Defines away PR16132.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182636 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
ef99356dfebb96f6f90efb912c2877214bad060e 24-May-2013 Ahmed Bougacha <ahmed.bougacha@gmail.com> MC: Disassembled CFG reconstruction.

This patch builds on some existing code to do CFG reconstruction from
a disassembled binary:
- MCModule represents the binary, and has a list of MCAtoms.
- MCAtom represents either disassembled instructions (MCTextAtom), or
contiguous data (MCDataAtom), and covers a specific range of addresses.
- MCBasicBlock and MCFunction form the reconstructed CFG. An MCBB is
backed by an MCTextAtom, and has the usual successors/predecessors.
- MCObjectDisassembler creates a module from an ObjectFile using a
disassembler. It first builds an atom for each section. It can also
construct the CFG, and this splits the text atoms into basic blocks.

MCModule and MCAtom were only sketched out; MCFunction and MCBB were
implemented under the experimental "-cfg" llvm-objdump -macho option.
This cleans them up for further use; llvm-objdump -d -cfg now generates
graphviz files for each function found in the binary.

In the future, MCObjectDisassembler may be the right place to do
"intelligent" disassembly: for example, handling constant islands is just
a matter of splitting the atom, using information that may be available
in the ObjectFile. Also, better initial atom formation than just using
sections is possible using symbols (and things like Mach-O's
function_starts load command).

This brings two minor regressions in llvm-objdump -macho -cfg:
- The printing of a relocation's referenced symbol.
- An annotation on loop BBs, i.e., which are their own successor.

Relocation printing is replaced by the MCSymbolizer; the basic CFG
annotation will be superseded by more related functionality.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182628 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
2c94d0faa0e1c268893d5e04dc77e8a35889db00 24-May-2013 Ahmed Bougacha <ahmed.bougacha@gmail.com> Add MCSymbolizer for symbolic/annotated disassembly.

This is a basic first step towards symbolization of disassembled
instructions. This used to be done using externally provided (C API)
callbacks. This patch introduces:
- the MCSymbolizer class, that mimics the same functions that were used
in the X86 and ARM disassemblers to symbolize immediate operands and
to annotate loads based off PC (for things like c string literals).
- the MCExternalSymbolizer class, which implements the old C API.
- the MCRelocationInfo class, which provides a way for targets to
translate relocations (either object::RelocationRef, or disassembler
C API VariantKinds) to MCExprs.
- the MCObjectSymbolizer class, which does symbolization using what it
finds in an object::ObjectFile. This makes simple symbolization (with
no fancy relocation stuff) work for all object formats!
- x86-64 Mach-O and ELF MCRelocationInfos.
- A basic ARM Mach-O MCRelocationInfo, that provides just enough to
support the C API VariantKinds.

Most of what works in otool (the only user of the old symbolization API
that I know of) for x86-64 symbolic disassembly (-tvV) works, namely:
- symbol references: call _foo; jmp 15 <_foo+50>
- relocations: call _foo-_bar; call _foo-4
- __cf?string: leaq 193(%rip), %rax ## literal pool for "hello"
Stub support is the main missing part (because libObject doesn't know,
among other things, about mach-o indirect symbols).

As for the MCSymbolizer API, instead of relying on the disassemblers
to call the tryAdding* methods, maybe this could be done automagically
using InstrInfo? For instance, even though PC-relative LEAs are used
to get the address of string literals in a typical Mach-O file, a MOV
would be used in an ELF file. And right now, the explicit symbolization
only recognizes PC-relative LEAs. InstrInfo should have already have
most of what is needed to know what to symbolize, so this can
definitely be improved.

I'd also like to remove object::RelocationRef::getValueString (it seems
only used by relocation printing in objdump), as simply printing the
created MCExpr is definitely enough (and cleaner than string concats).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182625 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/ARMMachORelocationInfo.cpp
CTargetDesc/CMakeLists.txt
5a02fc4b5fa0eba4d0875db710400a74ada3b15f 23-May-2013 Tim Northover <t.p.northover@gmail.com> ARM: implement @llvm.readcyclecounter intrinsic

This implements the @llvm.readcyclecounter intrinsic as the specific
MRC instruction specified in the ARM manuals for CPUs with the Power
Management extensions.

Older CPUs had slightly different methods which may also have to be
implemented eventually, but this should cover all v7 cases.

rdar://problem/13939186

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182603 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b94a353242b26af5c0969926a6b84664e342b586 23-May-2013 Tim Northover <t.p.northover@gmail.com> ARM: Add Performance Monitor Extensions feature

Performance monitors, including a basic cycle counter, are an official
extension in the ARMv7 specification. This adds support for enabling and
disabling them, orthogonally from CPU selection.

rdar://problem/13939186

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182602 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
62c320a755ac27ac2b7f64e927892249e0f486e0 23-May-2013 Chad Rosier <mcrosier@apple.com> Simplify logic now that r182490 is in place. No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182531 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
30a7a7c1fdbd2607345dd1554e3436749fd75c6e 20-May-2013 Mihai Popa <mihail.popa@gmail.com> VSTn instructions have a number of encoding constraints which are not implemented. I have added these using wrapper methods around the original custom decoder (incidentally - this is a huge poorly written method that should be cleaned up. I have left it as is since the changes would be much to hard to review).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182281 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
bac932e9c3c4305a3c73598f3d0dc55de53d4c68 20-May-2013 Mihai Popa <mihail.popa@gmail.com> Q registers are encoded in fields of the same length as D registers. As Q registers are half as many, the ARM reference manual mandates the least significant bit to be zeroed out. Failure to do so should result in an undefined instruction. With this change test/MC/Disassembler/ARM/invalid-VQADD-arm.txt is passing (removed XFAIL).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182279 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
083bc97344d618884ef04bc1ba1fc4ddf14d867d 20-May-2013 Stepan Dyatkovskiy <stpworld@narod.ru> PR15868 fix.

Introduction:
In case when stack alignment is 8 and GPRs parameter part size is not N*8:
we add padding to GPRs part, so part's last byte must be recovered at
address K*8-1.
We need to do it, since remained (stack) part of parameter starts from
address K*8, and we need to "attach" "GPRs head" without gaps to it:

Stack:
|---- 8 bytes block ----| |---- 8 bytes block ----| |---- 8 bytes...
[ [padding] [GPRs head] ] [ ------ Tail passed via stack ------ ...

FIX:
Note, once we added padding we need to correct *all* Arg offsets that are going
after padded one. That's why we need this fix: Arg offsets were never corrected
before this patch. See new test-cases included in patch.

We also don't need to insert padding for byval parameters that are stored in GPRs
only. We need pad only last byval parameter and only in case it outsides GPRs
and stack alignment = 8.
Though, stack area, allocated for recovered byval params, must satisfy
"Size mod 8 = 0" restriction.

This patch reduces stack usage for some cases:
We can reduce ArgRegsSaveArea since inner N*4 bytes sized byval params my be
"packed" with alignment 4 in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182237 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMISelLowering.cpp
RMISelLowering.h
RMMachineFunctionInfo.h
humb1FrameLowering.cpp
4dc8bdf87d402ad8c91d9a72777d9576c5461e40 20-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Replace some bit operations with simpler ones. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182226 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
225ed7069caae9ece32d8bd3d15c6e41e21cc04b 18-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add LLVMContext argument to getSetCCResultType

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182180 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
bab06ba696694e7f62f964af7ee5290a13f78340 18-May-2013 JF Bastien <jfb@google.com> Support unaligned load/store on more ARM targets

This patch matches GCC behavior: the code used to only allow unaligned
load/store on ARM for v6+ Darwin, it will now allow unaligned load/store
for v6+ Darwin as well as for v7+ on Linux and NaCl.

The distinction is made because v6 doesn't guarantee support (but LLVM
assumes that Apple controls hardware+kernel and therefore have
conformant v6 CPUs), whereas v7 does provide this guarantee (and
Linux/NaCl behave sanely).

The patch keeps the -arm-strict-align command line option, and adds
-arm-no-strict-align. They behave similarly to GCC's -mstrict-align and
-mnostrict-align.

I originally encountered this discrepancy in FastIsel tests which expect
unaligned load/store generation. Overall this should slightly improve
performance in most cases because of reduced I$ pressure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182175 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
40df0d7a462c0febccc93f90dee105a0797f8ac6 16-May-2013 Derek Schuff <dschuff@google.com> Revert "Support unaligned load/store on more ARM targets"

This reverts r181898.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181944 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
6fc631978cdd1128a790854e497e267639d9325d 15-May-2013 Derek Schuff <dschuff@google.com> Support unaligned load/store on more ARM targets

This patch matches GCC behavior: the code used to only allow unaligned
load/store on ARM for v6+ Darwin, it will now allow unaligned load/store for
v6+ Darwin as well as for v7+ on other targets.

The distinction is made because v6 doesn't guarantee support (but LLVM assumes
that Apple controls hardware+kernel and therefore have conformant v6 CPUs),
whereas v7 does provide this guarantee (and Linux behaves sanely).

Overall this should slightly improve performance in most cases because of
reduced I$ pressure.

Patch by JF Bastien

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181897 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
101a36117c2e5e760ebb2b476d6c5b2b52cac6e8 15-May-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM ISel: Don't create illegal types during LowerMUL

The transformation happening here is that we want to turn a
"mul(ext(X), ext(X))" into a "vmull(X, X)", stripping off the extension. We have
to make sure that X still has a valid vector type - possibly recreate an
extension to a smaller type. In case of a extload of a memory type smaller than
64 bit we used create a ext(load()). The problem with doing this - instead of
recreating an extload - is that an illegal type is exposed.

This patch fixes this by creating extloads instead of ext(load()) sequences.

Fixes PR15970.

radar://13871383

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181842 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f86e436fb95670ed110818fefa403f21ae104639 13-May-2013 Mihai Popa <mihail.popa@gmail.com> The purpose of the patch is to fix the syntax of ARM mrc and mrc2 instructions when they are used to write to the APSR. In this case, the destination operand should be APSR_nzcv, and the encoding of the target should be 0b1111 (same as for PC). In pre-UAL syntax, this form used the PC register as a textual target. This is still allowed for backward compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181705 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMInstrInfo.td
RMRegisterInfo.td
isassembler/ARMDisassembler.cpp
d26c93d3a8a484c5b42f06163ae5de787f0ac276 13-May-2013 Lang Hames <lhames@gmail.com> Correctly preserve the input chain for potential tailcall nodes whose
return values are bitcasts.

The chain had previously been being clobbered with the entry node to
the dag, which sometimes caused other code in the function to be
erroneously deleted when tailcall optimization kicked in.

<rdar://problem/13827621>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181696 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4a971705bc6030dc2e4338b3cd5cffa2e0f88b7b 13-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the MachineMove class.

It was just a less powerful and more confusing version of
MCCFIInstruction. A side effect is that, since MCCFIInstruction uses
dwarf register numbers, calls to getDwarfRegNum are pushed out, which
should allow further simplifications.

I left the MachineModuleInfo::addFrameMove interface unchanged since
this patch was already fairly big.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181680 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
CTargetDesc/ARMMCTargetDesc.cpp
6e53180db120b30f600ac31611a9dd47ef7f4921 10-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181618 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
c24a374331fc97dd215937c8f0a9bf5271f39657 10-May-2013 Logan Chien <tzuhsiang.chien@gmail.com> Implement AsmParser for ARM unwind directives.

This commit implements the AsmParser for fnstart, fnend,
cantunwind, personality, handlerdata, pad, setfp, save, and
vsave directives.

This commit fixes some minor issue in the ARMELFStreamer:

* The switch back to corresponding section after the .fnend
directive.

* Emit the unwind opcode while processing .fnend directive
if there is no .handlerdata directive.

* Emit the unwind opcode to .ARM.extab while processing
.handlerdata even if .personality directive does not exist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181603 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMELFStreamer.cpp
44b6b530e94d5b05e1b2ddbb174c477b0ce56638 08-May-2013 Stepan Dyatkovskiy <stpworld@narod.ru> For r181148: fixed warning 'enumeral and non-enumeral type in conditional expression'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181437 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9dbeb69a345d12b15571769cfacf1d5e1a7ce378 03-May-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r180947.

Change-Id: Ic9e7daa7ef3789298c49a7b308af92115f5d682d
CTargetDesc/Android.mk
0553e1efcd3f8ccd8b45302e033924d9f85a5d2f 05-May-2013 Evan Cheng <evan.cheng@apple.com> ARM AnalyzeBranch should conservatively return true when it sees a predicated
indirect branch at the end of the BB. Otherwise if-converter, branch folding
pass may incorrectly update its successor info if it consider BB as fallthrough
to the next BB.

rdar://13782395


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181161 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
46abfcf4187432da728cbe452c32143da077e07f 05-May-2013 Stepan Dyatkovskiy <stpworld@narod.ru> For ARM backend, fixed "byval" attribute support.
Now even the small structures could be passed within byval (small enough
to be stored in GPRs).
In regression tests next function prototypes are checked:

PR15293:
%artz = type { i32 }
define void @foo(%artz* byval %s)
define void @foo2(%artz* byval %s, i32 %p, %artz* byval %s2)
foo: "s" stored in R0
foo2: "s" stored in R0, "s2" stored in R2.

Next AAPCS rules are checked:
5.5 Parameters Passing, C.4 and C.5,
"ParamSize" is parameter size in 32bit words:
-- NSAA != 0, NCRN < R4 and NCRN+ParamSize > R4.
Parameter should be sent to the stack; NCRN := R4.
-- NSAA != 0, and NCRN < R4, NCRN+ParamSize < R4.
Parameter stored in GPRs; NCRN += ParamSize.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181148 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
5c332dbd30d9398ed25b30c3080506f7b8e92290 05-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Add ArrayRef constructor from None, and do the cleanups that this constructor enables

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181138 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1aef163a6815e7bff675f83ddec8b063d6082e86 04-May-2013 Amara Emerson <amara.emerson@arm.com> Revert r181009.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181079 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
5d446e61d992f105a05aade62d5305fd8a346081 03-May-2013 Amara Emerson <amara.emerson@arm.com> Add support for reading ARM ELF build attributes.

Build attribute sections can now be read if they exist via ELFObjectFile, and
the llvm-readobj tool has been extended with an option to dump this information
if requested. Regression tests are also included which exercise these features.

Also update the docs with a fixed ARM ABI link and a new link to the Addenda
which provides the build attributes specification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181009 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
38578c4919ea18ceb27e29988b2d857afe6215bf 03-May-2013 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/master' into merge-20130502

Conflicts:
lib/Support/Unix/Signals.inc
unittests/Transforms/Utils/Cloning.cpp

Change-Id: I027581a4390ec3ce4cd8d33da8b5f4c0c7d372c8
34f39841d3e7929c5722cee3c27aefbca482d81a 30-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Text files should not be marked executable.

Patch by Oliver Pinter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180797 91177308-0d34-0410-b5e6-96231b3b80d8
ICENSE.TXT
62d77858be88ca011b55f5b350152bf04d1ca7db 30-Apr-2013 Mihai Popa <mihail.popa@gmail.com> s tightens up the encoding description for ARM post-indexed ldr instructions. All instructions in this class have bit 4 cleared. It turns out that there is a test case for this, but it was marked XFAIL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180778 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f65e4932f83ac0c36594d97fca73dc9a9fd26672 30-Apr-2013 Stepan Dyatkovskiy <stpworld@narod.ru> Refactoring patch.
1. VarArgStyleRegisters: functionality that emits "store" instructions for byval regs moved out into separated method "StoreByValRegs". Before this patch VarArgStyleRegisters had confused use-cases. It was used for both variadic functions and for regular functions with byval parameters. In last case it created new stack-frame and registered it as VarArg frame, that is wrong.

This patch replaces VarArgsStyleRegisters usage for byval parameters with StoreByValRegs method.

2. In ARMMachineFunctionInfo, "get/setVarArgsRegSaveSize" was renamed to "get/setArgRegsSaveSize". By the same reason. Sometimes it was used for variadic functions, and sometimes for byval parameters in regular functions. Actually, this property means the size of registers, that keeps arguments, and thats why it was renamed.

3. In ARMISelLowering.cpp, ARMTargetLowering class, in methods computeRegArea and StoreByValRegs, VARegXXXXXX was renamed to ArgRegsXXXXXX still by the same reasons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180774 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMISelLowering.cpp
RMISelLowering.h
RMMachineFunctionInfo.h
humb1FrameLowering.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
4e8590c45d3c6a4756aa8967e2e631ecd5a5a24b 26-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> ARM/NEON: Pattern match vector integer abs to vabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180604 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
45c9e0b412495c2d660918b0e964529bcb5e05b8 25-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Integer div and rem is lowered to a function call

Reflect this in the cost model. I observed this in MiBench/consumer-lame.

radar://13354716

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180576 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
81fef0267b6971b32a618a655d91f472cedfcaf2 23-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add more tests for r179925 to verify correct handling of signext/zeroext; strengthen condition check to require actual MVT::i32 virtual register types, just in case (no actual functionality change)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180138 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3a1b4f82233308b7551cdaa70f70a3f493e1b22d 23-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Lowercase "is" boolean variable prefix for consistency within function, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180136 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2c55362848eab1a8552a31f8da1a47d17105b4d9 22-Apr-2013 Eric Christopher <echristo@gmail.com> No really, don't store anything to this since it's unconditionally
set below.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180015 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b929b13c77a316dd9efd278399b9577fafca9a84 22-Apr-2013 Eric Christopher <echristo@gmail.com> Remove variable store that is never read.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180014 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
78e3c90419ffbe969bd38c7a198300af42fb66fc 22-Apr-2013 Stepan Dyatkovskiy <stpworld@narod.ru> Fix for 5.5 Parameter Passing --> Stage C:
-- C.4 and C.5 statements, when NSAA is not equal to SP.
-- C.1.cp statement for VA functions. Note: There are no VFP CPRCs in a
variadic procedure.

Before this patch "NSAA != 0" means "don't use GPRs anymore ". But there are
some exceptions in AAPCS.
1. For non VA function: allocate all VFP regs for CPRC. When all VFPs are allocated
CPRCs would be sent to stack, while non CPRCs may be still allocated in GRPs.
2. Check that for VA functions all params uses GPRs and then stack.
No exceptions, no CPRCs here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180011 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMCallingConv.td
RMISelLowering.cpp
0cb1019e9cd41237408eae09623eb9a34a4cbe0c 22-Apr-2013 Jim Grosbach <grosbach@apple.com> Legalize vector truncates by parts rather than just splitting.

Rather than just splitting the input type and hoping for the best, apply
a bit more cleverness. Just splitting the types until the source is
legal often leads to an illegal result time, which is then widened and a
scalarization step is introduced which leads to truly horrible code
generation. With the loop vectorizer, these sorts of operations are much
more common, and so it's worth extra effort to do them well.

Add a legalization hook for the operands of a TRUNCATE node, which will
be encountered after the result type has been legalized, but if the
operand type is still illegal. If simple splitting of both types
ends up with the result type of each half still being legal, just
do that (v16i16 -> v16i8 on ARM, for example). If, however, that would
result in an illegal result type (v8i32 -> v8i8 on ARM, for example),
we can get more clever with power-two vectors. Specifically,
split the input type, but also widen the result element size, then
concatenate the halves and truncate again. For example on ARM,
To perform a "%res = v8i8 trunc v8i32 %in" we transform to:
%inlo = v4i32 extract_subvector %in, 0
%inhi = v4i32 extract_subvector %in, 4
%lo16 = v4i16 trunc v4i32 %inlo
%hi16 = v4i16 trunc v4i32 %inhi
%in16 = v8i16 concat_vectors v4i16 %lo16, v4i16 %hi16
%res = v8i8 trunc v8i16 %in16

This allows instruction selection to generate three VMOVN instructions
instead of a sequences of moves, stores and loads.

Update the ARMTargetTransformInfo to take this improved legalization
into account.

Consider the simplified IR:

define <16 x i8> @test1(<16 x i32>* %ap) {
%a = load <16 x i32>* %ap
%tmp = trunc <16 x i32> %a to <16 x i8>
ret <16 x i8> %tmp
}

define <8 x i8> @test2(<8 x i32>* %ap) {
%a = load <8 x i32>* %ap
%tmp = trunc <8 x i32> %a to <8 x i8>
ret <8 x i8> %tmp
}

Previously, we would generate the truly hideous:
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test1
.align 2
_test1: @ @test1
@ BB#0:
push {r7}
mov r7, sp
sub sp, sp, #20
bic sp, sp, #7
add r1, r0, #48
add r2, r0, #32
vld1.64 {d24, d25}, [r0:128]
vld1.64 {d16, d17}, [r1:128]
vld1.64 {d18, d19}, [r2:128]
add r1, r0, #16
vmovn.i32 d22, q8
vld1.64 {d16, d17}, [r1:128]
vmovn.i32 d20, q9
vmovn.i32 d18, q12
vmov.u16 r0, d22[3]
strb r0, [sp, #15]
vmov.u16 r0, d22[2]
strb r0, [sp, #14]
vmov.u16 r0, d22[1]
strb r0, [sp, #13]
vmov.u16 r0, d22[0]
vmovn.i32 d16, q8
strb r0, [sp, #12]
vmov.u16 r0, d20[3]
strb r0, [sp, #11]
vmov.u16 r0, d20[2]
strb r0, [sp, #10]
vmov.u16 r0, d20[1]
strb r0, [sp, #9]
vmov.u16 r0, d20[0]
strb r0, [sp, #8]
vmov.u16 r0, d18[3]
strb r0, [sp, #3]
vmov.u16 r0, d18[2]
strb r0, [sp, #2]
vmov.u16 r0, d18[1]
strb r0, [sp, #1]
vmov.u16 r0, d18[0]
strb r0, [sp]
vmov.u16 r0, d16[3]
strb r0, [sp, #7]
vmov.u16 r0, d16[2]
strb r0, [sp, #6]
vmov.u16 r0, d16[1]
strb r0, [sp, #5]
vmov.u16 r0, d16[0]
strb r0, [sp, #4]
vldmia sp, {d16, d17}
vmov r0, r1, d16
vmov r2, r3, d17
mov sp, r7
pop {r7}
bx lr

.globl _test2
.align 2
_test2: @ @test2
@ BB#0:
push {r7}
mov r7, sp
sub sp, sp, #12
bic sp, sp, #7
vld1.64 {d16, d17}, [r0:128]
add r0, r0, #16
vld1.64 {d20, d21}, [r0:128]
vmovn.i32 d18, q8
vmov.u16 r0, d18[3]
vmovn.i32 d16, q10
strb r0, [sp, #3]
vmov.u16 r0, d18[2]
strb r0, [sp, #2]
vmov.u16 r0, d18[1]
strb r0, [sp, #1]
vmov.u16 r0, d18[0]
strb r0, [sp]
vmov.u16 r0, d16[3]
strb r0, [sp, #7]
vmov.u16 r0, d16[2]
strb r0, [sp, #6]
vmov.u16 r0, d16[1]
strb r0, [sp, #5]
vmov.u16 r0, d16[0]
strb r0, [sp, #4]
ldm sp, {r0, r1}
mov sp, r7
pop {r7}
bx lr

Now, however, we generate the much more straightforward:
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test1
.align 2
_test1: @ @test1
@ BB#0:
add r1, r0, #48
add r2, r0, #32
vld1.64 {d20, d21}, [r0:128]
vld1.64 {d16, d17}, [r1:128]
add r1, r0, #16
vld1.64 {d18, d19}, [r2:128]
vld1.64 {d22, d23}, [r1:128]
vmovn.i32 d17, q8
vmovn.i32 d16, q9
vmovn.i32 d18, q10
vmovn.i32 d19, q11
vmovn.i16 d17, q8
vmovn.i16 d16, q9
vmov r0, r1, d16
vmov r2, r3, d17
bx lr

.globl _test2
.align 2
_test2: @ @test2
@ BB#0:
vld1.64 {d16, d17}, [r0:128]
add r0, r0, #16
vld1.64 {d18, d19}, [r0:128]
vmovn.i32 d16, q8
vmovn.i32 d17, q9
vmovn.i16 d16, q8
vmov r0, r1, d16
bx lr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179989 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
4cc1407b84dc6dbbc0d62b1d1b8db7c0ddec86cc 21-Apr-2013 Tim Northover <Tim.Northover@arm.com> ARM: Use ldrd/strd to spill 64-bit pairs when available.

This allows common sp-offsets to be part of the instruction and is
probably faster on modern CPUs too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179977 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
335dd0d1a60b317dd5fed7016e6b29af5d509828 20-Apr-2013 Tim Northover <Tim.Northover@arm.com> ARM: don't add FrameIndex offset for LDMIA (has no immediate)

Previously, when spilling 64-bit paired registers, an LDMIA with both
a FrameIndex and an offset was produced. This kind of instruction
shouldn't exist, and the extra operand was being confused with the
predicate, causing aborts later on.

This removes the invalid 0-offset from the instruction being
produced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179956 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
8b71994fde0f0fcdf7a8260dc773fb7376b1231f 20-Apr-2013 Tim Northover <Tim.Northover@arm.com> Remove unused ShouldFoldAtomicFences flag.

I think it's almost impossible to fold atomic fences profitably under
LLVM/C++11 semantics. As a result, this is now unused and just
cluttering up the target interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6265d5c91a18b2fb6499eb581c488315880c044d 20-Apr-2013 Tim Northover <Tim.Northover@arm.com> Remove unused MEMBARRIER DAG node; it's been replaced by ATOMIC_FENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179939 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
456ca048af35163b9f52187e92a23ee0a9f059e8 20-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179925 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
69394f2997561788c3b2e4688ac0fcc99d259256 20-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Test commit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179913 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
75299e3a95c0cfcade8515c603e7802351a11bee 20-Apr-2013 Eli Bendersky <eliben@google.com> Move TryToFoldFastISelLoad to FastISel, where it belongs. In general, I'm
trying to move as much FastISel logic as possible out of the main path in
SelectionDAGISel - intermixing them just adds confusion.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179902 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2a8bea7a8eba9bfa05dcc7a87e9152a0043841b2 20-Apr-2013 Michael Liao <michael.liao@intel.com> ArrayRefize getMachineNode(). No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179901 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d3af696c08923d4d376641b52c3b2cb5baa00487 19-Apr-2013 Tim Northover <Tim.Northover@arm.com> ARM: Permit "sp" in ARM variant of STREXD instructions

Patch from Mihail Popa

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179854 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
4521019c6fd23680c583abe086067fc1c569bad1 19-Apr-2013 Tim Northover <Tim.Northover@arm.com> ARM: permit "sp" in ARM variants of MOVW/MOVT instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179847 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
88eb89b89f9426feb7be9b19d1a664b37c590bdb 19-Apr-2013 Chad Rosier <mcrosier@apple.com> [asm parser] Add support for predicating MnemonicAlias based on the assembler
variant/dialect. Addresses a FIXME in the emitMnemonicAliases function.
Use and test case to come shortly.
rdar://13688439 and part of PR13340.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179804 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d050e96133fac8565e3bb1eabe9a587dd5a6ac4d 18-Apr-2013 Hao Liu <Hao.Liu@arm.com> Fix for PR14824, An ARM Load/Store Optimization bug

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179751 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
df39be6cb4eb44011db3d3e86f8fe463f81ce127 17-Apr-2013 Peter Collingbourne <peter@pcc.me.uk> Add support for subsections to the ELF assembler. Fixes PR8717.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179725 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
7c4cf030a898b5b4e0d2c66adf8dc068b1f1f070 17-Apr-2013 Quentin Colombet <qcolombet@apple.com> Fix treatment of ARM unallocated hint instructions.
The reference manual defines only 5 permitted values for the immediate field of the "hint" instruction:
1. nop (imm == 0)
2. yield (imm == 1)
3. wfe (imm == 2)
4. wfi (imm == 3)
5. sev (imm == 4)

Therefore, restrict the permitted values for the "hint" instruction to 0 through 4.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179707 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
a363b117f41700da0200753e6df62b5e2cb38378 16-Apr-2013 Logan Chien <tzuhsiang.chien@gmail.com> Fix build failure introduced in 179591 when assertions are disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179593 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
532854d7ab47d4ec20fd8cec703aa8c89d4eefb2 16-Apr-2013 Logan Chien <tzuhsiang.chien@gmail.com> Implement ARM unwind opcode assembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179591 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMUnwindOp.h
CTargetDesc/ARMUnwindOpAsm.cpp
CTargetDesc/ARMUnwindOpAsm.h
CTargetDesc/CMakeLists.txt
d0132ba7225883b2f7b828561d46fa6e203db6bb 16-Apr-2013 Jim Grosbach <grosbach@apple.com> ARM: Add VACLT and VACLE assembly aliases.

These are aliases for VACGT and VACGE, respectively, with the source
operands reversed.

rdar://13638090

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179575 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
7fba6cd3d0a9565e86f50bd3d6ac403eadbcb00c 08-Apr-2013 Benjamin Kramer <benny.kra@googlemail.com> ARM: Remove unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179001 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
84581daf2058eb9d37e24a50ad3be198529bdf28 05-Apr-2013 Renato Golin <renato.golin@linaro.org> Reverting 178851 as it broke buildbots

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178883 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
992347f27131a403043a1e2f1bec4da82568df35 05-Apr-2013 Stepan Dyatkovskiy <stpworld@narod.ru> Buildbot fix for r178851: mistake was in wrong TargetRegisterInfo::getRegClass usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178854 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
89becbb97423fb608a4dd85ec10c3fde4398d956 05-Apr-2013 Stepan Dyatkovskiy <stpworld@narod.ru> Fix for PR14824: "Optimization arm_ldst_opt inserts newly generated instruction vldmia at incorrect position".
Patch introduces memory operands tracking in ARMLoadStoreOpt::LoadStoreMultipleOpti. For each register it keeps the order of load operations as it was before optimization pass.
It is kind of deep improvement of fix proposed by Hao: http://llvm.org/bugs/show_bug.cgi?id=14824#c4
But it also tracks conflicts between different register classes (e.g. D2 and S5).
For more details see:
Bug description: http://llvm.org/bugs/show_bug.cgi?id=14824
LLVM Commits discussion:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130311/167936.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130318/168688.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130325/169376.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130401/170238.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178851 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
fc61e635fd09e0cb852313f5533fb7fe694158fb 05-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM scheduler model: Add scheduler info to more instructions and resource
descriptions for compares

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178844 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
08da4865576056f997a9c8013240d716018f7edf 05-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM scheduler model: Swift has varying latencies, uops for simple ALU ops

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178842 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMSchedule.td
RMScheduleSwift.td
ee27cac9fac622d3198d4a53130f04653ad09d37 04-Apr-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid high-latency false CPSR dependencies even for tMOVSi.

The Thumb2SizeReduction pass avoids false CPSR dependencies, except it
still aggressively creates tMOVi8 instructions because they are so
common.

Avoid creating false CPSR dependencies even for tMOVi8 instructions when
the the CPSR flags are known to have high latency. This allows integer
computation to overlap floating point computations.

Also process blocks in a reverse post-order and propagate high-latency
flags to successors.

<rdar://problem/13468102>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178773 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
55097ff56765b9a1e41a7e676df764a8749bc81f 01-Apr-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM Scheduler Model: Add resources instructions, map resources in subtargets

Reapply r177968:
After commit 178074 we can now have undefined scheduler variants.

Move the CortexA9 resources into the CortexA9 SchedModel namespace. Define
resource mappings under the CortexA9 SchedModel. Define resources and mappings
for the SwiftModel.

Incooperate Andrew's feedback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178460 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
74a4533a4290b7c6f1fe04a30ca13ec25c529e0a 29-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove the old CodePlacementOpt pass.

It was superseded by MachineBlockPlacement and disabled by default since LLVM 3.1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178349 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ce888351106a72825e2a107cb08d7130f3dce0ee 28-Mar-2013 Gordon Keiser <gkeiser@arxan.com> Fix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper bit is set.
They should always be zero-extended, not sign extended. Added test case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178275 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
93b10789c6ca1c7c5ca8a453a4709f47099ec819 28-Mar-2013 Gordon Keiser <gkeiser@arxan.com> Testing commit access to llvm. Remove two lines of whitespace from the Thumb README.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178256 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
a210db781f17b5ab8e2b71d53276153a9d15eead 27-Mar-2013 Silviu Baranga <silviu.baranga@arm.com> Enabling the generation of dependency breakers for partial updates on Cortex-A15. Also fixing a small bug in getting the update clearence for VLD1LNd32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178134 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMTargetMachine.cpp
afaeb8152c79a9f3c157a614331d6919a0a0fa6a 26-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Revert ARM Scheduler Model: Add resources instructions, map resources

This reverts commit r177968. It is causing failures in a local build bot.

"fatal error: error in backend: Expected a variant SchedClass"

Original commit message:
Move the CortexA9 resources into the CortexA9 SchedModel namespace. Define
resource mappings under the CortexA9 SchedModel. Define resources and mappings
for the SwiftModel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178028 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
b78821d380b6f9514bd3b56b1c27ba367660228b 26-Mar-2013 Joe Abbey <jabbey@arxan.com> Patch by Gordon Keiser!

If PC or SP is the destination, the disassembler erroneously failed with the
invalid encoding, despite the manual saying that both are fine.

This patch addresses failure to decode encoding T4 of LDR (A8.8.62) which is a
postindexed load, where the offset 0xc is applied to SP after the load occurs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178017 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
a5dbe29ff54ce5bb3aecefc7d42af6f31bd7e903 26-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM Scheduler Model: Add resources instructions, map resources in subtargets

Move the CortexA9 resources into the CortexA9 SchedModel namespace. Define
resource mappings under the CortexA9 SchedModel. Define resources and mappings
for the SwiftModel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177968 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSchedule.td
RMScheduleA9.td
RMScheduleSwift.td
1b618f8848c1fe672ea32009a27322e48bca46f2 26-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM Scheduler Model: Partial implementation of the new machine scheduler model

This is very much work in progress. Please send me a note if you start to depend
on the added abstract read/write resources. They are subject to change until
further notice.

The old itinerary is still the default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177967 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
c82fba27fe6205e5ecdc80fb53e10675db07dfff 25-Mar-2013 Chad Rosier <mcrosier@apple.com> [arm load/store optimizer] When trying to merge a base update load/store, make
sure the base register and would-be writeback register don't conflict for
stores. This was already being done for loads.

Unfortunately, it is rather difficult to create a test case for this issue. It
was exposed in 450.soplex at LTO and requires unlucky register allocation.
<rdar://13394908>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177874 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
dc3beb90178fc316f63790812b22201884eaa017 23-Mar-2013 Hal Finkel <hfinkel@anl.gov> Allow the register scavenger to spill multiple registers

This patch lets the register scavenger make use of multiple spill slots in
order to guarantee that it will be able to provide multiple registers
simultaneously.

To support this, the RS's API has changed slightly: setScavengingFrameIndex /
getScavengingFrameIndex have been replaced by addScavengingFrameIndex /
isScavengingFrameIndex / getScavengingFrameIndices.

In forthcoming commits, the PowerPC backend will use this capability in order
to implement the spilling of condition registers, and some special-purpose
registers, without relying on r0 being reserved. In some cases, spilling these
registers requires two GPRs: one for addressing and one to hold the value being
transferred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177774 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1RegisterInfo.cpp
3382a840747c42c4a98eac802ee7b347a8ded1e4 21-Mar-2013 Renato Golin <renato.golin@linaro.org> Avoid NEON SP-FP unless unsafe-math or Darwin

NEON is not IEEE 754 compliant, so we should avoid lowering single-precision
floating point operations with NEON unless unsafe-math is turned on. The
equivalent VFP instructions are IEEE 754 compliant, but in some cores they're
much slower, so some archs/OSs might still request it to be on by default,
such as Swift and Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177651 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
580f9c85fd7a3c90884ed7ee7c2d613923a53bb3 20-Mar-2013 Chad Rosier <mcrosier@apple.com> Fix pr13145 - Naming a function like a register name confuses the asm parser.
Patch by Stepan Dyatkovskiy <stpworld@narod.ru>
rdar://13457826

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177463 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5ad5f5931e34d5be410b1e901640bc1c2d308612 19-Mar-2013 Renato Golin <renato.golin@linaro.org> Improve long vector sext/zext lowering on ARM

The ARM backend currently has poor codegen for long sext/zext
operations, such as v8i8 -> v8i32. This patch addresses this
by performing a custom expansion in ARMISelLowering. It also
adds/changes the cost of such lowering in ARMTTI.

This partially addresses PR14867.

Patch by Pete Couperus

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177380 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetTransformInfo.cpp
d212f3fdfcfd01d5bc24ac4614b7e23478432f80 19-Mar-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r177342.

Change-Id: Ie489c8fab15789330f6ac968087ba14953dfacca
ndroid.mk
2d4629c5d7dcc6582fa7b85a517744f1a3654eba 19-Mar-2013 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2013_03_18
bf37bf9e21653f2439960d906a9c28cc19042bb0 18-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Make some vector integer to float casts cheaper

The default logic marks them as too expensive.

For example, before this patch we estimated:
cost of 16 for instruction: %r = uitofp <4 x i16> %v0 to <4 x float>

While this translates to:
vmovl.u16 q8, d16
vcvt.f32.u32 q8, q8

All other costs are left to the values assigned by the fallback logic. Theses
costs are mostly reasonable in the sense that they get progressively more
expensive as the instruction sequences emitted get longer.

radar://13445992

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177334 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
01f25710148721f9fc2dece5eec17899ca414bcc 18-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Correct cost for some cheap float to integer conversions

Fix cost of some "cheap" cast instructions. Before this patch we used to
estimate for example:
cost of 16 for instruction: %r = fptoui <4 x float> %v0 to <4 x i16>

While we would emit:
vcvt.s32.f32 q8, q8
vmovn.i32 d16, q8
vuzp.8 d16, d17

All other costs are left to the values assigned by the fallback logic. Theses
costs are mostly reasonable in the sense that they get progressively more
expensive as the instruction sequences emitted get longer.

radar://13434072

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177333 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
5193e4ebe216dd5a07ab9cc58d40de5aafaa990c 15-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Fix costs for some vector selects

I was too pessimistic in r177105. Vector selects that fit into a legal register
type lower just fine. I was mislead by the code fragment that I was using. The
stores/loads that I saw in those cases came from lowering the conditional off
an address.

Changing the code fragment to:

%T0_3 = type <8 x i18>
%T1_3 = type <8 x i1>

define void @func_blend3(%T0_3* %loadaddr, %T0_3* %loadaddr2,
%T1_3* %blend, %T0_3* %storeaddr) {
%v0 = load %T0_3* %loadaddr
%v1 = load %T0_3* %loadaddr2
==> FROM:
;%c = load %T1_3* %blend
==> TO:
%c = icmp slt %T0_3 %v0, %v1
==> USE:
%r = select %T1_3 %c, %T0_3 %v0, %T0_3 %v1

store %T0_3 %r, %T0_3* %storeaddr
ret void
}

revealed this mistake.

radar://13403975

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177170 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
bcbf3fddef46f1f6e2f2408064c4b75e4b6c90f5 15-Mar-2013 Silviu Baranga <silviu.baranga@arm.com> Adding an A15 specific optimization pass for interactions between S/D/Q registers. The pass handles all the required transformations pre-regalloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177169 91177308-0d34-0410-b5e6-96231b3b80d8
15SDOptimizer.cpp
RM.h
RMBaseInstrInfo.cpp
RMTargetMachine.cpp
MakeLists.txt
133c0d36e1fdeda88d784017bafa8a1b22af8aca 15-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> ARM: Fix an old refacto.

Fixes PR15520.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177167 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c0d8dc0eb6e1df872affadba01f60e42275e2863 15-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Fix cost of fptrunc and fpext instructions

A vector fptrunc and fpext simply gets split into scalar instructions.

radar://13192358

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177159 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
a286fc065a5bc846d73c8407a534a1d3c1d70b59 15-Mar-2013 Eric Christopher <echristo@gmail.com> Silence anonymous type in anonymous union warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177135 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0cc52c67dbc2e073e3f7f34e05e3e7cd17ba9745 14-Mar-2013 Hal Finkel <hfinkel@anl.gov> Move estimateStackSize from ARM into MachineFrameInfo

This is a generic function (derived from PEI); moving it into
MachineFrameInfo eliminates a current redundancy between the ARM and AArch64
backends, and will allow it to be used by the PowerPC target code.

No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177111 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
d81511f0a671a9271d7ba10cce6c27331b57f553 14-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Increase cost of some vector selects we do terrible on

By terrible I mean we store/load from the stack.

This matters on PAQp8 in _Z5trainPsS_ii (which is inlined into Mixer::update)
where we decide to vectorize a loop with a VF of 8 resulting in a 25%
degradation on a cortex-a8.

LV: Found an estimated cost of 2 for VF 8 For instruction: icmp slt i32
LV: Found an estimated cost of 2 for VF 8 For instruction: select i1, i32, i32

The bug that tracks the CodeGen part is PR14868.

radar://13403975

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177105 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
b6f4872d29136637a3a5dfdf185f5afcbcdd3b2a 12-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Increase the cost for vector casts that use the stack

Increase the cost of v8/v16-i8 to v8/v16-i32 casts and truncates as the backend
currently lowers those using stack accesses.

This was responsible for a significant degradation on
MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1
where we vectorize one loop to a vector factor of 16. After this patch we select
a vector factor of 4 which will generate reasonable code.

unsigned char cle[32];

void test(short c) {
unsigned short compte;
for (compte = 0; compte <= 31; compte++) {
cle[compte] = cle[compte] ^ c;
}
}

radar://13220512

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176898 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
f793de7a2331edea161eae20f9bdfa86b0d7fd3c 09-Mar-2013 Lang Hames <lhames@gmail.com> Don't glue users to extract_subreg when selecting the llvm.arm.ldrexd
intrinsic - it can cause impossible-to-schedule subgraphs to be
introduced.

PR15053.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176777 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3853f74aba301ef08b699bac2fa8e53230714a58 07-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> ArrayRefize some code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176648 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5adb136be579e8fff3734461580cb34d1d2983b8 06-Mar-2013 Stephen Hines <srhines@google.com> Merge commit 'b3201c5cf1e183d840f7c99ff779d57f1549d8e5' into merge_20130226

Conflicts:
include/llvm/Support/ELF.h
lib/Support/DeltaAlgorithm.cpp

Change-Id: I24a4fbce62eb39d924efee3c687b55e1e17b30cd
7bf504c58fcf1345f0278d6dab3840a45a623965 02-Mar-2013 Jim Grosbach <grosbach@apple.com> ARM: Creating a vector from a lane of another.

The VDUP instruction source register doesn't allow a non-constant lane
index, so make sure we don't construct a ARM::VDUPLANE node asking it to
do so.

rdar://13328063
http://llvm.org/bugs/show_bug.cgi?id=13963

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176413 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
65da9f1ce14800c137fcd8c32f3ad12c9bebd9bf 02-Mar-2013 Jim Grosbach <grosbach@apple.com> Clean up code format a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176412 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7ccf46395e02ecaff6e6cab6ad258c69893efd55 02-Mar-2013 Jim Grosbach <grosbach@apple.com> Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176411 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
21c0aa74bdeae6303204c9b0c2fc154562fbb373 02-Mar-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM NEON: Fix v2f32 float intrinsics

Mark them as expand, they are not legal as our backend does not match them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176410 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b8f307b2d6b5fb1380803ff91696902bebbef7c6 01-Mar-2013 Chad Rosier <mcrosier@apple.com> Add support for using non-pic code for arm and thumb1 when emitting the sjlj
dispatch code. As far as I can tell the thumb2 code is behaving as expected.
I was able to compile and run the associated test case for both arm and thumb1.
rdar://13066352


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176363 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a6ca70369366d549f104ee72822c6f591ea0ece0 28-Feb-2013 Chad Rosier <mcrosier@apple.com> Tidy up; no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176288 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
279706e90e12e9418d4e8f9415d5f3ed33a99bdb 28-Feb-2013 Chad Rosier <mcrosier@apple.com> Style; no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176285 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b302a4e6b572a360d7153d2e1e14b53f053c282d 27-Feb-2013 Jim Grosbach <grosbach@apple.com> ARM: FMA is legal only if VFP4 is available.

rdar://13306723

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176212 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0a4da9c6a12371bb8bb36ef5cbb6922e0138dde2 27-Feb-2013 Chad Rosier <mcrosier@apple.com> Remove this instance of dl as it's defined in a previous scope.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176208 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d65dfd83421f4d26e6dc20476718d7d9b6ba3f3b 27-Feb-2013 Tim Northover <Tim.Northover@arm.com> ARM: permit full range of valid ADR immediates.

This fixes an issue where trying to assemlbe valid ADR instructions would cause
LLVM to hit a failed assertion.

Patch by Keith Walker.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176189 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
efd0d71fcd03c347ac615ef7f066438f6fac2aa2 27-Feb-2013 Stephen Hines <srhines@google.com> Fix dependencies for llc/ARMAsmPrinter.

We were incorrectly pulling the source file in from a subdirectory and
not using the appropriate static library to build llc.

Change-Id: Id5512a918f66e437c36a2cc737795f05173f8b25
ndroid.mk
fe88aa0d148510e41bc3080dea4febcb1445855c 26-Feb-2013 Chad Rosier <mcrosier@apple.com> [fast-isel] Make sure the FastLowerArguments function checks to make sure the
arguments type is a simple type.
rdar://13290455

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176066 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
29e05fe7a885bd03d8570d2bcf14193013776bcd 22-Feb-2013 Kristof Beyls <kristof.beyls@arm.com> Make ARMAsmPrinter generate the correct alignment specifier syntax in instructions.

The Printer will now print instructions with the correct alignment specifier syntax, like
vld1.8 {d16}, [r0:64]



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175884 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
700ed80d3da5e98e05ceb90e9bfb66058581a6db 21-Feb-2013 Eli Bendersky <eliben@google.com> Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo
to TargetFrameLowering, where it belongs. Incidentally, this allows us
to delete some duplicated (and slightly different!) code in TRI.

There are potentially other layering problems that can be cleaned up
as a result, or in a similar manner.

The refactoring was OK'd by Anton Korobeynikov on llvmdev.

Note: this touches the target interfaces, so out-of-tree targets may
be affected.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175788 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameLowering.cpp
RMFrameLowering.h
humb1FrameLowering.cpp
humb1FrameLowering.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
b300455b5817f099d64aad8f9356e0e23fa9a87e 21-Feb-2013 Evan Cheng <evan.cheng@apple.com> Radar numbers don't belong in source code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175775 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
cb2ae3d98e3bb36e5813f8f69b00d39efd026dcd 20-Feb-2013 Jim Grosbach <grosbach@apple.com> MCParser: Update method names per coding guidelines.

s/AddDirectiveHandler/addDirectiveHandler/
s/ParseMSInlineAsm/parseMSInlineAsm/
s/ParseIdentifier/parseIdentifier/
s/ParseStringToEndOfStatement/parseStringToEndOfStatement/
s/ParseEscapedString/parseEscapedString/
s/EatToEndOfStatement/eatToEndOfStatement/
s/ParseExpression/parseExpression/
s/ParseParenExpression/parseParenExpression/
s/ParseAbsoluteExpression/parseAbsoluteExpression/
s/CheckForValidSection/checkForValidSection/

http://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175675 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3450f800aa65c91f0496816ba6061a422a74c1fe 20-Feb-2013 Jim Grosbach <grosbach@apple.com> Update TargetLowering ivars for name policy.

http://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly

ivars should be camel-case and start with an upper-case letter. A few in
TargetLowering were starting with a lower-case letter.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175667 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
af3a5420aeb421e83694745c53141683caa123cb 20-Feb-2013 Logan Chien <tzuhsiang.chien@gmail.com> Fix thumbv5e frame lowering assertion failure.

It is possible that frame pointer is not found in the
callee saved info, thus FramePtrSpillFI may be incorrect
if we don't check the result of hasFP(MF).

Besides, if we enable the stack coloring algorithm, there
will be an assertion to ensure the slot is live. But in
the test case, %var1 is not live in the prologue of the
function, and we will get the assertion failure.

Note: There is similar code in ARMFrameLowering.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175616 91177308-0d34-0410-b5e6-96231b3b80d8
humb1FrameLowering.cpp
909a0e0e95e2b96f5d07d40fb53c5892bea20f83 19-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM NEON: Don't need COPY_TO_REGCLASS in pattern

In my previous commit:
"Merge a f32 bitcast of a v2i32 extractelt

A vectorized sitfp on doubles will get scalarized to a sequence of an
extract_element of <2 x i32>, a bitcast to f32 and a sitofp.
Due to the the extract_element, and the bitcast we will uneccessarily generate
moves between scalar and vector registers."

I added a pattern containing a copy_to_regclass. The copy_to_regclass is
actually not needed.

radar://13191881

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175555 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4fd4c91c40fa40ae4cd671b03056de8c3c961046 19-Feb-2013 Jim Grosbach <grosbach@apple.com> ARM: Allocation hints must make sure to be in the alloc order.

When creating an allocation hint for a register pair, make sure the hint
for the physical register reference is still in the allocation order.

rdar://13240556

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175541 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
26a5c4dd3176a7e3a7cc9601d32ccad8f41d3104 19-Feb-2013 Eli Bendersky <eliben@google.com> Make ARMAsmPrinter pass name more precise and fix comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175527 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.h
2e750c12e91ab09949ef1617ab3af14e1b6cd239 19-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM NEON: Merge a f32 bitcast of a v2i32 extractelt

A vectorized sitfp on doubles will get scalarized to a sequence of an
extract_element of <2 x i32>, a bitcast to f32 and a sitofp.
Due to the the extract_element, and the bitcast we will uneccessarily generate
moves between scalar and vector registers.

The patch fixes this by using a COPY_TO_REGCLASS and a EXTRACT_SUBREG to extract
the element from the vector instead.

radar://13191881

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175520 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
848c25ddfa8530fd9349bdf5ed8a8633f27eb388 18-Feb-2013 Chad Rosier <mcrosier@apple.com> [fast-isel] Remove an invalid assert.

If the memcpy has an odd length with an alignment of 2, this would incorrectly
assert on the last 1 byte copy.
rdar://13202135

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175459 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b26f98fa1f098b527cc84ef7535fe84d89953c21 16-Feb-2013 Renato Golin <renato.golin@linaro.org> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175371 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
901d80065c9afa0ba33e8546c2e1e99a00aceb14 16-Feb-2013 Bill Wendling <isanbard@gmail.com> Reinitialize the ivars in the subtarget so that they can be reset with the new features.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175336 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
ba6867d0ce3de9b7b4385f98d215edfcd36c4b32 16-Feb-2013 Bill Wendling <isanbard@gmail.com> Temporary revert of 175320.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175322 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
9be8b4fc92e1ace819a78db512c1f945c1471be7 16-Feb-2013 Bill Wendling <isanbard@gmail.com> Reinitialize the ivars in the subtarget.

When we're recalculating the feature set of the subtarget, we need to have the
ivars in their initial state.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175320 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
4788d14b484ba9e2fe19855fd6c97a3659980fca 15-Feb-2013 Bill Wendling <isanbard@gmail.com> Support changing the subtarget features in ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175315 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
48e841d41c57712f4d6a94b1123f198bdf0bda7d 15-Feb-2013 Joel Jones <joel_k_jones@apple.com> The ARM NEON vector compare instructions take three arguments. However, the
assembler should also accept a two arg form, as the docuemntation specifies that
the first (destination) register is optional.

This patch uses TwoOperandAliasConstraint to add the two argument form.

It also fixes an 80-column formatting problem in:
test/MC/ARM/neon-bitwise-encoding

<rdar://problem/12909419> Clang rejects ARM NEON assembly instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175221 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
7248451c4307c05cf3ddfa8133f0c5334bab6455 14-Feb-2013 Weiming Zhao <weimingz@codeaurora.org> Re-apply r175088 for bug fix 13622: Add paired register support for
inline asm with 64-bit data on ARM

Update test case to use -mtriple=arm-linux-gnueabi


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175186 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
b1d081230e40e5c86f3cc44a7cfd7241732eabfb 14-Feb-2013 Kristof Beyls <kristof.beyls@arm.com> Make ARMAsmParser accept the correct alignment specifier syntax in instructions.

The parser will now accept instructions with alignment specifiers written like
vld1.8 {d16}, [r0:64]
, while also still accepting the incorrect syntax
vld1.8 {d16}, [r0, :64]



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175164 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c0c2816fb3d137c096d0bd20b8ad2d92ce25a976 14-Feb-2013 Weiming Zhao <weimingz@codeaurora.org> temporarily revert the patch due to some conflicts

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175107 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
3019fbbe6ab4c23a5a580f0cc6ba1ba1b124e1da 13-Feb-2013 Weiming Zhao <weimingz@codeaurora.org> Bug fix 13622: Add paired register support for inline asm with 64-bit data on ARM


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175088 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
e68542e67e5c0f8d4bbdae0dde6ccd24525a18e3 13-Feb-2013 David Peixotto <dpeixott@codeaurora.org> Test commit. Fixed typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175020 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6851623c54b35673f6e9a0ed0fd12378c93f48c4 12-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Add vector reverse shuffle costs

A reverse shuffle is lowered to a vrev and possibly a vext instruction (quad
word).

radar://13171406

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174933 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
d9316dacf5bb8c02631f782c7f2fc24fb8d788f3 12-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM NEON: Handle v16i8 and v8i16 reverse shuffles

Lower reverse shuffles to a vrev64 and a vext instruction instead of the default
legalization of storing and loading to the stack. This is important because we
generate reverse shuffles in the loop vectorizer when we reverse store to an
array.

uint8_t Arr[N];
for (i = 0; i < N; ++i)
Arr[N - i - 1] = ...

radar://13171760

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174929 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
092e5e75661fdd5d54a748fb00fab59d21031268 11-Feb-2013 Evan Cheng <evan.cheng@apple.com> Currently, codegen may spent some time in SDISel passes even if an entire
function is successfully handled by fast-isel. That's because function
arguments are *always* handled by SDISel. Introduce FastLowerArguments to
allow each target to provide hook to handle formal argument lowering.

As a proof-of-concept, add ARMFastIsel::FastLowerArguments to handle
functions with 4 or fewer scalar integer (i8, i16, or i32) arguments. It
completely eliminates the need for SDISel for trivial functions.

rdar://13163905


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174855 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fb55a8fd7c38aa09d9c243d48a8a72d890f36a3d 08-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Address computation in vector mem ops not free

Adds a function to target transform info to query for the cost of address
computation. The cost model analysis pass now also queries this interface.
The code in LoopVectorize adds the cost of address computation as part of the
memory instruction cost calculation. Only there, we know whether the instruction
will be scalarized or not.
Increase the penality for inserting in to D registers on swift. This becomes
necessary because we now always assume that address computation has a cost and
three is a closer value to the architecture.

radar://13097204

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174713 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
66f535a273e52d56199c7ce8f975796017b6cbb2 07-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Add costs for vector selects

Vector selects are cheap on NEON. They get lowered to a vbsl instruction.

radar://13158753

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174631 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
5bc79cc4e833fea68f15780f191cbf4881679646 06-Feb-2013 Jim Grosbach <grosbach@apple.com> ARM: Use MCTargetAsmParser::validateTargetOperandClass().

Use the validateTargetOperandClass() hook to match literal '#0' operands in
InstAlias definitions. Previously this required per-instruction C++ munging of the
operand list, but not is handled as a natural part of the matcher. Much better.

No additional tests are required, as the pre-existing tests for these instructions
exercise the new behaviour as being functionally equivalent to the old.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174488 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fc7432744476281511704c7e07bf89e20c215601 05-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Move MRI liveouts to ARM return instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174406 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMInstrInfo.td
e2d5590c33f1b5203c0104c1c82bf8e0f28b828e 05-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Cost for scalar integer casts and floating point conversions

Also adds some costs for vector integer float conversions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174371 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
a7ad84851b018602487779d97195bad0536f9a7a 04-Feb-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM cost model: Penalize insertelement into D subregisters

Swift has a renaming dependency if we load into D subregisters. We don't have a
way of distinguishing between insertelement operations of values from loads and
other values. Therefore, we are pessimistic for now (The performance problem
showed up in example 14 of gcc-loops).

radar://13096933

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174300 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
27aacedf7d975243170206efb948a20d6fd4a2c1 01-Feb-2013 Chandler Carruth <chandlerc@gmail.com> Switch the code added in r173885 to use the new, shiny RTTI
infrastructure on MCStreamer to test for whether there is an
MCELFStreamer object available.

This is just a cleanup on the AsmPrinter side of things, moving ad-hoc
tests of random APIs to a direct type query. But the AsmParser
completely broken. There were no tests, it just blindly cast its
streamer to an MCELFStreamer and started manipulating it.

I don't have a test case -- this actually failed on LLVM's own
regression test suite. Unfortunately the failure only appears when the
stars, compilers, and runtime align to misbehave when we read a pointer
to a formatted_raw_ostream as-if it were an MCAssembler. =/

UBSan would catch this immediately.

Many thanks to Matt for doing about 80% of the debugging work here in
GDB, Jim for helping to explain how exactly to fix this, and others for
putting up with the hair pulling that ensued during debugging it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174118 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmParser.cpp
5da3665cc501ed8928e63678254357214ec0b9eb 01-Feb-2013 Chandler Carruth <chandlerc@gmail.com> Give the MCStreamer class hierarchy LLVM RTTI facilities for use with
isa<> and dyn_cast<>. In several places, code is already hacking around
the absence of this, and there seem to be several interfaces that might
be lifted and/or devirtualized using this.

This change was based on a discussion with Jim Grosbach about how best
to handle testing for specific MCStreamer subclasses. He said that this
was the correct end state, and everything else was too hacky so
I decided to just make it so.

No functionality should be changed here, this is just threading the kind
through all the constructors and setting up the classof overloads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174113 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
108fb3202af6f500073cdbb7be32c25d7a273a2e 31-Jan-2013 Chad Rosier <mcrosier@apple.com> [PEI] Pass the frame index operand number to the eliminateFrameIndex function.
Each target implementation was needlessly recomputing the index.
Part of rdar://13076458

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174083 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
72062f5744557e270a38192554c3126ea5f97434 31-Jan-2013 Tim Northover <Tim.Northover@arm.com> Add AArch64 as an experimental target.

This patch adds support for AArch64 (ARM's 64-bit architecture) to
LLVM in the "experimental" category. Currently, it won't be built
unless requested explicitly.

This initial commit should have support for:
+ Assembly of all scalar (i.e. non-NEON, non-Crypto) instructions
(except the late addition CRC instructions).
+ CodeGen features required for C++03 and C99.
+ Compilation for the "small" memory model: code+static data <
4GB.
+ Absolute and position-independent code.
+ GNU-style (i.e. "__thread") TLS.
+ Debugging information.

The principal omission, currently, is performance tuning.

This patch excludes the NEON support also reviewed due to an outbreak of
batshit insanity in our legal department. That will be committed soon bringing
the changes to precisely what has been approved.

Further reviews would be gratefully received.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174054 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCExpr.h
0f156af8312a0f3ce88e5c006bf2a52691039ceb 30-Jan-2013 Eli Bendersky <eliben@google.com> Add a special ARM trap encoding for NaCl.
More details in this thread: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130128/163783.html

Patch by JF Bastien



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173943 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMFastISel.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
620d5bd8e43331a9b5ba2437c1de0d3f4a43a34d 30-Jan-2013 Logan Chien <tzuhsiang.chien@gmail.com> Add missing header and test cases for r173939.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173941 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMUnwindOp.h
52b1b3bbc6c8a7c7e5669e3169984a48b3f1a4b3 30-Jan-2013 Logan Chien <tzuhsiang.chien@gmail.com> Override virtual function for ARM EH directives.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173939 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
97130e2b3de080e231caac86dbce1500e4e7af16 30-Jan-2013 Jack Carter <jcarter@mips.com> This patch implements runtime ARM specific
setting of ELF header e_flags.

Contributer: Jack Carter



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173885 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmParser.cpp
9a7bf438b50fed2c77f0e2bc835defa5b4728f82 30-Jan-2013 Jack Carter <jcarter@mips.com> This patch reworks how llvm targets set
and update ELF header e_flags.

Currently gathering information such as symbol,
section and data is done by collecting it in an
MCAssembler object. From MCAssembler and MCAsmLayout
objects ELFObjectWriter::WriteObject() forms and
streams out the ELF object file.

This patch just adds a few members to the MCAssember
class to store and access the e_flag settings. It
allows for runtime additions to the e_flag by
assembler directives. The standalone assembler can
get to MCAssembler from getParser().getStreamer().getAssembler().

This patch is the generic infrastructure and will be
followed by patches for ARM and Mips for their target
specific use.

Contributer: Jack Carter



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173882 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
0261cea689c71a15175faf37fdc6bd1d9f69c46e 30-Jan-2013 Renato Golin <renato.golin@linaro.org> Adding simple cast cost to ARM

Changing ARMBaseTargetMachine to return ARMTargetLowering intead of
the generic one (similar to x86 code).

Tests showing which instructions were added to cast when necessary
or cost zero when not. Downcast to 16 bits are not lowered in NEON,
so costs are not there yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173849 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.h
RMTargetTransformInfo.cpp
0adfdedacbb87df8cc8b8311365a15fae004977e 29-Jan-2013 Tim Northover <Tim.Northover@arm.com> Fix 64-bit atomic operations in Thumb mode.

The ARM and Thumb variants of LDREXD and STREXD have different constraints and
take different operands. Previously the code expanding atomic operations didn't
take this into account and asserted in Thumb mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173780 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8688a58c53b46d2dda9bf50dafd5195790a7ed58 29-Jan-2013 Evan Cheng <evan.cheng@apple.com> Teach SDISel to combine fsin / fcos into a fsincos node if the following
conditions are met:
1. They share the same operand and are in the same BB.
2. Both outputs are used.
3. The target has a native instruction that maps to ISD::FSINCOS node or
the target provides a sincos library call.

Implemented the generic optimization in sdisel and enabled it for
Mac OSX. Also added an additional optimization for x86_64 Mac OSX by
using an alternative entry point __sincos_stret which returns the two
results in xmm0 / xmm1.

rdar://13087969
PR13204


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173755 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4a9256f265a7fcccd1f04518b55fd751f3a920a8 25-Jan-2013 Silviu Baranga <silviu.baranga@arm.com> Fixed the condition codes for the atomic64 min/umin code generation on ARM. If the sutraction of the higher 32 bit parts gives a 0 result, we need to do the store operation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173437 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3aef70314b053a1df4f85ca4a6f3890d06ebbdd6 09-Jan-2013 Stephen Hines <srhines@google.com> Update LLVM for merge to r171905.

Android.mk
lib/Analysis/Android.mk
lib/CodeGen/Android.mk
lib/CodeGen/MachineScheduler.cpp - specify std::pop_heap()
lib/IR/Android.mk - new from lib/VMCore
lib/MC/Android.mk
lib/MC/MCAssembler.cpp - put back pointer param (from reference).
lib/Support/DeltaAlgorithm.cpp - iterator -> const_iterator !
lib/TableGen/Android.mk
lib/Target/ARM/ARMJITInfo.cpp - Removed unused legacy JIT changes
lib/Target/ARM/Android.mk
lib/Target/ARM/AsmParser/Android.mk
lib/Target/ARM/Disassembler/Android.mk
lib/Target/ARM/MCTargetDesc/Android.mk
lib/Target/Android.mk
lib/Target/Mips/Android.mk
lib/Target/Mips/Disassembler/Android.mk
lib/Target/Mips/MCTargetDesc/Android.mk
lib/Target/X86/Android.mk
lib/Target/X86/AsmParser/Android.mk
lib/Target/X86/Disassembler/Android.mk
lib/Transforms/IPO/Android.mk
lib/Transforms/Instrumentation/Android.mk
lib/Transforms/Scalar/Android.mk
lib/Transforms/Utils/Android.mk
lib/Transforms/Vectorize/Android.mk
lib/VMCore/Android.mk - moved to lib/IR
llvm-gen-intrinsics.mk - new Intrinsics.td location
utils/TableGen/Android.mk

Change-Id: Ifebdb1716c372fd917a844c44be9d10df66434b0
RMJITInfo.cpp
ndroid.mk
smParser/Android.mk
isassembler/Android.mk
CTargetDesc/Android.mk
059800f9e3fee2852672f846d91a2da14da7783a 21-Jan-2013 Stephen Hines <srhines@google.com> Merge remote-tracking branch 'upstream/master' into merge-llvm

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
lib/MC/MCAssembler.cpp
lib/Support/Atomic.cpp
lib/Support/Memory.cpp
lib/Target/ARM/ARMJITInfo.cpp

Change-Id: Ib339baf88df5b04870c8df1bedcfe1f877ccab8d
19d54337169ae4af2d44ae39664d0bac1ae0309c 14-Jan-2013 Quentin Colombet <qcolombet@apple.com> Follow up of commit r172472.
Refactor the big if/else sequence into one string switch for ARM subtype selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172475 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
398db9368d72d1d60d40b2e18c16ca2c14aa7f39 14-Jan-2013 Quentin Colombet <qcolombet@apple.com> Complete the existing support of ARM v6m, v7m, and v7em, i.e., respectively cortex-m0, cortex-m3, and cortex-m4 on the backend side.

Adds new subtype values for the MachO format and use them when the related triple are set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172472 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
5573de8493ac11564fba02b7407176a98b45d7ce 09-Jan-2013 Joel Jones <joel_k_jones@apple.com> Fix description of ARMOperand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172011 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
14925e6b885f8bd8cf448627386d412831f4bf1b 09-Jan-2013 Nadav Rotem <nrotem@apple.com> ARM Cost model: Use the size of vector registers and widest vectorizable instruction to determine the max vectorization factor.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172010 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
1ced208be9cab0f994c5df9000da36bc313b2507 09-Jan-2013 Eric Christopher <echristo@gmail.com> Last in the series of removing unnecessary '0' arguments for
address space. Reordered the EmitULEB128IntValue arguments to
make this easier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171949 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmParser.cpp
47579cf390c42e0577519e0a2b6044baece9df00 09-Jan-2013 Andrew Trick <atrick@apple.com> MIsched: add an ILP window property to machine model.

This was an experimental option, but needs to be defined
per-target. e.g. PPC A2 needs to aggressively hide latency.

I converted some in-order scheduling tests to A2. Hal is working on
more test cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171946 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
68ca56285f9b6e82eb16ff8ea02a301f2c489fae 09-Jan-2013 Eric Christopher <echristo@gmail.com> These functions have default arguments of 0 for the last arg. Use
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171933 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
83be7b0dd3ae9a3cb22d36ae4c1775972553b94b 09-Jan-2013 Nadav Rotem <nrotem@apple.com> Cost Model: Move the 'max unroll factor' variable to the TTI and add initial Cost Model support on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171928 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
251040bc18eedfa56d01fe92836e55cfd8c5d990 08-Jan-2013 Eli Bendersky <eliben@google.com> Renamed MCInstFragment to MCRelaxableFragment and added some comments.

No change in functionality.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171822 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
00b53c1ad717056e4f0e06a93d907b09ba1e5154 07-Jan-2013 Jim Grosbach <grosbach@apple.com> ARM: Copy-paste error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171790 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.h
54f2187eacaa962fe9b25708c9ea01ec2b19dba3 07-Jan-2013 Jim Grosbach <grosbach@apple.com> ARM: Fix a few copy-paste errors.

s/X86/ARM/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171789 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
3ebe59c892051375623fea55e977ff559fdb3323 07-Jan-2013 Jordan Rose <jordan_rose@apple.com> Change SMRange to be half-open (exclusive end) instead of closed (inclusive)

This is necessary not only for representing empty ranges, but for handling
multibyte characters in the input. (If the end pointer in a range refers to
a multibyte character, should it point to the beginning or the end of the
character in a char array?) Some of the code in the asm parsers was already
assuming this anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171765 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0c63e64af6b2b25f44e33dcdf0b42968cbd0a581 07-Jan-2013 Tim Northover <Tim.Northover@arm.com> Add LICENSE.TXT covering contributions made by ARM.

Absent a Contributor's License Agreement (CLA) with an LLVM legal entity and as
reviewed and agreed with Chris Lattner, add a patent license covering future
contributions from ARM until there is a CLA. This is to make explicit ARM's
grant of patent rights to recipients of LLVM containing ARM-contributed
material.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171721 91177308-0d34-0410-b5e6-96231b3b80d8
ICENSE.TXT
be04929f7fd76a921540e9901f24563e51dc1219 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move TargetTransformInfo to live under the Analysis library. This no
longer would violate any dependency layering and it is in fact an
analysis. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171686 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetTransformInfo.cpp
aeef83c6afa1e18d1cf9d359cc678ca0ad556175 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch TargetTransformInfo from an immutable analysis pass that requires
a TargetMachine to construct (and thus isn't always available), to an
analysis group that supports layered implementations much like
AliasAnalysis does. This is a pretty massive change, with a few parts
that I was unable to easily separate (sorry), so I'll walk through it.

The first step of this conversion was to make TargetTransformInfo an
analysis group, and to sink the nonce implementations in
ScalarTargetTransformInfo and VectorTargetTranformInfo into
a NoTargetTransformInfo pass. This allows other passes to add a hard
requirement on TTI, and assume they will always get at least on
implementation.

The TargetTransformInfo analysis group leverages the delegation chaining
trick that AliasAnalysis uses, where the base class for the analysis
group delegates to the previous analysis *pass*, allowing all but tho
NoFoo analysis passes to only implement the parts of the interfaces they
support. It also introduces a new trick where each pass in the group
retains a pointer to the top-most pass that has been initialized. This
allows passes to implement one API in terms of another API and benefit
when some other pass above them in the stack has more precise results
for the second API.

The second step of this conversion is to create a pass that implements
the TargetTransformInfo analysis using the target-independent
abstractions in the code generator. This replaces the
ScalarTargetTransformImpl and VectorTargetTransformImpl classes in
lib/Target with a single pass in lib/CodeGen called
BasicTargetTransformInfo. This class actually provides most of the TTI
functionality, basing it upon the TargetLowering abstraction and other
information in the target independent code generator.

The third step of the conversion adds support to all TargetMachines to
register custom analysis passes. This allows building those passes with
access to TargetLowering or other target-specific classes, and it also
allows each target to customize the set of analysis passes desired in
the pass manager. The baseline LLVMTargetMachine implements this
interface to add the BasicTTI pass to the pass manager, and all of the
tools that want to support target-aware TTI passes call this routine on
whatever target machine they end up with to add the appropriate passes.

The fourth step of the conversion created target-specific TTI analysis
passes for the X86 and ARM backends. These passes contain the custom
logic that was previously in their extensions of the
ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces.
I separated them into their own file, as now all of the interface bits
are private and they just expose a function to create the pass itself.
Then I extended these target machines to set up a custom set of analysis
passes, first adding BasicTTI as a fallback, and then adding their
customized TTI implementations.

The fourth step required logic that was shared between the target
independent layer and the specific targets to move to a different
interface, as they no longer derive from each other. As a consequence,
a helper functions were added to TargetLowering representing the common
logic needed both in the target implementation and the codegen
implementation of the TTI pass. While technically this is the only
change that could have been committed separately, it would have been
a nightmare to extract.

The final step of the conversion was just to delete all the old
boilerplate. This got rid of the ScalarTargetTransformInfo and
VectorTargetTransformInfo classes, all of the support in all of the
targets for producing instances of them, and all of the support in the
tools for manually constructing a pass based around them.

Now that TTI is a relatively normal analysis group, two things become
straightforward. First, we can sink it into lib/Analysis which is a more
natural layer for it to live. Second, clients of this interface can
depend on it *always* being available which will simplify their code and
behavior. These (and other) simplifications will follow in subsequent
commits, this one is clearly big enough.

Finally, I'm very aware that much of the comments and documentation
needs to be updated. As soon as I had this working, and plausibly well
commented, I wanted to get it committed and in front of the build bots.
I'll be doing a few passes over documentation later if it sticks.

Commits to update DragonEgg and Clang will be made presently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelLowering.cpp
RMISelLowering.h
RMTargetMachine.cpp
RMTargetMachine.h
RMTargetTransformInfo.cpp
MakeLists.txt
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCallingConv.h
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMMCInstLower.cpp
RMSelectionDAGInfo.cpp
RMSubtarget.cpp
RMTargetMachine.h
argetInfo/ARMTargetInfo.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
humb2SizeReduction.cpp
58a2cbef4aac9ee7d530dfb690c78d6fc11a2371 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Resort the #include lines in include/... and lib/... with the
utils/sort_includes.py script.

Most of these are updating the new R600 target and fixing up a few
regressions that have creeped in since the last time I sorted the
includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171362 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
humb2SizeReduction.cpp
8b62abdd7b9c8fc5d78dad86093f4afdfeba949d 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove the Function::getRetAttributes method in favor of using the AttributeSet accessor method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171256 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
831737d329a727f53a1fb0572f7b7a8127208881 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Remove the Function::getFnAttributes method in favor of using the AttributeSet
directly.

This is in preparation for removing the use of the 'Attribute' class as a
collection of attributes. That will shift to the AttributeSet class instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171253 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
humb2SizeReduction.cpp
791dbb3e5fbe5910b84e3f2bd26cf272e2bde128 24-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Use a std::string rather than a dynamically allocated char* buffer.

This affords us to use std::string's allocation routines and use the destructor
for the memory management. Switching to that also means that we can use
operator==(const std::string&, const char *) to perform the string comparison
rather than resorting to libc functionality (i.e. strcmp).

Patch by Saleem Abdulrasool!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171042 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
4e23ebe7665f2e03c0bb8db3ae5ab90eb0f724e5 21-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Cleanup compiler warnings on discarding type qualifiers in casts. Switch to C++ style casts.

Patch by Saleem Abdulrasool!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170917 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
38b06020dbd804f01ee3802779a52c05cffdf87d 21-Dec-2012 Roman Divacky <rdivacky@freebsd.org> Remove duplicate includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170902 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMMCTargetDesc.cpp
e0f1d712f656d3f958b616013f1d6008c5678949 21-Dec-2012 Quentin Colombet <qcolombet@apple.com> Add ARM cortex-r5 subtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170840 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
be06aacaa9a270384599bbfa850b967e9996b9fb 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to MI::copyImplicitOps().

This function is often used to decorate dangling instructions, so a
context reference is required to allocate memory for the operands.

Also add a corresponding MachineInstrBuilder method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170797 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMLoadStoreOptimizer.cpp
humb1FrameLowering.cpp
b9efafe54d61e85ca5209c4043aa814f89785195 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineInstrBuilderize ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170795 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
103b4a571ef01e4717c3c6d9db6506a3abd6cc0b 20-Dec-2012 Bob Wilson <bob.wilson@apple.com> Revert "Adding support for llvm.arm.neon.vaddl[su].* and"

This reverts r170694. The operations can be represented in IR without
adding any new intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170765 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
139e407d526193017d42473c8d4892933de78f14 20-Dec-2012 Evan Cheng <evan.cheng@apple.com> On some ARM cpus, flags setting movs with shifter operand, i.e. lsl, lsr, asr,
are more expensive than the non-flag setting variant. Teach thumb2 size
reduction pass to avoid generating them unless we are optimizing for size.

rdar://12892707


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170728 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
humb2SizeReduction.cpp
6af228a92a7b8414fa3c1b3c37ee659d32e66e1b 20-Dec-2012 Roman Divacky <rdivacky@freebsd.org> Remove MCTargetAsmLexer and its derived classes now that edis,
its only user, is gone.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170699 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
smParser/CMakeLists.txt
332bd799512142e23d35105483520acbffff72c8 20-Dec-2012 Renato Golin <rengolin@systemcall.org> Adding support for llvm.arm.neon.vaddl[su].* and
llvm.arm.neon.vsub[su].* intrinsics.

Patch by Pete Couperus <pjcoup@gmail.com>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170694 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
fbf3b4a07690751f72302757058ab0298dfb832e 20-Dec-2012 Jim Grosbach <grosbach@apple.com> MC: Add MCInstrDesc::mayAffectControlFlow() method.

MC disassembler clients (LLDB) are interested in querying if an
instruction may affect control flow other than by virtue of being
an explicit branch instruction. For example, instructions which
write directly to the PC on some architectures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170610 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
CTargetDesc/ARMMCTargetDesc.cpp
37a942cd52725b1d390989a8267a764b42fcb5d3 19-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the explicit MachineInstrBuilder(MI) constructor.

Use the version that also takes an MF reference instead.

It would technically be possible to extract an MF reference from the MI
as MI->getParent()->getParent(), but that would not work for MIs that
are not inserted into any basic block.

Given the reasonably small number of places this constructor was used at
all, I preferred the compile time check to a run time assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170588 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelLowering.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
733c6b1db1a9a3f78da4fece933ccc7e509bfba0 19-Dec-2012 Evan Cheng <evan.cheng@apple.com> LLVM sdisel normalize bit extraction of the form:
((x & 0xff00) >> 8) << 2
to
(x >> 6) & 0x3fc

This is general goodness since it folds a left shift into the mask. However,
the trailing zeros in the mask prevents the ARM backend from using the bit
extraction instructions. And worse since the mask materialization may require
an addition instruction. This comes up fairly frequently when the result of
the bit twiddling is used as memory address. e.g.

= ptr[(x & 0xFF0000) >> 16]

We want to generate:
ubfx r3, r1, #16, #8
ldr.w r3, [r0, r3, lsl #2]

vs.
mov.w r9, #1020
and.w r2, r9, r1, lsr #14
ldr r2, [r0, r2]

Add a late ARM specific isel optimization to
ARMDAGToDAGISel::PreprocessISelDAG(). It folds the left shift to the
'base + offset' address computation; change the mask to one which doesn't have
trailing zeros and enable the use of ubfx.

Note the optimization has to be done late since it's target specific and we
don't want to change the DAG normalization. It's also fairly restrictive
as shifter operands are not always free. It's only done for lsh 1 / 2. It's
known to be free on some cpus and they are most common for address
computation.

This is a slight win for blowfish, rijndael, etc.

rdar://12870177


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170581 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
759e3fa641d0ad01012d16d913015c9f69c8d2ab 19-Dec-2012 Roman Divacky <rdivacky@freebsd.org> Remove edis - the enhanced disassembler. Fixes PR14654.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170578 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
isassembler/ARMDisassembler.cpp
akefile
0340557fb830e3669c4c48a2cd99d7703bdda452 19-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::findRepresentativeClass to take an MVT, instead
of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170532 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
034b94b17006f51722886b0f2283fb6fb19aca1f 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
humb2SizeReduction.cpp
b519351b87204966d6548b198b88f2ab0f4d0b4b 18-Dec-2012 Quentin Colombet <qcolombet@apple.com> Disable ARM partial flag dependency optimization at -Oz

To not over constrain the scheduler for ARM in thumb mode, some optimizations for code size reduction, specific to ARM thumb, are blocked when they add a dependency (like write after read dependency).

Disables this check when code size is the priority, i.e., code is compiled with -Oz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170462 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
bcc9a89c16269cead71ba1f7063a8fb83fb8f57f 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Repair bundles that were broken by removing and reinserting the first
instruction.

This isn't strictly necessary at the moment because Thumb2SizeReduction
also copies all MI flags from the old instruction to the new. However, a
future patch will make that kind of direct flag tampering illegal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170395 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
8413d2c70fe9c6b6edc1037c4bab3c42fe4b0f5d 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract a method, no functional change intended.

Sadly, this costs us a perfectly good opportunity to use 'goto'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170385 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
6290b936bf71fded40b8b765f8f7aef577fada24 17-Dec-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Minor cleanup. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170379 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
316a5aa0a510e6183dd1981dd8bf328ffe7361f5 17-Dec-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Fast-isel only handles simple VTs, so make sure the necessary
checks are in place. Some minor cleanup as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170360 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3d170e64ca1af491e2aa58f882f93b8e8111eef8 17-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Revert/correct some FastISel changes in r170104 (EVT->MVT for
TargetLowering::getRegClassFor).

Some isSimple() guards were missing, or getSimpleVT() were hoisted too
far, resulting in asserts on valid LLVM assembly input.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170336 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a827a47923700c16256036ca0bda8c0ff6108fdb 15-Dec-2012 Kevin Enderby <enderby@apple.com> Make sure the alternate PC+imm syntax of LDR instruction with a small
immediate generates the narrow version. Needed when doing round-trip
assemble/disassemble testing using the alternate syntax that specifies
'pc' directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170255 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a61b17c18a67f1b3faef2f2108379c4337ce9bb7 13-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.

Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.

This is the first, in a series of patches.

This is the second attempt. In the first attempt (r169837), a few
getSimpleVT() were hoisted too far, detected by bootstrap failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170104 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
37c7461fc3f1983a81bfe934855d707fd6572e78 12-Dec-2012 Logan Chien <tzuhsiang.chien@gmail.com> Add ARM NONE and PREL31 relocation types.

Add R_ARM_NONE and R_ARM_PREL31 relocation types
to MCExpr. Both of them will be used while
generating .ARM.extab and .ARM.exidx sections.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169965 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
946a3a9f22c967d5432eaab5fa464b91343477cd 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Sorry about the churn. One more change to getOptimalMemOpType() hook. Did I
mention the inline memcpy / memset expansion code is a mess?

This patch split the ZeroOrLdSrc argument into two: IsMemset and ZeroMemset.
The first indicates whether it is expanding a memset or a memcpy / memmove.
The later is whether the memset is a memset of zero. It's totally possible
(likely even) that targets may want to do different things for memcpy and
memset of zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169959 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
7d34267df63e23be1957f738de783c145febb7af 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> - Rename isLegalMemOpType to isSafeMemOpType. "Legal" is a very overloade term.
Also added more comments to explain why it is generally ok to return true.
- Rename getOptimalMemOpType argument IsZeroVal to ZeroOrLdSrc. It's meant to
be true for loaded source (memcpy) or zero constants (memset). The poor name
choice is probably some kind of legacy issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169954 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
61f4dfe3693bf68b20748d82ac4dd9bf2f356699 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Avoid using lossy load / stores for memcpy / memset expansion. e.g.
f64 load / store on non-SSE2 x86 targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169944 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e202f8c3eeff6948f5df97958e243480020295cc 12-Dec-2012 Jim Grosbach <grosbach@apple.com> Trim unneeded header #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169933 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c8cd8aa9d8582d2632db8fee8b2932efcdec34f1 12-Dec-2012 Jim Grosbach <grosbach@apple.com> ARM: Remove old testing option.

Pre-regalloc frame allocation and referencing has been on by default
for ages. No need for the testing option that disables it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169931 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
48aa2cf76da5f9354f84329de798e00cbe7206da 12-Dec-2012 Jim Grosbach <grosbach@apple.com> ARM: Remove old testing options.

Base pointer referencing has been enabled for ages.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169930 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e07f85eb76a0254d3adbdf8b5d61ff5c07858cef 12-Dec-2012 Evan Cheng <evan.cheng@apple.com> Replace TargetLowering::isIntImmLegal() with
ScalarTargetTransformInfo::getIntImmCost() instead. "Legal" is a poorly defined
term for something like integer immediate materialization. It is always possible
to materialize an integer immediate. Whether to use it for memcpy expansion is
more a "cost" conceern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169929 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMTargetMachine.h
34525f9ac098c1c6bc9002886d6da3039a284fd2 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Revert EVT->MVT changes, r169836-169851, due to buildbot failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169854 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
bade0345d190427a08b2b947bc94f4d8ca5d7717 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::findRepresentativeClass to take an MVT, instead
of EVT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169845 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
8163ca76f0b0d336c5436364ffb3b85be1162e7a 11-Dec-2012 Patrik Hagglund <patrik.h.hagglund@ericsson.com> Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.

Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.

This is the first, in a series of patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169837 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
6a1b5cc7c60d54608bbe579b06497b7ade42dbc8 11-Dec-2012 Evan Cheng <evan.cheng@apple.com> Stylistic tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169811 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
425e951734c3a0615e22ec94ffa51cc16ce6e483 11-Dec-2012 Chad Rosier <mcrosier@apple.com> Fall back to the selection dag isel to select tail calls.

This shouldn't affect codegen for -O0 compiles as tail call markers are not
emitted in unoptimized compiles. Testing with the external/internal nightly
test suite reveals no change in compile time performance. Testing with -O1,
-O2 and -O3 with fast-isel enabled did not cause any compile-time or
execution-time failures. All tests were performed on my x86 machine.
I'll monitor our arm testers to ensure no regressions occur there.

In an upcoming clang patch I will be marking the objc_autoreleaseReturnValue
and objc_retainAutoreleaseReturnValue as tail calls unconditionally. While
it's theoretically true that this is just an optimization, it's an
optimization that we very much want to happen even at -O0, or else ARC
applications become substantially harder to debug.

Part of rdar://12553082

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169796 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMISelLowering.cpp
RMISelLowering.h
RMInstrThumb2.td
0c66e07863f2bcb054ffc4d58ae30a048b7406c7 08-Dec-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify code. Sort includes. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169676 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
0956ae5ac2d5fac56248a03a9dd8caa398a39cc5 08-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Fix a use-after-free bug found by ASan. You can't assign a temporary
std::string to a StringRef. Moreover, the method being called accepts
a Twine to simplify these patterns.

Fixes this ASan failure:
==6312== ERROR: AddressSanitizer: heap-use-after-free on address 0x7fd558b1af58 at pc 0xcb7529 bp 0x7fffff572080 sp 0x7fffff572078
READ of size 1 at 0x7fd558b1af58 thread T0
#0 0xcb7528 .../llvm/include/llvm/ADT/StringRef.h:192 llvm::StringRef::operator[]()
#1 0x1d53c0a .../llvm/include/llvm/ADT/StringExtras.h:128 llvm::HashString()
#2 0x1d53878 .../llvm/lib/Support/StringMap.cpp:64 llvm::StringMapImpl::LookupBucketFor()
#3 0x1b6872f .../llvm/include/llvm/ADT/StringMap.h:352 llvm::StringMap<>::GetOrCreateValue<>()
#4 0x1b61836 .../llvm/lib/MC/MCContext.cpp:109 llvm::MCContext::GetOrCreateSymbol()
#5 0xe9fd47 .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:154 (anonymous namespace)::ARMELFStreamer::EmitMappingSymbol()
#6 0xea01dd .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:133 (anonymous namespace)::ARMELFStreamer::EmitDataMappingSymbol()
#7 0xe9f78b .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:91 (anonymous namespace)::ARMELFStreamer::EmitBytes()
#8 0x1b15d82 .../llvm/lib/MC/MCStreamer.cpp:89 llvm::MCStreamer::EmitIntValue()
#9 0xcc0f9b .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:713 llvm::ARMAsmPrinter::emitAttributes()
#10 0xcc0d44 .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:632 llvm::ARMAsmPrinter::EmitStartOfAsmFile()
#11 0x14692ad .../llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:162 llvm::AsmPrinter::doInitialization()
#12 0x1bc4677 .../llvm/lib/VMCore/PassManager.cpp:1561 llvm::FPPassManager::doInitialization()
#13 0x1bc4990 .../llvm/lib/VMCore/PassManager.cpp:1595 llvm::MPPassManager::runOnModule()
#14 0x1bc55e5 .../llvm/lib/VMCore/PassManager.cpp:1705 llvm::PassManagerImpl::run()
#15 0x1bc5878 .../llvm/lib/VMCore/PassManager.cpp:1740 llvm::PassManager::run()
#16 0xc3954d .../llvm/tools/llc/llc.cpp:378 compileModule()
#17 0xc38001 .../llvm/tools/llc/llc.cpp:194 main
#18 0x7fd557d6a11c __libc_start_main
0x7fd558b1af58 is located 24 bytes inside of 29-byte region [0x7fd558b1af40,0x7fd558b1af5d)
freed by thread T0 here:
#0 0xc337da .../llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:56 operator delete()
#1 0x1ee9cef .../libstdc++-v3/include/bits/basic_string.h:535 std::string::~string()
#2 0xea01dd .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:133 (anonymous namespace)::ARMELFStreamer::EmitDataMappingSymbol()
#3 0xe9f78b .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:91 (anonymous namespace)::ARMELFStreamer::EmitBytes()
#4 0x1b15d82 .../llvm/lib/MC/MCStreamer.cpp:89 llvm::MCStreamer::EmitIntValue()
#5 0xcc0f9b .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:713 llvm::ARMAsmPrinter::emitAttributes()
#6 0xcc0d44 .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:632 llvm::ARMAsmPrinter::EmitStartOfAsmFile()
#7 0x14692ad .../llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:162 llvm::AsmPrinter::doInitialization()
#8 0x1bc4677 .../llvm/lib/VMCore/PassManager.cpp:1561 llvm::FPPassManager::doInitialization()
#9 0x1bc4990 .../llvm/lib/VMCore/PassManager.cpp:1595 llvm::MPPassManager::runOnModule()
#10 0x1bc55e5 .../llvm/lib/VMCore/PassManager.cpp:1705 llvm::PassManagerImpl::run()
#11 0x1bc5878 .../llvm/lib/VMCore/PassManager.cpp:1740 llvm::PassManager::run()
#12 0xc3954d .../llvm/tools/llc/llc.cpp:378 compileModule()
#13 0xc38001 .../llvm/tools/llc/llc.cpp:194 main
#14 0x7fd557d6a11c __libc_start_main

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169668 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
6eb3e87df04f8b035562d9865292c23f5b79f1a2 07-Dec-2012 Tim Northover <Tim.Northover@arm.com> Added Mapping Symbols for ARM ELF

Before this patch, when you objdump an LLVM-compiled file, objdump tried to
decode data-in-code sections as if they were code. This patch adds the missing
Mapping Symbols, as defined by "ELF for the ARM Architecture" (ARM IHI 0044D).

Patch based on work by Greg Fitzgerald.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169609 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFStreamer.cpp
CTargetDesc/ARMELFStreamer.h
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/CMakeLists.txt
c4e8ddff0c29bfc2eb1d5bf13e947bd04d4454ff 07-Dec-2012 Matt Beaumont-Gay <matthewbg@google.com> Add a 'using' declaration to suppress GCC's -Woverloaded-virtual while we
decide what pattern we want to follow in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169561 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
2766a47310b05228e9bbc536d9f3a593fc31cd12 06-Dec-2012 Evan Cheng <evan.cheng@apple.com> Replace r169459 with something safer. Rather than having computeMaskedBits to
understand target implementation of any_extend / extload, just generate
zero_extend in place of any_extend for liveouts when the target knows the
zero_extend will be implicit (e.g. ARM ldrb / ldrh) or folded (e.g. x86 movz).

rdar://12771555


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169536 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c9758b13668013dea491a08b4f0c9256263927c2 06-Dec-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Make the fast-isel implementation of memcpy respect alignment.
rdar://12821569

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169460 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8a7186dbc2df4879f511b2ae6f2bce25ad37d965 06-Dec-2012 Evan Cheng <evan.cheng@apple.com> Let targets provide hooks that compute known zero and ones for any_extend
and extload's. If they are implemented as zero-extend, or implicitly
zero-extend, then this can enable more demanded bits optimizations. e.g.

define void @foo(i16* %ptr, i32 %a) nounwind {
entry:
%tmp1 = icmp ult i32 %a, 100
br i1 %tmp1, label %bb1, label %bb2
bb1:
%tmp2 = load i16* %ptr, align 2
br label %bb2
bb2:
%tmp3 = phi i16 [ 0, %entry ], [ %tmp2, %bb1 ]
%cmp = icmp ult i16 %tmp3, 24
br i1 %cmp, label %bb3, label %exit
bb3:
call void @bar() nounwind
br label %exit
exit:
ret void
}

This compiles to the followings before:
push {lr}
mov r2, #0
cmp r1, #99
bhi LBB0_2
@ BB#1: @ %bb1
ldrh r2, [r0]
LBB0_2: @ %bb2
uxth r0, r2
cmp r0, #23
bhi LBB0_4
@ BB#3: @ %bb3
bl _bar
LBB0_4: @ %exit
pop {lr}
bx lr

The uxth is not needed since ldrh implicitly zero-extend the high bits. With
this change it's eliminated.

rdar://12771555


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
f2a1c83c86ceefb9a241aa728d1d1239a64b894e 05-Dec-2012 David Sehr <sehr@google.com> Correct ARM NOP encoding

The encoding of NOP in ARMAsmBackend.cpp is missing a trailing zero, which
causes the emission of a coprocessor instruction rather than "mov r0, r0"
as indicated in the comment. The test also checks for the wrong encoding.

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20121203/157919.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169420 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
14ccc9007a932a23201251ced4be4c898a62d6a5 05-Dec-2012 Kevin Enderby <enderby@apple.com> Added a option to the disassembler to print immediates as hex.

This is for the lldb team so most of but not all of the values are
to be printed as hex with this option. Some small values like the
scale in an X86 address were requested to printed in decimal
without the leading 0x.

There may be some tweaks need to places that may still be in
decimal that they want in hex. Specially for arm. I made my best
guess. Any tweaks from here should be simple.

I also did the best I know now with help from the C++ gurus
creating the cleanest formatImm() utility function and containing
the changes. But if someone has a better idea to make something
cleaner I'm all ears and game for changing the implementation.

rdar://8109283



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169393 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
105ab4fe4bffcaf339e4943b98c6155a0883284a 05-Dec-2012 Matt Beaumont-Gay <matthewbg@google.com> Appease GCC's -Wparentheses.

(TIL that Clang's -Wparentheses ignores 'x || y && "foo"' on purpose. Neat.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169337 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c8e7045c8a3b3fb9ee8f4a7d4d4a52a46b3d420a 04-Dec-2012 Evan Cheng <evan.cheng@apple.com> ARM custom lower ctpop for vector types. Patch by Pete Couperus.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169325 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f659c0de6c7a4684a2a30c344ce6827ea87032d8 04-Dec-2012 Eli Bendersky <eliben@google.com> Make NaCl naming consistent. The triple OSType is called NaCl and is represented
textually as NativeClient. Also added a link to the native client project for
readers unfamiliar with it.

A Clang patch will follow shortly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169291 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
a1514e24cc24b050f53a12650e047799358833a1 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort includes for all of the .h files under the 'lib' tree. These were
missed in the first pass because the script didn't yet handle include
guards.

Note that the script is now able to handle all of these headers without
manual edits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMISelLowering.h
RMJITInfo.h
RMMachineFunctionInfo.h
RMSubtarget.h
RMTargetMachine.h
f71415646053e66f8a5b63a74ac06287eeab53d5 04-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the old TRI::ResolveRegAllocHint() and getRawAllocationOrder() hooks.

These functions have been replaced by TRI::getRegAllocationHints() which
provides the same capabilities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169192 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
303da1baf2a90d18a709f29f4f7cd0e1962be5f9 03-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement ARMBaseRegisterInfo::getRegAllocationHints().

This provides the same functionality as getRawAllocationOrder() for the
even/odd hints, but without the many constant register arrays.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169169 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMMCInstLower.cpp
RMSelectionDAGInfo.cpp
RMSubtarget.cpp
RMTargetMachine.cpp
RMTargetObjectFile.cpp
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCExpr.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMachObjectWriter.cpp
LxExpansionPass.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2ITBlockPass.cpp
humb2RegisterInfo.cpp
humb2SizeReduction.cpp
cb4953089bb845afedeaaf5dfd03d8d5639fd656 30-Nov-2012 Sebastian Pop <spop@codeaurora.org> Codegen failure for vmull with small vectors

Codegen was failing with an assertion because of unexpected vector
operands when legalizing the selection DAG for a MUL instruction.

The asserting code was legalizing multiplies for vectors of size 128
bits. It uses a custom lowering to try and detect cases where it can
use a VMULL instruction instead of a VMOVL + VMUL. The code was
looking for input operands to the MUL that had been sign or zero
extended. If it found the extended operands it would drop the
sign/zero extension and use the original vector size as input to a
VMULL instruction.

The code assumed that the original input vector was 64 bits so that
after dropping the extension it would fit directly into a D register
and could be used as an operand of a VMULL instruction. The input
code that trigger the failure used a vector of <4 x i8> that was
sign extended to <4 x i32>. It was not safe to drop the sign
extension in this case because the original vector is only 32 bits
wide. The fix is to insert a sign extension for the vector to reach
the required 64 bit size. In this particular example, the vector would
need to be sign extented to a <4 x i16>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169024 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1c83093cd5f4f6d33e732c817bb5afd033531beb 30-Nov-2012 Kevin Enderby <enderby@apple.com> Fixed the arm disassembly of invalid BFI instructions to not build a bad MCInst
which would then cause an assert when printed. rdar://11437956


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168960 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
8facb9ecf21fc97409121842882dbc1dfd87b944 29-Nov-2012 Quentin Colombet <qcolombet@apple.com> Add cortex-a5 subtarget to the supported ARM architectures

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168933 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
35b3df6e31f9aac70fb471d74e39f899dfbd689f 29-Nov-2012 Silviu Baranga <silviu.baranga@arm.com> Added atomic 64 min/max/umin/umax instrinsics support in the ARM backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168886 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
350c00843bad22c5391e33e9e39a78d5d0983c8c 28-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> ARM: Implement CanLowerReturn so large vectors get expanded into sret.

Fixes 14337.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168809 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
a9fa4fd9736f7d1066223f32fa54efbe86c0fceb 28-Nov-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove all references to TargetInstrInfoImpl.

This class has been merged into its super-class TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168760 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb2InstrInfo.cpp
6e99a8cb37916dbd2fcc9d150fee006d383a4c54 27-Nov-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Appease the machine verifier by using the proper register
classes. The vast majority of the remaining issues are due to uses of
invalid registers, which are defined by getRegForValue(). Those will be
a little more challenging to cleanup.
rdar://12719844


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168735 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b1146a242c423a1f703ccdf75f1a7c6649d60f72 27-Nov-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Appease the machine verifier by using the proper register
classes.
rdar://12719844


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168733 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ac3158b5718ad724a02694c9f1c08bbfaf5fec11 27-Nov-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Appease the machine verifier by using the proper register
classes. Also a bit of cleanup.
rdar://12719844


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168728 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fc17ddd889e3dcb608e8e97c4c791755c21d7b14 27-Nov-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Appease the machine verifier by using the proper register
classes. The associated test case still doesn't pass, but it does have far
fewer issues.
rdar://12719844

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168657 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ed9e442cf098663ce213cb16778b44be466b441f 26-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> Decouple MCInstBuilder from the streamer per Eli's request.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168597 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
391271f3bbcec02e0da26d7c246bfabff5cb4ddf 26-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> Add MCInstBuilder, a utility class to simplify MCInst creation similar to MachineInstrBuilder.

Simplify some repetitive code with it. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168587 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
cb4028b91d7c1b0163d1b6c85911668d3d19c75a 24-Nov-2012 Benjamin Kramer <benny.kra@googlemail.com> ARM: Share applyFixup between ELF and Darwin.

The implementations already diverged a bit, merge them back together.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168542 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
43147afd71f6da4e7369a4ab9c681e5b4e0cf8c7 17-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Mark FP_EXTEND form v2f32 to v2f64 as "expand" for ARM NEON. Patch by Pete Couperus.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168240 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8b149cbfc6cb420016eff52f6380d1eba5daea20 17-Nov-2012 Weiming Zhao <weimingz@codeaurora.org> Rename methods like PairSRegs() to createSRegpairNode() to meet our coding
style requirement.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168229 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e56764bad10621ac9dcf9d3541533ff2cb0f88b4 16-Nov-2012 Weiming Zhao <weimingz@codeaurora.org> Remove hard coded registers in ARM ldrexd and strexd instructions

This patch replaces the hard coded GPR pair [R0, R1] of
Intrinsic:arm_ldrexd and [R2, R3] of Intrinsic:arm_strexd with
even/odd GPRPair reg class.
Similar to the lowering of atomic_64 operation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168207 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
b1a392e7c50da5789cf5da879c5b81b72c751c21 16-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Make sure FABS on v2f32 and v4f32 is legal on ARM NEON
This fixes PR14359


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168200 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
846ce8ea67362d8b6d93ebae66f23e3c68dce9df 15-Nov-2012 Eli Friedman <eli.friedman@gmail.com> Mark FP_ROUND for converting NEON v2f64 to v2f32 as expand. Add a missing
case to vector legalization so this actually works.

Patch by Pete Couperus. Fixes PR12540.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168107 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
79c07d2a36282b09b9c5d0aa65ebf4bff017621b 15-Nov-2012 Dmitri Gribenko <gribozavr@gmail.com> Use empty parens for empty function parameter list instead of '(void)'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168049 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
RMISelLowering.h
116bd168e1dd46ed5b1b46aabfc566128836fb70 15-Nov-2012 Craig Topper <craig.topper@gmail.com> Revert changing FNEG of v4f32 to Expand. It's legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168030 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b916904e685208a815a32e1ef24c1b49b3abb0cd 15-Nov-2012 Craig Topper <craig.topper@gmail.com> Make FNEG and FABS of v4f32 Expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168029 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
490104720db9e1e0eb9cc27e88e2d7288ac27ff0 15-Nov-2012 Craig Topper <craig.topper@gmail.com> Add llvm.ceil, llvm.trunc, llvm.rint, llvm.nearbyint intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168025 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
25efd6d556718295a63d37f5294985746af354f6 14-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Use TARGET2 relocation for TType references on ARM.
Do some cleanup of the code while here.

Inspired by patch by Logan Chien!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167904 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
RMTargetObjectFile.h
9b5caaa9c452f262a52dd5ac7ebbc722da5a63de 12-Nov-2012 Andrew Trick <atrick@apple.com> misched: Target-independent support for load/store clustering.

This infrastructure is generally useful for any target that wants to
strongly prefer two instructions to be adjacent after scheduling.

A following checkin will add target-specific hooks with unit
tests. Then this feature will be enabled by default with misched.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167742 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
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
RMAsmPrinter.cpp
RMISelLowering.cpp
RMInstrThumb2.td
12cfa119600418d31ceb748d077b3e6f7057a22a 09-Nov-2012 Anton Korobeynikov <asl@math.spbu.ru> Add ARM TARGET2 relocation. The testcase will follow with actualy use-case.
Based on the patch by Logan Chien!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167633 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
b3235b128f383559a7a9b9119896e406b347879c 09-Nov-2012 Chad Rosier <mcrosier@apple.com> Revert r167620; this can be implemented using an existing CL option.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167622 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
d054eda44114df411a2749e7b6b85d27509a0af1 09-Nov-2012 Chad Rosier <mcrosier@apple.com> Add support for -mstrict-align compiler option for ARM targets.
rdar://12340498


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167620 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
214fd3d2449738bbe0215dce24406dc29d9e49f7 08-Nov-2012 Amara Emerson <amara.emerson@arm.com> Recommit modified r167540.

Improve ARM build attribute emission for architectures types.
This also changes the default architecture emitted for a generic CPU to "v7".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167574 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
162d91c1e0bf5c14e2838dd623b3e054e7537de6 07-Nov-2012 Amara Emerson <amara.emerson@arm.com> Revert r167540 until regression tests are updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167545 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
19a1fcf8683a2a459a8aac93c1b4d1bf63b018fb 07-Nov-2012 Amara Emerson <amara.emerson@arm.com> Improve ARM build attribute emission for architectures types.

This also changes the default architecture emitted for a generic CPU to "v7".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167540 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6aa6e5a2852ad5c83cef5eb52f62f9267e3511ea 07-Nov-2012 Chad Rosier <mcrosier@apple.com> [arm fast-isel] Appease the machine verifier by using the proper register
classes. For my test case the number of errors drop from 356 to 21.
Part of rdar://12594152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167508 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e7bd51980a1341fb60322e5922cfcc0c9b92b165 07-Nov-2012 Chad Rosier <mcrosier@apple.com> Mark the Int_eh_sjlj_dispatchsetup pseudo instruction as clobbering all
registers. Previously, the register we being marked as implicitly defined, but
not killed. In some cases this would cause the register scavenger to spill a
dead register.

Also, use an empty register mask to simplify the logic and to reduce the memory
footprint.
rdar://12592448

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167499 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCallingConv.td
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
43934aee71746576b6e16663f382401b8693c83a 02-Nov-2012 Quentin Colombet <qcolombet@apple.com> Vext Lowering was missing opportunities

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167318 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ece6c6bb6329748b92403c06ac87f45c43485911 01-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Revert the series of commits starting with r166578 which introduced the
getIntPtrType support for multiple address spaces via a pointer type,
and also introduced a crasher bug in the constant folder reported in
PR14233.

These commits also contained several problems that should really be
addressed before they are re-committed. I have avoided reverting various
cleanups to the DataLayout APIs that are reasonable to have moving
forward in order to reduce the amount of churn, and minimize the number
of commits that were reverted. I've also manually updated merge
conflicts and manually arranged for the getIntPtrType function to stay
in DataLayout and to be defined in a plausible way after this revert.

Thanks to Duncan for working through this exact strategy with me, and
Nick Lewycky for tracking down the really annoying crasher this
triggered. (Test case to follow in its own commit.)

After discussing with Duncan extensively, and based on a note from
Micah, I'm going to continue to back out some more of the more
problematic patches in this series in order to ensure we go into the
LLVM 3.2 branch with a reasonable story here. I'll send a note to
llvmdev explaining what's going on and why.

Summary of reverted revisions:

r166634: Fix a compiler warning with an unused variable.
r166607: Add some cleanup to the DataLayout changes requested by
Chandler.
r166596: Revert "Back out r166591, not sure why this made it through
since I cancelled the command. Bleh, sorry about this!
r166591: Delete a directory that wasn't supposed to be checked in yet.
r166578: Add in support for getIntPtrType to get the pointer type based
on the address space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167221 91177308-0d34-0410-b5e6-96231b3b80d8
RMSelectionDAGInfo.cpp
9a419f656e278b96e9dfe739cd63c7bff9a4e1fd 30-Oct-2012 Quentin Colombet <qcolombet@apple.com> Change ForceSizeOpt attribute into MinSize attribute

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167020 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb.td
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
0d91c0b519e0053931bf9502ebeaf44d397812f0 28-Oct-2012 Rafael Espindola <rafael.espindola@gmail.com> Remove TargetELFWriterInfo.
All the credit goes to Jan Voung for noticing it was dead!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166902 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
RMELFWriterInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
MakeLists.txt
80acd97266f6f165285ae9303dea9654f87a2a87 27-Oct-2012 Quentin Colombet <qcolombet@apple.com> [code size][ARM] Emit regular call instructions instead of the move, branch sequence

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166854 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
17f42e02a10bd4d43e4ba904c640224de2c48f51 27-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r163298 "Optimize codegen for VSETLNi{8,16,32} operating on Q registers."

Keep the integer_insertelement test case, the new coalescer can handle
this kind of lane insertion without help from pseudo-instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166835 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
61fac6810ff8686c5302dedb35d52cc662a983fe 27-Oct-2012 Kaelyn Uhrain <rikka@google.com> Avoid an unused-variable warning when asserts are disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166834 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
be5ec8c4b2c1495faef5fd11f212ef1a655538fb 26-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166818 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
b1f994af589af28dead4826d2e58a0138105e452 26-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove ARMBaseRegisterInfo::isReservedReg().

It is just as easy to use MRI::isReserved() now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166817 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameLowering.cpp
cd275f5687799e63956beabe35fc1718dc022f70 26-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add GPRPair Register class to ARM.

Some instructions in ARM require 2 even-odd paired GPRs. This
patch adds support for such register class.

Patch by Weiming Zhao!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166816 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMRegisterInfo.td
f4a5a613faa1a0eca6b884a6dfe83e8b1eb957b2 26-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the canCombineSubRegIndices() target hook.

The new coalescer can already do all of this, so there is no need to
duplicate the efforts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166813 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
6a020a71173a3ea7738a9df69982e85ddbfe0303 25-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add support for creating AsmRewrites in the target specific
AsmParser logic. To be used/tested in a subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166714 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
270483466124fe1e19d5439e958fef63cebd43cd 24-Oct-2012 Nadav Rotem <nrotem@apple.com> Implement a basic VectorTargetTransformInfo interface to be used by the loop and bb vectorizers for modeling the cost of instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166593 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
aa76e9e2cf50af190de90bc778b7f7e42ef9ceff 24-Oct-2012 Micah Villmow <villmow@gmail.com> Add in support for getIntPtrType to get the pointer type based on the address space.
This checkin also adds in some tests that utilize these paths and updates some of the
clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166578 91177308-0d34-0410-b5e6-96231b3b80d8
RMSelectionDAGInfo.cpp
e1d4a8813427b76c5f59cf5b70a9df734b7e9284 24-Oct-2012 Kevin Enderby <enderby@apple.com> Make branch heavy code for generating marked up disassembly simpler
and easier to read by adding a couple helper functions. Suggestion by
Chandler Carruth and seconded by Meador Inge!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166515 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
8f47fc8f00fbb1cc2215fc90942b0948e3ca121b 23-Oct-2012 Bill Wendling <isanbard@gmail.com> When a block ends in an indirect branch, add its successors to the machine basic block.

The CFG of the machine function needs to know that the targets of the indirect
branch are successors to the indirect branch.
<rdar://problem/12529625>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166448 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3ed0316f756e2f1730f46654776fcf77f5ace7aa 23-Oct-2012 Kevin Enderby <enderby@apple.com> Add support for annotated disassembly output for X86 and arm.

Per the October 12, 2012 Proposal for annotated disassembly output sent out by
Jim Grosbach this set of changes implements this for X86 and arm. The llvm-mc
tool now has a -mdis option to produced the marked up disassembly and a couple
of small example test cases have been added.

rdar://11764962


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166445 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
0d3c8d5d16caa4c4f1310699722aa2cbe2844f21 19-Oct-2012 Stepan Dyatkovskiy <stpworld@narod.ru> ARM:
Removed extra stack frame object for fixed byval arguments,
VarArgsStyleRegisters invocation was reworked due to some improper usage in
past. PR14099 also demonstrates it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166273 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
cbd9a19b5d6ff93efa82c467508ede78b8af3bac 19-Oct-2012 Nadav Rotem <nrotem@apple.com> Reapply the TargerTransformInfo changes, minus the changes to LSR and Lowerinvoke.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166248 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
88d12663abdac344f312b09edfe4934143436132 18-Oct-2012 Kevin Enderby <enderby@apple.com> Fix a bug where a 32-bit address with the high bit does not get symbolicated
because the value is incorrectly being signed extended when passed to
SymbolLookUp().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166234 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
3b9a911efcf280950f878a050728450423875639 18-Oct-2012 Bob Wilson <bob.wilson@apple.com> Temporarily revert the TargetTransform changes.

The TargetTransform changes are breaking LTO bootstraps of clang. I am
working with Nadav to figure out the problem, but I am reverting it for now
to get our buildbots working.

This reverts svn commits: 165665 165669 165670 165786 165787 165997
and I have also reverted clang svn 165741

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166168 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
9aa6e0a134358c681cc5918ec65b1ec9726b778e 17-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Merge MRI::isPhysRegOrOverlapUsed() into isPhysRegUsed().

All callers of these functions really want the isPhysRegOrOverlapUsed()
functionality which also checks aliases. For historical reasons, targets
without register aliases were calling isPhysRegUsed() instead.

Change isPhysRegUsed() to also check aliases, and switch all
isPhysRegOrOverlapUsed() callers to isPhysRegUsed().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166117 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
b52ba9f8a896b6717d6395ad59f6550e1fa475b0 16-Oct-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Issue:
Stack is formed improperly for long structures passed as byval arguments for
EABI mode.

If we took AAPCS reference, we can found the next statements:

A: "If the argument requires double-word alignment (8-byte), the NCRN (Next
Core Register Number) is rounded up to the next even register number." (5.5
Parameter Passing, Stage C, C.3).

B: "The alignment of an aggregate shall be the alignment of its most-aligned
component." (4.3 Composite Types, 4.3.1 Aggregates).

So if we have structure with doubles (9 double fields) and 3 Core unused
registers (r1, r2, r3): caller should use r2 and r3 registers only.
Currently r1,r2,r3 set is used, but it is invalid.

Callee VA routine should also use r2 and r3 regs only. All is ok here. This
behaviour is guessed by rounding up SP address with ADD+BFC operations.

Fix:
Main fix is in ARMTargetLowering::HandleByVal. If we detected AAPCS mode and
8 byte alignment, we waste odd registers then.

P.S.:
I also improved LDRB_POST_IMM regression test. Since ldrb instruction will
not generated by current regression test after this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166018 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
64ba6352097d38db5a57f4bf62dcdf14b0e6e147 15-Oct-2012 Jim Grosbach <grosbach@apple.com> ARM: v1i64 and v2i64 VBSL intrinsic support.

rdar://12502028

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165981 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2c39b15073db81d93bb629303915b7d7e5d088dc 15-Oct-2012 Micah Villmow <villmow@gmail.com> Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165941 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
bb1078ea1370fd0cc32f52b1b53f0b245ded42e7 15-Oct-2012 Silviu Baranga <silviu.baranga@arm.com> Fixed PR13938: the ARM backend was crashing because it couldn't select a VDUPLANE node with the vector input size different from the output size. This was bacause the BUILD_VECTOR lowering code didn't check that the size of the input vector was correct for using VDUPLANE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165929 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
84125ca43c758fd21fdab2b05196e0df57c55c96 13-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Remove the MatchInstruction() function. Previously, this was
the interface between the front-end and the MC layer when parsing inline
assembly. Unfortunately, this is too deep into the parsing stack. Specifically,
we're unable to handle target-independent assembly (i.e., assembly directives,
labels, etc.). Note the MatchAndEmitInstruction() isn't the correct
abstraction either. I'll be exposing target-independent hooks shortly, so this
is really just a cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165858 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e6c3cc8dc5437069f71a38188173835ba4fb0dc1 13-Oct-2012 Manman Ren <mren@apple.com> ARM: tail-call inside a function where part of a byval argument is on caller's
local frame causes problem.

For example:
void f(StructToPass s) {
g(&s, sizeof(s));
}
will cause problem with tail-call since part of s is passed via registers and
saved in f's local frame. When g tries to access s, part of s may be corrupted
since f's local frame is popped out before the tail-call.

The current fix is to disable tail-call if getVarArgsRegSaveSize is not 0 for
the caller. This is a conservative approach, if we can prove the address of
s or part of s is not taken and passed to g, it should be okay to perform
tail-call.

rdar://12442472


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165853 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4346fa9437116bbdb10acddb982c230f46696737 13-Oct-2012 Jim Grosbach <grosbach@apple.com> ARM: Mark VSELECT as 'expand'.

The backend already pattern matches to form VBSL when it can. We may want to
teach it to use the vbsl intrinsics at some point to prevent machine licm from
mucking with this, but using the Expand is completely correct.

http://llvm.org/bugs/show_bug.cgi?id=13831
http://llvm.org/bugs/show_bug.cgi?id=13961

Patch by Peter Couperus <peter.couperus@st.com>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165845 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6e006d3de882784527d4d9cc92b1a91f6773505e 13-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Use the new API introduced in r165830 in lieu of the
MapAndConstraints vector. Also remove the unused Kind argument.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165833 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ed84062812c7b8a82d0e8128a22aa1aa07a14d79 12-Oct-2012 Sean Silva <silvas@purdue.edu> Remove unnecessary classof()'s

isa<> et al. automatically infer when the cast is an upcast (including a
self-cast), so these are no longer necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165767 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
CTargetDesc/ARMMCExpr.h
fb384d61c78b60787ed65475d8403aee65023962 11-Oct-2012 Micah Villmow <villmow@gmail.com> Revert 165732 for further review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165747 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
f3840d2c16a4ec4c879a8ded402835746de380f8 11-Oct-2012 Micah Villmow <villmow@gmail.com> Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165726 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
6b61491de3f361a149919936e6264eff3746d80b 11-Oct-2012 Evan Cheng <evan.cheng@apple.com> Add isel patterns for v2f32 / v4f32 neon.vbsl intrinsics. rdar://12471808

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165673 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e3d0e86919730784faaddcb5d9b0257c39b0804b 11-Oct-2012 Nadav Rotem <nrotem@apple.com> Add a new interface to allow IR-level passes to access codegen-specific information.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165665 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
2c2cb3c09f856975027becadb22dcca370683f30 10-Oct-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Fix for LDRB instruction:
SDNode for LDRB_POST_IMM is invalid: number of registers added to SDNode fewer
that described in .td.

7 ops is needed, but SDNode with only 6 is created.

In more details:
In ARMInstrInfo.td, in multiclass AI2_ldridx, in definition _POST_IMM, offset
operand is defined as am2offset_imm. am2offset_imm is complex parameter type,
and actually it consists from dummy register and imm itself. As I understood
trick with dummy reg was made for AsmParser. In ARMISelLowering.cpp, this dummy
register was not added to SDNode, and it cause crash in Peephole Optimizer pass.

The problem fixed by setting up additional dummy reg when emitting
LDRB_POST_IMM instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165617 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
661afe75e81431a66de3ed8e22d5aa91443367b3 10-Oct-2012 Stepan Dyatkovskiy <stpworld@narod.ru> Issue description:
SchedulerDAGInstrs::buildSchedGraph ignores dependencies between FixedStack
objects and byval parameters. So loading byval parameters from stack may be
inserted *before* it will be stored, since these operations are treated as
independent.

Fix:
Currently ARMTargetLowering::LowerFormalArguments saves byval registers with
FixedStack MachinePointerInfo. To fix the problem we need to store byval
registers with MachinePointerInfo referenced to first the "byval" parameter.

Also commit adds two new fields to the InputArg structure: Function's argument
index and InputArg's part offset in bytes relative to the start position of
Function's argument. E.g.: If function's argument is 128 bit width and it was
splitted onto 32 bit regs, then we got 4 InputArg structs with same arg index,
but different offset values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165616 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
412cd2f81374865dfa708bef6d5b896ca10dece0 10-Oct-2012 Andrew Trick <atrick@apple.com> misched: Use the TargetSchedModel interface wherever possible.

Allows the new machine model to be used for NumMicroOps and OutputLatency.

Allows the HazardRecognizer to be disabled along with itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165603 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
2d15d641aa8aa9e48c268170f1a9825bb9926fc7 10-Oct-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165601 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
3e2d76c946ba753c2b11af192a52e25b6f9b46ff 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Use the attribute enums to query if a parameter has an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165550 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6765834754cbb3cb0f15b4b15e98c5e73fa50066 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Create enums for the different attributes.

We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
102b8ccfe673b4e3aa189f85b0fa06f59f19a199 09-Oct-2012 Craig Topper <craig.topper@gmail.com> In parseMSRMaskOperand, add an explicit check for the operand being an identifier instead of just having an assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165480 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7747496736376c97d8bbf71302151287d1056abc 09-Oct-2012 Craig Topper <craig.topper@gmail.com> Remove some dead code from ARMAsmPrinter. Add virtual and LLVM_OVERRIDE to the other methods. Mark some of the helper methods as private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165479 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
3574eca1b02600bac4e625297f4ecf745f4c4f32 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMELFWriterInfo.cpp
RMFastISel.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMSelectionDAGInfo.cpp
RMTargetMachine.cpp
RMTargetMachine.h
9ba9d4d76bfa8de2b05cbce02a5a3ff7d46cb331 05-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add a few typedefs to simplify future changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165324 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
837c28a84076e1cd63bbf29057b791ebe6b03de0 04-Oct-2012 Jim Grosbach <grosbach@apple.com> ARM: locate user-defined text sections next to default text.

Make sure functions located in user specified text sections (via the
section attribute) are located together with the default text sections.
Otherwise, for large object files, the relocations for call instructions
are more likely to be out of range. This becomes even more likely in the
presence of LTO.

rdar://12402636

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165254 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
847d165459a8d4c30b57c896c7a7e2722f800f82 03-Oct-2012 Bill Wendling <isanbard@gmail.com> Add methods which query for the specific attribute instead of using the
enums. This allows for better encapsulation of the Attributes class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165132 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
22685876ed7231f32f7d1698c00acab22825b74c 02-Oct-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add the convertToMapAndConstraints() function that is used to
map constraints and MCInst operands to inline asm operands. This replaces the
getMCInstOperandNum() function.

The logic to determine the constraints are not in place, so we still default to
a register constraint (i.e., "r"). Also, we no longer build the MCInst but
rather return just the opcode to get the MCInstrDesc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164979 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b4316028b3978e65cc2b97042292637857dfad49 02-Oct-2012 Jim Grosbach <grosbach@apple.com> MachO: direct-to-object attribute for data-in-code markers.

The target backend can support data-in-code load commands even when
the assembler doesn't, or vice-versa. Allow targets to opt-in for
direct-to-object.

PR13973.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164974 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
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
RM.td
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb2.td
RMInstrVFP.td
RMRegisterInfo.td
RMSchedule.td
RMScheduleSwift.td
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMCTargetDesc.cpp
LxExpansionPass.cpp
154418cdd82b3d8dcf23efd65f5647833e43bc45 29-Sep-2012 Bob Wilson <bob.wilson@apple.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164898 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
94c22716d60ff5edf6a98a3c67e0faa001be1142 27-Sep-2012 Sylvestre Ledru <sylvestre@debian.org> Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164768 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb.td
smParser/ARMAsmParser.cpp
7e2c793a2b5c746344652b6579e958ee42fafdcc 27-Sep-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo 'iff' => 'if'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164767 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb.td
smParser/ARMAsmParser.cpp
8f50647662560167b88851f92c3c891d2e7c1696 27-Sep-2012 Jush Lu <jush.msn@gmail.com> [arm-fast-isel] Add support for ELF PIC.

This is a preliminary step towards ELF support; currently ARMFastISel hasn't
been used for ELF object files yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164759 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMFastISel.cpp
RMInstrInfo.cpp
RMMachineFunctionInfo.h
RMTargetMachine.cpp
2c189061184925c6a8ecbb5a19e648b230a41c0e 26-Sep-2012 Bill Wendling <isanbard@gmail.com> Remove the `hasFnAttr' method from Function.

The hasFnAttr method has been replaced by querying the Attributes explicitly. No
intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164725 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
d6d10ae1519f0eb71c1db46c2cc77321d02c6ee6 26-Sep-2012 James Molloy <james.molloy@arm.com> Fix ordering of operands on lowering of atomicrmw min/max nodes on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164685 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fe2d5f848764dff8f9ba734a5e2438ca1535890e 25-Sep-2012 Jim Grosbach <grosbach@apple.com> ARM: Darwin BL/BLX relocations to out-of-range symbols.

When a BL/BLX references a symbol in the same translation unit that is
out of range, use an external relocation. The linker will use this to
generate a branch island rather than a direct reference, allowing the
relocation to resolve correctly.

rdar://12359919

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164615 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
fbc21fabaef9a74334c54574a4949f864451f1b6 25-Sep-2012 Jim Grosbach <grosbach@apple.com> ARM: 'add Rd, pc, #imm' is an alias for 'adr Rd, #imm'.

rdar://9795790

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164577 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2590c2e1e9e2f2a7f28672c10c2df55566238dfa 25-Sep-2012 Chad Rosier <mcrosier@apple.com> Rather then have a wrapper function, have tblgen instantiate the implementation.
Also remove an unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164567 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
00796a1b15a83247e19c2445a6ff7a31e72299a4 24-Sep-2012 Chad Rosier <mcrosier@apple.com> Rather then have a wrapper function, have tblgen instantiate the implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164548 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d15e2a08578fe7028196037d9a35c834f0e0b7f8 22-Sep-2012 NAKAMURA Takumi <geek4civic@gmail.com> ARMInstPrinter.cpp: Fix a warning in -Asserts. [-Wunused-variable]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164459 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
2d67eac2e6c866e6181d159f5c0e71b6e804f672 22-Sep-2012 NAKAMURA Takumi <geek4civic@gmail.com> Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164458 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
bb5174246b5d0dfbd057b3641f5e134fe74ea0f4 22-Sep-2012 Tim Northover <Tim.Northover@arm.com> Fix edge cases of ARM shift operands in arith instructions.

As before with load instructions, oddities like "asr #32", "rrx" could
be printed incorrectly.

Patch by Chris Lidbury.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164456 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
93c7c449a1351542fa5a275587187154dbedb8e0 22-Sep-2012 Tim Northover <Tim.Northover@arm.com> Fix the handling of edge cases in ARM shifted operands.

This patch fixes load/store instructions to handle less common cases
like "asr #32", "rrx" properly throughout the MC layer.

Patch by Chris Lidbury.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164455 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
d717a066c6ddaff401b9259579b265eeafb83b6e 22-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Expose the mnemonicIsValid() function in the AsmParser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164420 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4a6203a31b28d76d9e0d802a900b64bef285db9c 21-Sep-2012 Chad Rosier <mcrosier@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164414 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e5e674ba1191d9e9c528eb363babdcbea1359e10 21-Sep-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Fallback to SelectionDAG isel if we require strict alignment for
non-aligned i32 loads/stores.
rdar://12304911

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164381 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2f1d5d44c088d7f600fb63aef07f785a0f9c4c1f 21-Sep-2012 Andrew Trick <atrick@apple.com> Cortex-A9 latency fixes (w/ -schedmodel only).

Quick review against the manual revealed a few obvious mistakes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164361 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
d70c98e884d19c4d94b5e83efd32888b8ee47869 21-Sep-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Fallback to SelectionDAG isel if we require strict alignment for
non-halfword-aligned i16 loads/stores.
rdar://12304911

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164345 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d314ab525db93cdb51ede18830b95c97af497e3c 21-Sep-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164344 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCExpr.h
1f9f599e7017968859e84d796ba8a827357a700b 21-Sep-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164343 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ced674e470bb949d0adce90d79563789439333a8 21-Sep-2012 Jim Grosbach <grosbach@apple.com> ARM: Use a dedicated intrinsic for vector bitwise select.

The expression based expansion too often results in IR level optimizations
splitting the intermediate values into separate basic blocks, preventing
the formation of the VBSL instruction as the code author intended. In
particular, LICM would often hoist part of the computation out of a loop.

rdar://11011471

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164340 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
aa258442b9c9f764845660a8f3233c7887e7cf6f 20-Sep-2012 Craig Topper <craig.topper@gmail.com> Change enum type in a static table to uint8_t instead. Saves about 700 hundred bytes of static data. Change unsigned char in same table to uint8_t for explicitness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164285 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
b37b6ca4bb9a46bdf3788e7a45454e1cdeca17bd 18-Sep-2012 Evan Cheng <evan.cheng@apple.com> MOVi16 (movw) is only legal on cpus with V6T2 support. rdar://12300648

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164169 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
536a88ad5bf160232205192a7ce72e50bfadbded 18-Sep-2012 Roman Divacky <rdivacky@freebsd.org> When creating MCAsmBackend pass the CPU string as well. In X86AsmBackend
store this and use it to not emit long nops when the CPU is geode which
doesnt support them.

Fixes PR11212.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164132 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMCTargetDesc.h
97ecb83dffb5ff78ff84e9da21189268f52c63b2 18-Sep-2012 James Molloy <james.molloy@arm.com> More domain conversion; convert VFP VMOVS to NEON instructions in more cases - when we may clobber the other S-lane by converting an S to a D instruction, make an effort to work out if the S lane is clobberable or not.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164114 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
e127dfd0b175b5a336e61fecaad7fc2aec65d95c 18-Sep-2012 Andrew Trick <atrick@apple.com> TableGen subtarget emitter. Initialize MCSubtargetInfo with the new machine model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164092 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
d10eab0a95dcfff6390cc73b50ca07fd8b98b0bc 18-Sep-2012 Evan Cheng <evan.cheng@apple.com> Use vld1 / vst2 for unaligned v2f64 load / store. e.g. Use vld1.16 for 2-byte
aligned address. Based on patch by David Peixotto.

Also use vld1.64 / vst1.64 with 128-bit alignment to take advantage of alignment
hints. rdar://12090772, rdar://12238782


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164089 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
e1b53287179b4b9b5c3c549586f688d3fa2ae8ef 18-Sep-2012 Andrew Trick <atrick@apple.com> Revert r164061-r164067. Most of the new subtarget emitter.

I have to work out the Target/CodeGen header dependencies
before putting this back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164072 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
db7afac4575168c239ac9c570cb7897808f12e30 18-Sep-2012 Andrew Trick <atrick@apple.com> TableGen subtarget emitter. Initialize MCSubtargetInfo with the new machine model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164061 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
c8bf0f86624f025ca7c2b5cfc35ef3fb904a3930 17-Sep-2012 Silviu Baranga <silviu.baranga@arm.com> Removed the VMLxForwarding feature for the Cortex-A15 target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164030 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
86a1c32e67b23c5e9e42dff9eb86e99ba15bb42f 15-Sep-2012 Craig Topper <craig.topper@gmail.com> Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163974 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
9eed53379f19f836769a0c4a14042eeb1b587769 14-Sep-2012 Andrew Trick <atrick@apple.com> Implement getNumLDMAddresses and expose through ARMBaseInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163922 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
dcf31ed4139df19b14e599adaaa4f09901553ede 14-Sep-2012 Andrew Trick <atrick@apple.com> Cortex-A9 instruction-level scheduling machine model.

This models the A9 processor at the level of instruction operands, as
opposed to the itinerary, which models each operation at the level of
pipeline stages.

The two primary motivations are:

1) Allow MachineScheduler to model A9 as an out-of-order processor. It
can now distinguish between hazards that force interlocking vs.
buffered resources.

2) Reduce long-term maintenance by allowing the itinerary and target
hooks to eventually be removed. Note that almost all of the complexity
in the new model exists to model instruction variants, which the
itinerary cannot handle. Instead the scheduler previously relied on
processor-specific target hooks which are incomplete and buggy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163921 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
c5252da873d547a19069eaf9030fec203f128f66 14-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Fix Doxygen issues:
* wrap code blocks in \code ... \endcode;
* refer to parameter names in paragraphs correctly (\arg is not what most
people want -- it starts a new paragraph);
* use \param instead of \arg to document parameters in order to be consistent
with the rest of the codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163902 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
78c041bd883d86c81c42b98f326660277e6d0d9a 14-Sep-2012 Stephen Hines <srhines@google.com> am 1c4ad5ef: Merge branch \'upstream\' into merge-2012_09_10

* commit '1c4ad5ef4fab105f0c8af7edd026e00502fb6279': (446 commits)
Revert r163556. Missed updates to tablegen files.
Update function names to conform to guidelines. No functional change intended.
test/CodeGen/X86/ms-inline-asm.ll: Relax for non-darwin x86 targets. '##InlineAsm' could not be seen in other hosts.
[ms-inline asm] Properly emit the asm directives when the AsmPrinterVariant and InlineAsmVariant don't match.
Update test case for Release builds.
Remove redundant semicolons which are null statements.
Disable stack coloring because it makes dragonegg fail bootstrapping.
[ms-inline asm] Pass the correct AsmVariant to the PrintAsmOperand() function and update the printOperand() function accordingly.
[ms-inline asm] Add support for .att_syntax directive.
Enable stack coloring.
Don't attempt to use flags from predicated instructions.
[Object] Extract Elf_Ehdr. Patch by Hemant Kulkarni!
Stack Coloring: Handle the case where END markers come before BEGIN markers properly.
Enhance PR11334 fix to support extload from v2f32/v4f32
Add "blocked" heuristic to the Hexagon MI scheduler.
Fold multiply by 0 or 1 when in UnsafeFPMath mode in SelectionDAG::getNode().
whitespace
Add boolean simplification support from CMOV
Fix an assertion failure when optimising a shufflevector incorrectly into concat_vectors, and a followup bug with SelectionDAG::getNode() creating nodes with invalid types.
Minor cleanup. No functional change.
...
616471d4bfe4717fa86259ff4534703357b3b723 13-Sep-2012 Silviu Baranga <silviu.baranga@arm.com> This patch introduces A15 as a target in LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163803 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMHazardRecognizer.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMSubtarget.h
RMTargetMachine.cpp
LxExpansionPass.cpp
828ded66831c0caaeecd2291a6bfb084f373d0e4 12-Sep-2012 Ying Wang <wangying@google.com> Use O0 for the win_sdk build too

To avoid the super long compilation with /usr/bin/i586-mingw32msvc-g++
4.2.

Change-Id: I4b434893ca4789e10b6fb0d44275eb82cb1be040
smParser/Android.mk
3d1f75a3d5748c87a1f1b248313047abecc09360 12-Sep-2012 Chad Rosier <mcrosier@apple.com> Rename the isMemory() function to isMem(). No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163654 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1c4ad5ef4fab105f0c8af7edd026e00502fb6279 11-Sep-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge-2012_09_10

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
lib/Support/DynamicLibrary.cpp
lib/Support/LockFileManager.cpp

Change-Id: I91e94c3a7a76e19c688307c5a480a640a3bd2b7e
2de0572caec55e3779857cae0bbcd962af2e495d 10-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Remove redundant semicolons which are null statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163547 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
519daf5d2dd80614ac4e529b199e6f3e595bfc80 10-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't attempt to use flags from predicated instructions.

The ARM backend can eliminate cmp instructions by reusing flags from a
nearby sub instruction with similar arguments.

Don't do that if the sub is predicated - the flags are not written
unconditionally.

<rdar://problem/12263428>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163535 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a1fb1d2ed7342c7e6b491a78af073b5320bc9867 08-Sep-2012 Craig Topper <craig.topper@gmail.com> Set operation action for FFLOOR to Expand for all vector types for X86. Set FFLOOR of v4f32 to Expand for ARM. v2f64 was already correct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163458 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a7390fadbaa8da49649d76786555c93bcb680de6 07-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Custom DAGCombine for and/or/xor are for all ARMs.

The 'select' transformations apply to all ARM architectures and don't
require hasV6T2Ops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163396 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
39646d96e76aea5d20bffb386233a0dbb5932a21 07-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> MC: Overhaul handling of .lcomm

- Darwin lied about not supporting .lcomm and turned it into zerofill in the
asm parser. Push the zerofill-conversion down into macho-specific code.
- This makes the tri-state LCOMMType enum superfluous, there are no targets
without .lcomm.
- Do proper error reporting when trying to use .lcomm with alignment on a target
that doesn't support it.
- .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2.
- Fixes PR13755 (.lcomm crashes on ELF).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163395 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCAsmInfo.cpp
24b9f258f194c5e472bf133f9bbf5ca26ad500d3 06-Sep-2012 Tim Northover <Tim.Northover@arm.com> Diagnose invalid alignments on duplicating VLDn instructions.

Patch by Chris Lidbury.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163323 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
eae1d34029c159306ce4a0472294de6cf9baedac 06-Sep-2012 Tim Northover <Tim.Northover@arm.com> Check for invalid alignment values when decoding VLDn/VSTn (single ln) instructions.

Patch by Chris Lidbury.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163321 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
64eacd9136dc45e54dd2728117f71403701fd39c 06-Sep-2012 Tim Northover <Tim.Northover@arm.com> Use correct part of complex operand to encode VST1 alignment.

Patch by Chris Lidbury.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163318 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e757640df0615510dbc42921cf6271aa76c405ee 06-Sep-2012 Nadav Rotem <nrotem@apple.com> Fix a few old-GCC warnings. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163309 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
951543491fcc01486a926f0dcb37815ffff2051f 06-Sep-2012 James Molloy <james.molloy@arm.com> Fix self-host; ensure signedness is consistent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163306 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ba8562af4440753ba6175ccd54d71f79f5c4f3dc 06-Sep-2012 James Molloy <james.molloy@arm.com> Improve codegen for BUILD_VECTORs on ARM.

If we have a BUILD_VECTOR that is mostly a constant splat, it is often better to splat that constant then insertelement the non-constant lanes instead of insertelementing every lane from an undef base.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163304 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6c822eea47dbef96940819b1ea085fabc49a1e71 06-Sep-2012 James Molloy <james.molloy@arm.com> Optimize codegen for VSETLNi{8,16,32} operating on Q registers. Degenerate to a VSETLN on D registers, instead of an (INSERT_SUBREG (VSETLN (EXTRACT_SUBREG ))) sequence to help the register coalescer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163298 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.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
RMInstrInfo.td
RMInstrThumb2.td
098c6a547fe540b3bbace4c3d4713f400c67b8a9 06-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use predication instead of pseudo-opcodes when folding into MOVCC.

Now that it is possible to dynamically tie MachineInstr operands,
predicated instructions are possible in SSA form:

%vreg3<def> = SUBri %vreg1, -2147483647, pred:14, pred:%noreg, %opt:%noreg
%vreg4<def,tied1> = MOVCCr %vreg3<tied0>, %vreg1, %pred:12, pred:%CPSR

Becomes a predicated SUBri with a tied imp-use:

SUBri %vreg1, -2147483647, pred:13, pred:%CPSR, opt:%noreg, %vreg1<imp-use,tied0>

This means that any instruction that is safe to move can be folded into
a MOVCC, and the *CC pseudo-instructions are no longer needed.

The test case changes reflect that Thumb2SizeReduce recognizes the
predicated instructions. It didn't understand the pseudos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163274 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
59324297650c12a8dccf1a7ad650a9e895fdc17e 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Stop casting away const qualifier needlessly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163258 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
7bebddf55ece46995f310d79195afb4e5b239886 05-Sep-2012 Tim Northover <Tim.Northover@arm.com> Strip old MachineInstrs *after* we know we can put them back.

Previous patch accidentally decided it couldn't convert a VFP to a
NEON instruction after it had already destroyed the old one. Not a
good move.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163230 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5d637d7e93c1f6058c16b41b8ac7dd36c61b4a5c 05-Sep-2012 Chad Rosier <mcrosier@apple.com> Fix function name per coding standard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163187 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
2cc97def7434345e399e4f5f3f2001d6d7a93c6f 03-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Asm operands can map to one or more MCOperands. Therefore, add
the NumMCOperands argument to the GetMCInstOperandNum() function that is set
to the number of MCOperands this asm operand mapped to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163124 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
038f3e31276f8cc86d91d0e4513e1a3ddb8509ba 03-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Add an interface to the GetMCInstOperandNum() function in the
MCTargetAsmParser class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163122 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c4d2560a2010456f4eea0007eb71829d5668e7dd 03-Sep-2012 Chad Rosier <mcrosier@apple.com> Removed unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163104 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3a86e1396230748f17a521915bc802939a787eac 03-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Expose the Kind and Opcode variables from the
MatchInstructionImpl() function.

These values are used by the ConvertToMCInst() function to index into the
ConversionTable. The values are also needed to call the GetMCInstOperandNum()
function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163101 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9f40cb32ac31283f8636d516e7b10f3ad921955c 02-Sep-2012 Nadav Rotem <nrotem@apple.com> Not all targets have efficient ISel code generation for select instructions.
For example, the ARM target does not have efficient ISel handling for vector
selects with scalar conditions. This patch adds a TLI hook which allows the
different targets to report which selects are supported well and which selects
should be converted to CF duting codegen prepare.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163093 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
89f49808ee79eebbc3267b6c595514d4ca1f3247 01-Sep-2012 Tim Northover <Tim.Northover@arm.com> Limit domain conversion to cases where it won't break dep chains.

NEON domain conversion was too heavy-handed with its widened
registers, which could have stripped existing instructions of their
dependency, leaving them vulnerable to scheduling errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163070 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
8fccd013d87c4b12edb4c9982fd9f3517917d2f7 01-Sep-2012 Logan Chien <tzuhsiang.chien@gmail.com> Fix Thumb2 fixup kind in the integrated-as.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163063 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
756d2cc2f7f6745603fdc0ec1ed4476d06385845 01-Sep-2012 Chad Rosier <mcrosier@apple.com> Remove an unused argument. The MCInst opcode is set in the ConvertToMCInst()
function nowadays.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163030 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
429af6fa4124d8b6dd310069e0a44dcacb35fc8a 31-Aug-2012 Chad Rosier <mcrosier@apple.com> Add a comment to explain what's really going on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163005 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5d04a560a875eef5cc7ae2bfadaf7d46ea8a60c5 31-Aug-2012 Chad Rosier <mcrosier@apple.com> The ConvertToMCInst() function can't fail, so remove the now dead Match_ConversionFail enum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163002 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
05e80f27148b1dc19925755d56b6466df840da44 31-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a couple of typos in EmitAtomic.

Thumb2 instructions are mostly constrained to rGPR, not tGPR which is
for Thumb1.

rdar://problem/12203728

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162968 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
359956dc1be35df4f8179eb14cea617c3ef10dd7 31-Aug-2012 Chad Rosier <mcrosier@apple.com> With the fix in r162954/162955 every cvt function returns true. Thus, have
the ConvertToMCInst() return void, rather then a bool. Update all the cvt
functions as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162961 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fafa283e65bca1473eace94057077129a76dbdcc 31-Aug-2012 Chad Rosier <mcrosier@apple.com> Fix for r162954. Return the Error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162955 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
64b3444cbf7f5976502ff4cf6fc89aed4986b59c 31-Aug-2012 Chad Rosier <mcrosier@apple.com> Move a check to the validateInstruction() function where it more properly belongs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162954 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1122fc40c16785d510025daeb6c72a075f7e2e5b 31-Aug-2012 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162952 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c4a32e6596f3974a6c00322db1f5f31ea448bd58 30-Aug-2012 Tim Northover <Tim.Northover@arm.com> Add support for moving pure S-register to NEON pipeline if desired

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162898 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
20599ea4bced03634a54b52e98d261018366f279 29-Aug-2012 Tim Northover <Tim.Northover@arm.com> Refactor setExecutionDomain to be clearer about what it's doing and more robust.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162844 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7611a88b58e0a6960cdb5c72dc18a6c93e44cdc2 29-Aug-2012 Andrew Trick <atrick@apple.com> Cleanup sloppy code. Jakob's review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162825 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
c4dc2490c4ea2c75e451eec5950179f06d2610a2 29-Aug-2012 Jush Lu <jush.msn@gmail.com> [arm-fast-isel] Add support for ARM PIC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162823 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f26e43df26bb7b0c7bf4853477e36611e2c90dea 29-Aug-2012 Andrew Trick <atrick@apple.com> Fix ARM vector copies of overlapping register tuples.

I have tested the fix, but have not been successfull in generating
a robust unit test. This can only be exposed through particular
register assignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162821 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d79dedd458c1de07fbc568ea8c3b4194e94df48e 29-Aug-2012 Andrew Trick <atrick@apple.com> cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162820 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
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
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
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
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
47aa9a2bb521994509d21179b968471531986eed 28-Aug-2012 Bill Wendling <isanbard@gmail.com> Make sure we add the predicate after all of the registers are added.
<rdar://problem/12183003>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162703 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1144af3c9b4da48cd581156e05b24261c8de366a 25-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix integer undefined behavior due to signed left shift overflow in LLVM.
Reviewed offline by chandlerc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162623 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
36ff8f25c559f291a8790584b725e0b54ddf2240 25-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Missed tLEApcrelJT.

ARMConstantIslandPass expects this instruction to stay in the same basic
block as the jump table branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162615 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrInfo.td
RMInstrThumb2.td
0745b649ed5c362f1c2f7db59254a76041ddef05 24-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix call instruction operands in ARMFastISel.

The ARM BL and BLX instructions don't have predicate operands, but the
thumb variants tBL and tBLX do.

The argument registers should be added as implicit uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162593 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ea47628cbafb48bf2a51554328a6dd77be40f4df 24-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing SDNPSideEffect flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162557 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d62cdbe700ab288e9ad447824066edb7d17167d9 23-Aug-2012 Stephen Hines <srhines@google.com> Add new files for Mips + fixups for merge to upstream r162314.

Change-Id: Ib545c0c991575c14b0b74e3b8fd4cc8c789b25d0
RMJITInfo.cpp
31675153bd2d7617db8cb6aeb58054934c7b9f73 24-Aug-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge_2

Conflicts:
lib/Target/ARM/ARMCodeEmitter.cpp

Change-Id: I6702d340c733e9721499b5d85b13b96ad9c14eb5
aaf217953bef3b2cc0e0f26bf474616cc20cf7f0 24-Aug-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix undefined behavior (negation of INT_MIN) in ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162520 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
CTargetDesc/ARMMCCodeEmitter.cpp
05d96f98cbd96dab7f4ea1ea4ebe4285597e7e88 22-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Reduce duplicated hash map lookups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162362 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
96601ca332ab388754ca4673be8973396fea2ddd 22-Aug-2012 Craig Topper <craig.topper@gmail.com> Add a getName function to MachineFunction. Use it in places that previously did getFunction()->getName(). Remove includes of Function.h that are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162347 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
53799048071ad5746fcbc2dca55cdcf5c5593870 21-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a missing def flag.

*** Bad machine code: Explicit definition marked as use ***
- function: test_cos
- basic block: BB#0 L.entry (0x7ff2a2024fd0)
- instruction: VSETLNi32 %D11, %D11<undef>, %R0, 0, pred:14, pred:%noreg, %Q5<imp-use,kill>, %Q5<imp-def>
- operand 0: %D11

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162247 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
416bb6a168a9316547db6ce3909c515f70a84f52 20-Aug-2012 Ying Wang <wangying@google.com> Use -O0 to speed up compiling of ARMAsmParser.cpp

Change-Id: I0d4b647180dbb2c3025c9d3f9a68b97de650ce41
smParser/Android.mk
a0708d1109c2c1a3cf911a4761a10ad69a28455e 20-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a SmallPtrSet to dedup successors in EmitSjLjDispatchBlock.

The test case ARM/2011-05-04-MultipleLandingPadSuccs.ll was creating
duplicate successor list entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162222 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0a8f8980000b753ef77dfc64cc7d9803d5dcc8ce 18-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the CAND/COR/CXOR custom ISD nodes and their select code.

These nodes are no longer needed because the peephole pass can fold
CMOV+AND into ANDCC etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162179 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
35fc62bf70074349d74357900dd65f08384970c5 18-Aug-2012 Craig Topper <craig.topper@gmail.com> Remove virtual from many methods. These methods replace methods in the base class, but the base class methods aren't virtual so it just increased call overhead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162178 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
864c8702ba0da2208212e84f146fbbe5c77866ed 18-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also combine zext/sext into selects for ARM.

This turns common i1 patterns into predicated instructions:

(add (zext cc), x) -> (select cc (add x, 1), x)
(add (sext cc), x) -> (select cc (add x, -1), x)

For a function like:

unsigned f(unsigned s, int x) {
return s + (x>0);
}

We now produce:

cmp r1, #0
it gt
addgt.w r0, r0, #1

Instead of:

movs r2, #0
cmp r1, #0
it gt
movgt r2, #1
add r0, r2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162177 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dcd2342d32e92912cc457fe6ce4cd8a72c93c06b 18-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also pass logical ops to combineSelectAndUse.

Add these transformations to the existing add/sub ones:

(and (select cc, -1, c), x) -> (select cc, x, (and, x, c))
(or (select cc, 0, c), x) -> (select cc, x, (or, x, c))
(xor (select cc, 0, c), x) -> (select cc, x, (xor, x, c))

The selects can then be transformed to a single predicated instruction
by peephole.

This transformation will make it possible to eliminate the ISD::CAND,
COR, and CXOR custom DAG nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162176 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6d655a50f93520e73c4154e3642227d665bd6966 18-Aug-2012 Anton Korobeynikov <asl@math.spbu.ru> fp16-to-fp32 conversion instructions are available in Thumb mode as well.
Make sure the generic pattern is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162170 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
a7fb3f68047556a7355e1f1080fb3d1ca9eb7078 17-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid folding ADD instructions with FI operands.

PEI can't handle the pseudo-instructions. This can be removed when the
pseudo-instructions are replaced by normal predicated instructions.

Fixes PR13628.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162130 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1f1ab3e9c4dbef6a2d610b29903592986be09a10 17-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add comment, clean up code. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162107 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3c8ad92455ff06c8e69085702ef1f13944eab4dd 17-Aug-2012 Tim Northover <Tim.Northover@arm.com> Implement NEON domain switching for scalar <-> S-register vmovs on ARM

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162094 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
960fb7437003dcb96c6af093e2d55e06e4c8bd43 17-Aug-2012 Craig Topper <craig.topper@gmail.com> Remove unnecessary include of ARMGenInstrInfo.inc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162086 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
2ff4e9d5afa2074b91940a601fba0a0c154f6a83 16-Aug-2012 Jush Lu <jush.msn@gmail.com> [arm-fast-isel] Add support for fastcc.

Without fastcc support, the caller just falls through to CallingConv::C
for fastcc, but callee still uses fastcc, this inconsistency of calling
convention is a problem, and fastcc support can fix it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162013 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
a99c508c8d34c073619b71d4f50cb28110cb1a2a 15-Aug-2012 Evan Cheng <evan.cheng@apple.com> Use vld1/vst1 to load/store f64 if alignment is < 4 and the target allows unaligned access. rdar://12091029

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161962 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
652199961a8acf3314b15bb3d5133e8a9a56b615 15-Aug-2012 Anton Korobeynikov <asl@math.spbu.ru> The names of VFP variants of half-to-float conversion instructions were
reversed. This leads to wrong codegen for float-to-half conversion
intrinsics which are used to support storage-only fp16 type.
NEON variants of same instructions are fine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161907 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
6eef0e2f8767ee691413bf8344e1d2db527c8a43 15-Aug-2012 Eric Christopher <echristo@apple.com> This needs braces. Spotted by Bill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161906 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
fc1a161d76f5cc0204bed3bce3e27cf36ac76d22 14-Aug-2012 Jim Grosbach <grosbach@apple.com> Switch the fixed-length disassembler to be table-driven.

Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.

As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:

Time to compile at -O2 (averaged w/ hot caches):
Previous: 35.5s
New: 8.9s

TEXT size:
Previous: 447,251
New: 297,661

Builds in 25% of the time previously required and generates code 66% of
the size.

Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161888 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
617792679c90897e49ae6f8bbe3a30a5723b15f5 13-Aug-2012 Tim Northover <Tim.Northover@arm.com> Use correct loads for vector types during extending-load operations.

Previously, we used VLD1.32 in all cases, however there are both 16 and 64-bit
accesses being selected, so we need to use an appropriate width load in those
cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161748 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
43600e95ec3690b37d458a6d3d56941ad84cddcb 13-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the TII::scheduleTwoAddrSource() hook.

It never does anything when running 'make check', and it get's in the
way of updating live intervals in 2-addr.

The hook was originally added to help form IT blocks in Thumb2 code
before register allocation, but the pass ordering has changed since
then, and we run if-conversion after register allocation now.

When the MI scheduler is enabled, there will be no less than two
schedulers between 2-addr and Thumb2ITBlockPass, so this hook is
unlikely to help anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161794 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
humb2InstrInfo.h
a41db53f664f2ea943004f72be5cf575ba2d5d39 13-Aug-2012 Manman Ren <mren@apple.com> ARM: enable struct byval for AAPCS-VFP.
This change is to be enabled in clang.

rdar://9877866


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161789 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
df8320313bf31c77d6dde4010235d82d871518cb 13-Aug-2012 Nadav Rotem <nrotem@apple.com> Do not optimize (or (and X,Y), Z) into BFI and other sequences if the AND ISDNode has more than one user.

rdar://11876519



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161775 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
001d219b9729684ea514068cff1cf79cd2e71121 13-Aug-2012 Eric Christopher <echristo@apple.com> Add support for the %H output modifier.

Patch by Weiming Zhao.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161768 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
e0b464f291f69f26661f58f6073a27d808fc672c 13-Aug-2012 Tim Northover <Tim.Northover@arm.com> Use correct loads for vector types during extending-load operations.

Previously, we used VLD1.32 in all cases, however there are both 16 and 64-bit
accesses being selected, so we need to use an appropriate width load in those
cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161748 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
0faf46c640c6747f1add89ba06631cebc4fa3afd 12-Aug-2012 Craig Topper <craig.topper@gmail.com> Change addTypeForNeon to use MVT instead of EVT so all the calls to getSimpleVT can be removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161735 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d9b45125935b05578255501a7e05fba9de603609 10-Aug-2012 Manman Ren <mren@apple.com> ARM: enable struct byval for AAPCS.
This change is to be enabled in clang.

rdar://9877866
PR://13350


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161693 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
df1c637ac4b6f6587c037be55cafed665c732d8f 10-Aug-2012 Eric Christopher <echristo@apple.com> Remove getARMRegisterNumbering and replace with calls into
the register info for getEncodingValue. This builds on the
small patch of yesterday to set HWEncoding in the register
file.

One (deprecated) use was turned into a hard number to avoid
needing register info in the old JIT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161628 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMExpandPseudoInsts.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
smParser/ARMAsmParser.cpp
CTargetDesc/ARMBaseInfo.h
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
529f3140507c4b4479ffd58d8008f38b5de6c5c4 09-Aug-2012 Eric Christopher <echristo@apple.com> This field isn't used anymore, use it with HWEncoding instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161564 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
d43b5c97cff06d7840b974ca84fa0639d2567968 08-Aug-2012 Andrew Trick <atrick@apple.com> Added MispredictPenalty to SchedMachineModel.

This replaces an existing subtarget hook on ARM and allows standard
CodeGen passes to potentially use the property.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161471 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMSubtarget.cpp
RMSubtarget.h
d598bd3aeea64fb0d2d3bd18de739a8a59cf043d 08-Aug-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161469 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
ad62e92279bc0b14c54db94dd794082c8b8edd9e 04-Aug-2012 Anton Korobeynikov <asl@math.spbu.ru> Skip impdef regs during eabi save/restore list emission to workaround PR11902


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161301 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
161474d198d44ab505861c1ec55f022b27314b35 04-Aug-2012 Anton Korobeynikov <asl@math.spbu.ru> Recognize vst1.64 / vld1.64 with 3 and 4 regs as load from / store to stack stuff
(this corresponds by spilling/reloading regs in DTriple / DQuad reg classes).
No testcase, found by inspection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161300 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b58d7d03125526c152ade0c75be302b3c9eab997 04-Aug-2012 Anton Korobeynikov <asl@math.spbu.ru> Add stack spill / reload instructions for DTriple and DQuad register classes, which
were missed for no reason. This fixes PR13377


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161299 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
c3f0e98f40f1382870c679b6aef1c5d01540637f 03-Aug-2012 Shih-wei Liao <sliao@google.com> Apply changes to migrate to LLVM-160668-20120724.

- Update Android.mk for removed files and new files.

- llvm-ld has been removed in upstream, so we remove it as well.

Change-Id: I613ada916156a43993d4bba9cae6dcb6bf40ed2f
RMCodeEmitter.cpp
7744acd1ab73b3eec6f1449f47083abe3fb1b527 03-Aug-2012 Shih-wei Liao <sliao@google.com> Merge with LLVM upstream r160668 (Jul 24th 2012)

Conflicts:
include/llvm/Support/ELF.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Support/Memory.cpp
lib/Transforms/Instrumentation/AddressSanitizer.cpp

Change-Id: Iddd658cf2eadc7165b2805b446d31af2c5c9917f
d49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3 03-Aug-2012 Bob Wilson <bob.wilson@apple.com> Fall back to selection DAG isel for calls to builtin functions.

Fast isel doesn't currently have support for translating builtin function
calls to target instructions. For embedded environments where the library
functions are not available, this is a matter of correctness and not
just optimization. Most of this patch is just arranging to make the
TargetLibraryInfo available in fast isel. <rdar://problem/12008746>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161232 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
2946549a2817681f9117662139cc0f2241939965 03-Aug-2012 Jush Lu <jush.msn@gmail.com> [arm-fast-isel] Add support for shl, lshr, and ashr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161230 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e94ac8871a1ac79bece57335d2abece0feed9c02 03-Aug-2012 Eric Christopher <echristo@apple.com> Add support for the ARM GHC calling convention, this patch was in 3.0,
but somehow managed to be dropped later.

Patch by Karel Gardas.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161226 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCallingConv.td
RMFastISel.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
55499db9a00e9bb7ba9943b2f1b5bc4645bbab1e 03-Aug-2012 Jim Grosbach <grosbach@apple.com> ARM: Tidy up. Remove unused template parameters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161222 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.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
RMInstrThumb2.td
1c3781496081b47412fc70393bcdc5b67b440b02 02-Aug-2012 Jiangning Liu <jiangning.liu@arm.com> Support fpv4 for ARM Cortex-M4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161163 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
fd652df8b36a9d3e6b09ae2b9f7bcb07e88fdfaa 02-Aug-2012 Jiangning Liu <jiangning.liu@arm.com> Fix #13035, a bug around Thumb instruction LDRD/STRD with negative #0 offset index issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161162 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
c1b7ca5ba28ded2d83ae534c8e072c2538d43295 02-Aug-2012 Jiangning Liu <jiangning.liu@arm.com> Fix #13138, a bug around ARM instruction DSB encoding and decoding issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161161 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMBaseInfo.h
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCCodeEmitter.cpp
cc5fc665e3f68bd70b42516adaf4a2f9879f2940 01-Aug-2012 Jim Grosbach <grosbach@apple.com> ARM: Remove redundant instalias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161134 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
046eea5247b62c9c8b230800d224c0be48fd75e0 01-Aug-2012 Jim Grosbach <grosbach@apple.com> Clean up formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161133 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
2769028ab4732ce6083a71c67dc19b8901f55d5a 01-Aug-2012 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161132 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5af4de18ef244d2ce52b2f2ac0a703409b6fdfe6 30-Jul-2012 Kevin Enderby <enderby@apple.com> Fix a bug in ARMMachObjectWriter::RecordRelocation() in ARMMachObjectWriter.cpp
where the other_half of the movt and movw relocation entries needs to get set
and only with the 16 bits of the other half.

rdar://10038370


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160978 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
242204784bae63da503c2f509a38c532085f0eb1 25-Jul-2012 Jim Grosbach <grosbach@apple.com> ARM: Don't assume an SDNode is a constant.

Before accessing a node as a ConstandSDNode, make sure it actually is one.
No testcase of non-trivial size.

rdar://11948669

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160735 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c8e41c591741b3da1077f7000274ad040bef8002 23-Jul-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo (the the => the)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160621 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMachObjectWriter.cpp
ee649839a243bb29b59b322203b982b2f132e7c5 19-Jul-2012 Jush Lu <jush.msn@gmail.com> [arm-fast-isel] Add support for vararg function calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160500 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8d8d961de4878b17dca9d8b23666df223f6d654b 18-Jul-2012 Andrew Trick <atrick@apple.com> Fix ARMTargetLowering::isLegalAddImmediate to consider thumb encodings.

Based on Evan's suggestion without a commitable test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160441 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
49b446fa0a0daabebdb18a8ef884acda353399cf 18-Jul-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160440 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7c82e6a32a84e238c9e4e57dd43eaba540a79ce1 18-Jul-2012 Joel Jones <joel_k_jones@apple.com> More replacing of target-dependent intrinsics with target-indepdent
intrinsics. The second instruction(s) to be handled are the vector versions
of count set bits (ctpop).

The changes here are to clang so that it generates a target independent
vector ctpop when it sees an ARM dependent vector bits set count. The changes
in llvm are to match the target independent vector ctpop and in
VMCore/AutoUpgrade.cpp to update any existing bc files containing ARM
dependent vector pop counts with target-independent ctpops. There are also
changes to an existing test case in llvm for ARM vector count instructions and
to a test for the bitcode upgrade.

<rdar://problem/11892519>

There is deliberately no test for the change to clang, as so far as I know, no
consensus has been reached regarding how to test neon instructions in clang;
q.v. <rdar://problem/8762292>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160410 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
06a6a300c5f7100e4665667c689369e078d2ad59 14-Jul-2012 Joel Jones <joel_k_jones@apple.com> This is one of the first steps at moving to replace target-dependent
intrinsics with target-indepdent intrinsics. The first instruction(s) to be
handled are the vector versions of count leading zeros (ctlz).

The changes here are to clang so that it generates a target independent
vector ctlz when it sees an ARM dependent vector ctlz. The changes in llvm
are to match the target independent vector ctlz and in VMCore/AutoUpgrade.cpp
to update any existing bc files containing ARM dependent vector ctlzs with
target-independent ctlzs. There are also changes to an existing test case in
llvm for ARM vector count instructions and a new test for the bitcode upgrade.

<rdar://problem/11831778>

There is deliberately no test for the change to clang, as so far as I know, no
consensus has been reached regarding how to test neon instructions in clang;
q.v. <rdar://problem/8762292>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160200 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
9af64303fa887a3d9b75e715787ba587c3f18139 12-Jul-2012 Manman Ren <mren@apple.com> ARM: fix typo in comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160093 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
45ed19499b8f7025d9acf91cc37fbf6ea63abc4f 12-Jul-2012 Manman Ren <mren@apple.com> ARM: Fix optimizeCompare to correctly check safe condition.

It is safe if CPSR is killed or re-defined.
When we are done with the basic block, check whether CPSR is live-out.
Do not optimize away cmp if CPSR is live-out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160090 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
fae96f17b4b022fccd94a143698112a17d8ddf05 10-Jul-2012 Richard Barton <richard.barton@arm.com> Fix instruction description of VMOV (between two ARM core registers and two single-precision resiters) (and do it properly this time!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159989 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
isassembler/ARMDisassembler.cpp
a4fba5eaf8e62bd08d75cd3e79fb40fc4fb71c16 10-Jul-2012 Jim Grosbach <grosbach@apple.com> ARM: Allow more flexible patterns in NEON formats.

Some NEON instructions want to match against normal SDNodes for some
operand types and Intrinsics for others. For example, CTLZ. To enable this,
switch from explicitly requiring Intrinsic on the class templates to using
SDPatternOperator instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159974 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
270e3625b23174688aa5b6f1e1d0cd42086541de 09-Jul-2012 Chad Rosier <mcrosier@apple.com> Revert r159938 (and r159945) to appease the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159960 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
isassembler/ARMDisassembler.cpp
874b863f2ab9158db6f7f1b773b77e6334e31c41 09-Jul-2012 Richard Barton <richard.barton@arm.com> Some formatting to keep Clang happy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159948 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
83cfff6229c4afe9af9d48d4109df9a503233a7c 09-Jul-2012 Richard Barton <richard.barton@arm.com> Oops - correct broken disassembly for VMOV


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159945 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
2e7e34ba5485320a84ca69c83d242e24433f7acd 09-Jul-2012 Richard Barton <richard.barton@arm.com> Fix instruction description of VMOV (between two ARM core registers and two single-precision resiters)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159938 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
isassembler/ARMDisassembler.cpp
8ed97ef5f6980c689a5770ec30488601201e17c3 09-Jul-2012 Richard Barton <richard.barton@arm.com> Prevent ARM assembler from losing a right shift by #32 applied to a register


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159937 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c985e6ece66cf2046f0113da9eb2dec331a6b09f 09-Jul-2012 Richard Barton <richard.barton@arm.com> Spelling!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159936 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2b6652fb10d7005e41010b0e0800afe16ae18a34 09-Jul-2012 Richard Barton <richard.barton@arm.com> Teach the assembler to use the narrow thumb encodings of various three-register dp instructions where permissable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159935 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2661b411ccc81b1fe19194d3f43b2630cbef3f28 07-Jul-2012 Andrew Trick <atrick@apple.com> I'm introducing a new machine model to simultaneously allow simple
subtarget CPU descriptions and support new features of
MachineScheduler.

MachineModel has three categories of data:
1) Basic properties for coarse grained instruction cost model.
2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD).
3) Instruction itineraties for detailed per-cycle reservation tables.

These will all live side-by-side. Any subtarget can use any
combination of them. Instruction itineraries will not change in the
near term. In the long run, I expect them to only be relevant for
in-order VLIW machines that have complex contraints and require a
precise scheduling/bundling model. Once itineraries are only actively
used by VLIW-ish targets, they could be replaced by something more
appropriate for those targets.

This tablegen backend rewrite sets things up for introducing
MachineModel type #2: per opcode/operand cost model.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159891 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMScheduleA8.td
RMScheduleA9.td
70cfaa34645bf8ad232c400f0fe7c48a9d715586 07-Jul-2012 Chad Rosier <mcrosier@apple.com> Fix the naming of ensureAlignment. Per the coding standard function names
should be camel case, and start with a lower case letter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159877 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
db6faeb19d59deab232502da7d529abc4404171a 06-Jul-2012 Jim Grosbach <grosbach@apple.com> ARM: Add test cleanup entry to the README.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159864 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
bd985efa99b7540e664b7fc2d636348c23f63d75 06-Jul-2012 NAKAMURA Takumi <geek4civic@gmail.com> Revert r159804, "[arm-fast-isel] Add support for vararg function calls."

It broke LLVM :: CodeGen/Thumb2/large-call.ll on several hosts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159817 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a8c4d739f2e763ae6dea7661a3af8393eeebd8ba 06-Jul-2012 Jush Lu <jush.msn@gmail.com> [arm-fast-isel] Add support for vararg function calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159804 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3fb99a73686c39d9855b3f8881add977af3868cb 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Consistently use AnalysisID types in TargetPassConfig.

This makes it possible to just use a zero value to represent "no pass", so
the phony NoPassID global variable is no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159568 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
564fbf6aff8fb95646a1290078a37c2d4dbe629f 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Add all codegen passes to the PassManager via TargetPassConfig.

This is a preliminary step toward having TargetPassConfig be able to
start and stop the compilation at specified passes for unit testing
and debugging. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159567 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
14ccc7b963861a856b593cc4fff62decd8ce248a 02-Jul-2012 Andrew Trick <atrick@apple.com> Revert accidental checkin.

My last checkin was apparently not the branch I intended. It was missing one change (added by chandlerc), and contained a spurious change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159548 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
218ee74a011c0d350099c452810da0bd57a15047 02-Jul-2012 Andrew Trick <atrick@apple.com> Reapply "Make NumMicroOps a variable in the subtarget's instruction itinerary."

Reapplies r159406 with minor cleanup. The regressions appear to have been spurious.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159541 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.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
RMInstrThumb2.td
76c6ccbd4cee0637c961e32435177ab89e931fed 30-Jun-2012 Manman Ren <mren@apple.com> ARM: Clean up optimizeCompare in peephole, no functional change.

Use getUniqueVRegDef.
Replace a loop with existing interfaces: modifiesRegister and readsRegister.
Factor out code into inline functions and simplify the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159470 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
de7266c611b37ec050efb53b73166081a98cea13 29-Jun-2012 Manman Ren <mren@apple.com> Add SrcReg2 to analyzeCompare and optimizeCompareInstr to handle Compare
instructions with two register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159465 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
3e4b3b9043b1ced24e07d8d1174feeee06c6912e 29-Jun-2012 Andrew Trick <atrick@apple.com> Revert "Make NumMicroOps a variable in the subtarget's instruction itinerary."

This reverts commit r159406. I noticed a performance regression so I'll back out for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159411 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
0d9513c74f3e4c019406273cce49e43508dc4dcf 29-Jun-2012 Andrew Trick <atrick@apple.com> Make NumMicroOps a variable in the subtarget's instruction itinerary.

The TargetInstrInfo::getNumMicroOps API does not change, but soon it
will be used by MachineScheduler. Now each subtarget can specify the
number of micro-ops per itinerary class. For ARM, this is currently
always dynamic (-1), because it is used for load/store multiple which
depends on the number of register operands.

Zero is now a valid number of micro-ops. This can be used for
nop pseudo-instructions or instructions that the hardware can squash
during dispatch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159406 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
0bcbd1df7a204e1e512f1a27066d725309de1b13 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.

The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4acefe192f02849bcb2fd620a9f507c00d39a686 27-Jun-2012 Richard Barton <richard.barton@arm.com> Teach assembler to handle capitalised operation values for DSB instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159259 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b69182095ce19c07a7207ab546f61bffc5111d8e 27-Jun-2012 Richard Barton <richard.barton@arm.com> Prevent ARM Assembler crashing on unrecognised assembly format for DSB instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159257 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d096479f31eb51bcbd418b6e852a34210141d80e 27-Jun-2012 Evan Cheng <evan.cheng@apple.com> Add a missing check to avoid dereference null. No sensible test case possible. Sorry. rdar://11745134

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159236 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0518fca843ff87d069ecb07fc00d306c1f587d58 26-Jun-2012 Jack Carter <jcarter@mips.com> There are a number of generic inline asm operand modifiers that
up to r158925 were handled as processor specific. Making them
generic and putting tests for these modifiers in the CodeGen/Generic
directory caused a number of targets to fail.

This commit addresses that problem by having the targets call
the generic routine for generic modifiers that they don't currently
have explicit code for.

For now only generic print operands 'c' and 'n' are supported.vi


Affected files:

test/CodeGen/Generic/asm-large-immediate.ll
lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/NVPTX/NVPTXAsmPrinter.cpp
lib/Target/ARM/ARMAsmPrinter.cpp
lib/Target/XCore/XCoreAsmPrinter.cpp
lib/Target/X86/X86AsmPrinter.cpp
lib/Target/Hexagon/HexagonAsmPrinter.cpp
lib/Target/CellSPU/SPUAsmPrinter.cpp
lib/Target/Sparc/SparcAsmPrinter.cpp
lib/Target/MBlaze/MBlazeAsmPrinter.cpp
lib/Target/Mips/MipsAsmPrinter.cpp

MSP430 isn't represented because it did not even run with
the long existing 'c' modifier and it was not apparent what
needs to be done to get it inline asm ready.

Contributer: Jack Carter



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159203 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
540cda34b03388b510ded4546acfc7e276700daa 25-Jun-2012 Manman Ren <mren@apple.com> ARM: update peephole optimization.

More condition codes are included when deciding whether to remove cmp after
a sub instruction. Specifically, we extend from GE|LT|GT|LE to
GE|LT|GT|LE|HS|LS|HI|LO|EQ|NE. If we have "sub a, b; cmp b, a; movhs", we
should be able to replace with "sub a, b; movls".

rdar: 11725965


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159166 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d5c407d2d01ff8797c29343e4da5f765fe52fb5f 24-Jun-2012 NAKAMURA Takumi <geek4civic@gmail.com> llvm/lib: [CMake] Add explicit dependency to intrinsics_gen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159112 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
70c9bf3c1a77b5707c92a7cfe74104c320480391 23-Jun-2012 Jim Grosbach <grosbach@apple.com> ARM: Add a better diagnostic for some out of range immediates.

As an example of how the custom DiagnosticType can be used to provide
better operand-mismatch diagnostics, add a custom diagnostic for
the imm0_15 operand class used for several system instructions.
Update the tests to expect the improved diagnostic.

rdar://8987109

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159051 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
d85934b3e5a96040e199e1b098705eb56cde584a 22-Jun-2012 Andrew Trick <atrick@apple.com> Use "NoItineraries" for processors with no itineraries.

This makes it explicit when ScoreboardHazardRecognizer will be used.
"GenericItineraries" would only make sense if it contained real
itinerary values and still required ScoreboardHazardRecognizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158963 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSchedule.td
e2b32bb20ee76f24708b3c9e19b6fbc651c25637 22-Jun-2012 Andrew Trick <atrick@apple.com> ARM scheduling fix: don't guess at implicit operand latency.

This is a minor drive-by fix with no robust way to unit test.
As an example see neon-div.ll:
SU(16): %Q8<def> = VMOVLsv4i32 %D17, pred:14, pred:%noreg, %Q8<imp-use,kill>
val SU(1): Latency=2 Reg=%Q8
...should be latency=1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158960 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ef2d9e59aba381c42e018df9c26f9025c1995a64 22-Jun-2012 Andrew Trick <atrick@apple.com> ARM scheduling fix: compute predicated implicit use properly.

Minor drive by fix to cleanup latency computation. Calling
getOperandLatency with a deliberately incorrect operand index does not
give you the latency you want.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158959 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
e0231413225cf47aaf3238bf21afd0d59025028d 22-Jun-2012 Lang Hames <lhames@gmail.com> Rename -allow-excess-fp-precision flag to -fuse-fp-ops, and switch from a
boolean flag to an enum: { Fast, Standard, Strict } (default = Standard).

This option controls the creation by optimizations of fused FP ops that store
intermediate results in higher precision than IEEE allows (E.g. FMAs). The
behavior of this option is intended to match the behaviour specified by a
soon-to-be-introduced frontend flag: '-ffuse-fp-ops'.

Fast mode - allows formation of fused FP ops whenever they're profitable.

Standard mode - allow fusion only for 'blessed' FP ops. At present the only
blessed op is the fmuladd intrinsic. In the future more blessed ops may be
added.

Strict mode - allow fusion only if/when it can be proven that the excess
precision won't effect the result.

Note: This option only controls formation of fused ops by the optimizers. Fused
operations that are explicitly requested (e.g. FMA via the llvm.fma.* intrinsic)
will always be honored, regardless of the value of this option.

Internally TargetOptions::AllowExcessFPPrecision has been replaced by
TargetOptions::AllowFPOpFusion.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dc13d2ed2feb3fd9d4953a1dd49d6a93d6867bc5 21-Jun-2012 Lang Hames <lhames@gmail.com> Add a missing llvm.fma -> VFNMS pattern to the ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158902 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
d693cafcfb9e67ba7040cb810e4409a166421482 20-Jun-2012 Lang Hames <lhames@gmail.com> Add DAG-combines for aggressive FMA formation.

This patch adds DAG combines to form FMAs from pairs of FADD + FMUL or
FSUB + FMUL. The combines are performed when:
(a) Either
AllowExcessFPPrecision option (-enable-excess-fp-precision for llc)
OR
UnsafeFPMath option (-enable-unsafe-fp-math)
are set, and
(b) TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) is true for the type of
the FADD/FSUB, and
(c) The FMUL only has one user (the FADD/FSUB).

If your target has fast FMA instructions you can make use of these combines by
overriding TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) to return true for
types supported by your FMA instruction, and adding patterns to match ISD::FMA
to your FMA instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158757 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c9a4e269d00dc9e2ba0c7b77721fa54cfb5a59fa 19-Jun-2012 Jan Wen Voung <jvoung@google.com> Have ARM ELF use correct reloc for "b" instr.

The condition code didn't actually matter for arm "b" instructions,
unlike "bl". It should just use the R_ARM_JUMP24 reloc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158722 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
d6b43a317e71246380db55a50b799b062b53cdce 19-Jun-2012 Rafael Espindola <rafael.espindola@gmail.com> Move the support for using .init_array from ARM to the generic
TargetLoweringObjectFileELF. Use this to support it on X86. Unlike ARM,
on X86 it is not easy to find out if .init_array should be used or not, so
the decision is made via TargetOptions and defaults to off.

Add a command line option to llc that enables it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158692 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
RMTargetObjectFile.h
eda9fdf979bd1c017304f8e9331f2c7df5df2d1c 19-Jun-2012 Manman Ren <mren@apple.com> ARM: use NOEN loads and stores if possible when handling struct byval.

This change is to be enabled in clang.

rdar://9877866


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158684 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.td
f49a4092bcf679d1634a8023efc593e98a3e5663 16-Jun-2012 Kevin Enderby <enderby@apple.com> Fix the encoding of the armv7m (MClass) for MSR registers other than aspr,
iaspr, espr and xpsr which also needed to have 0b10 in their mask encoding bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158560 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
307473dec0e2fa966037d04725a40b33669dddc8 15-Jun-2012 Manman Ren <mren@apple.com> ARM: optimization for sub+abs.

This patch will optimize abs(x-y)
FROM
sub, movs, rsbmi
TO
subs, rsbmi

For abs, we will use cmp instead of movs. This is necessary because we already
have an existing peephole pass which optimizes away cmp following sub.

rdar: 11633193


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158551 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d628a587b654ba737b570ee0611f70a1deb58bbc 15-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve <undef> flags in ARMExpandPseudo.

This probably mostly shows up in bugpoint-generated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158527 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
a1c7367a5bed459acc88e3ea2a482b4b5dac942a 14-Jun-2012 Richard Barton <richard.barton@arm.com> Replace assertion failure for badly formatted CPS instrution with error message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158445 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
efc967e04459753a588ebf5820e526d790fe1cfa 14-Jun-2012 Jush Lu <jush.msn@gmail.com> Cleanup whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158443 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
49d6fc02efc45932e4d889fa56bbbfeefafbdc85 12-Jun-2012 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] Add support for -arm-long-calls.
Patch by Jush Lu <jush.msn@gmail.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158368 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
397f4e3583b36b23047fec06b1648f0771cd6fe3 07-Jun-2012 Andrew Trick <atrick@apple.com> Continue factoring computeOperandLatency. Use it for ARM hasHighOperandLatency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158164 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
68b16541cc58411c7b0607ca4c0fb497222b668d 07-Jun-2012 Andrew Trick <atrick@apple.com> ARM getOperandLatency rewrite.

Match expectations of the new latency API. Cleanup and make the logic consistent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158163 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f377071bf8393d35797107c753da3e84aea94ebe 07-Jun-2012 Andrew Trick <atrick@apple.com> ARM getOperandLatency should return -1 for unknown, consistent with API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158162 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ed7a51e69209af87f3749d5f95740f69a1dc7711 07-Jun-2012 Andrew Trick <atrick@apple.com> Fix ARM getInstrLatency logic to work with the current API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158161 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a7542d5f870c5d98960d1676e23ac1d1d975d7e5 06-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused private fields found by clang's new -Wunused-private-field.

There are some that I didn't remove this round because they looked like
obvious stubs. There are dead variables in gtest too, they should be
fixed upstream.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158090 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
c8f2fcc9a381f1e024656568f2face2f600e0328 06-Jun-2012 Richard Barton <richard.barton@arm.com> Correct decoder for T1 conditional B encoding


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158055 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
b7e0289fb320c8440ba5eed121a8b932dbd806a2 05-Jun-2012 Andrew Trick <atrick@apple.com> misched: API for minimum vs. expected latency.

Minimum latency determines per-cycle scheduling groups.
Expected latency determines critical path and cost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158021 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
f94f051cf5bb2ffbe08f42d1ad6646c900ed6aaa 05-Jun-2012 Andrew Trick <atrick@apple.com> ARM itinerary properties.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157980 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMSubtarget.cpp
fc992996f751e0941951b6d08d8f1e80ebec1385 05-Jun-2012 Andrew Trick <atrick@apple.com> misched: Added MultiIssueItineraries.

This allows a subtarget to explicitly specify the issue width and
other properties without providing pipeline stage details for every
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157979 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
d9b0b025612992a0b724eeca8bdf10b1d7a5c355 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157885 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
smParser/ARMAsmParser.cpp
396618b43a85e12d290a90b181c6af5d7c0c5f11 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch all register list clients to the new MC*Iterator interface.

No functional change intended.

Sorry for the churn. The iterator classes are supposed to help avoid
giant commits like this one in the future. The TableGen-produced
register lists are getting quite large, and it may be necessary to
change the table representation.

This makes it possible to do so without changing all clients (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157854 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
bbff4ee92d91de4c7ee6657a1eea95c5ed8105de 01-Jun-2012 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] Fix handling of the frameaddress intrinsic. If depth is 0
then DestReg is undefined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157840 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
68f25571e759c1fcf2da206109647259f49f7416 01-Jun-2012 Manman Ren <mren@apple.com> ARM: properly handle alignment for struct byval.

Factor out the expansion code into a function.
This change is to be enabled in clang.

rdar://9877866


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157830 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
763a75dbf719242e7f99c6447d20b9bffb75dfa2 01-Jun-2012 Manman Ren <mren@apple.com> ARM: support struct byval in llvm

We handle struct byval by inserting a pseudo op, which will be expanded to a
loop at ExpandISelPseudos.
A separate patch for clang will be submitted to enable struct byval.

rdar://9877866


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157793 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
4c91bdafacd7387fd92fb153de3d48ef7722bbd2 31-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid depending on list orders and register numbering.

This code is covered by test/CodeGen/ARM/arm-modifier.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157720 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ada759d5fa8a3ecc0e97d88761badfba9193587f 30-May-2012 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] Add support for the llvm.frameaddress() intrinsic.
Patch by Jush Lu <jush.msn@gmail.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157696 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d2ea0e10cbd158c93fb870cdd03001b9cd1156b8 25-May-2012 Justin Holewinski <jholewinski@nvidia.com> Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall
to pass around a struct instead of a large set of individual values. This
cleans up the interface and allows more information to be added to the struct
for future targets without requiring changes to each and every target.

NV_CONTRIB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSelectionDAGInfo.cpp
51f50c110651cedebdb7194e5e686d3a27dcce4e 24-May-2012 Craig Topper <craig.topper@gmail.com> Make some opcode tables static and const. Allows code to avoid making copies to pass the tables around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157373 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
032f441afcdd70eb6bda477d32e8c372443b4e6f 24-May-2012 Craig Topper <craig.topper@gmail.com> Mark a static array as const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157368 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cd2859eef83708c00330c94f6842499b48d5ed02 24-May-2012 Craig Topper <craig.topper@gmail.com> Mark a static table as const. Shrink opcode size in static tables to uint16_t. Simplify loop iterating over one of those tables. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157367 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1c8fccbc12e6348c8003aff9b89078324257fc4e 23-May-2012 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] Add support for non-global callee.
Patch by Jush Lu <jush.msn@gmail.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157336 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dd051a0414d0c807388bdc9584b71729b3158571 22-May-2012 NAKAMURA Takumi <geek4civic@gmail.com> ARMDisassembler.cpp: Fix utf8 char in comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157292 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
b3a119a257978857c1d62ad74ed4123198ea6703 22-May-2012 Jim Grosbach <grosbach@apple.com> ARM: .end_data_region mismatch in Thumb2.

32-bit offset jump tables just use real branch instructions and so aren't
marked as data regions. We were still emitting the .end_data_region
marker though, which assert()ed.

rdar://11499158

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157221 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
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
RMInstrThumb2.td
027c32a14ee953079e768b84ff329b37c442e208 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use the right register class for LDRrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157152 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6e6269a976baee45717265dbd12996367df6a201 20-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Transfer memory operands to the right instruction.

They need to go on the PICLDR as the verifier points out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157151 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
3e96531186ba574b0c25a4be62d24b8b7d752c9f 18-May-2012 Jim Grosbach <grosbach@apple.com> Refactor data-in-code annotations.

Use a dedicated MachO load command to annotate data-in-code regions.
This is the same format the linker produces for final executable images,
allowing consistency of representation and use of introspection tools
for both object and executable files.

Data-in-code regions are annotated via ".data_region"/".end_data_region"
directive pairs, with an optional region type.

data_region_directive := ".data_region" { region_type }
region_type := "jt8" | "jt16" | "jt32" | "jta32"
end_data_region_directive := ".end_data_region"

The previous handling of ARM-style "$d.*" labels was broken and has
been removed. Specifically, it didn't handle ARM vs. Thumb mode when
marking the end of the section.

rdar://11459456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157062 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
CTargetDesc/ARMMCAsmInfo.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
44600d708154e09f4e53719f503e2446eb2b7f53 17-May-2012 Tim Northover <Tim.Northover@arm.com> Remove incorrect pattern for ARM SMML instruction.

Patch by Meador Inge.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156989 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
918f55fe239f00651e396be841f2b3b6e242f98d 15-May-2012 Jim Grosbach <grosbach@apple.com> Allow MCCodeEmitter access to the target MCRegisterInfo.

Add the MCRegisterInfo to the factories and constructors.

Patch by Tom Stellard <Tom.Stellard@amd.com>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156828 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCTargetDesc.h
9cc178726f323fb859acd7f8fc657a939fe96566 14-May-2012 David Blaikie <dblaikie@gmail.com> Fix use of uninitialized variable.

Found by GCC's maybe-uninitialized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156780 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
226ddf5278dd9a9d2d74d859d387bf5b6bac1926 11-May-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for selecting @llvm.trap().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156646 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2b3b335f2d2886bbffa005998972de689a9f3e21 11-May-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Remove -disable-arm-fast-isel option. -fast-isel=0 suffices. Minor cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156632 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2a2e9d54e95f01eaa5626dcdf57950e9e6f95f2c 11-May-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Cleaner fix for when we're unable to handle a non-double multi-reg
retval. Hoists check before emitting the call to avoid unnecessary work.
rdar://11430407
PR12796


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156628 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2f6ae41f14af87d1019d771b101580381cdfc44f 11-May-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Rather then assert (or segfault in a non-asserts build), fall back
to selection DAG isel if we're unable to handle a non-double multi-reg retval.
rdar://11430407
PR12796


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156622 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f4bd21c256f6aabdc13f54ff7bf5d69e8305302c 11-May-2012 Chad Rosier <mcrosier@apple.com> The return type is an unsigned, not a bool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156621 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4949e98cccb98abb0ba3f67c22be757d446ab108 11-May-2012 Manman Ren <mren@apple.com> Add space before an open parenthesis in control flow statements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156620 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
169e9ba2b2c78675a0fa5ad8aebb987fe9c00e23 11-May-2012 Silviu Baranga <silviu.baranga@arm.com> Added the missing bit definition for the 4th bit of the STR (post reg) instruction. It is now set to 0. The patch also sets the unpredictable mask for SEL and SXTB-type instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156609 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
ca3cd419a52c1dedee133d79772ef97f30e5d20b 11-May-2012 Silviu Baranga <silviu.baranga@arm.com> Fixed the LLVM ARM v7 assembler and instruction printer for 8-bit immediate offset addressing. The assembler and instruction printer were not properly handeling the #-0 immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156608 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
247c5ab07c1c136f37f5ad8ade9a1ee086ca452e 11-May-2012 Manman Ren <mren@apple.com> ARM: peephole optimization to remove cmp instruction

This patch will optimize the following cases:
sub r1, r3 | sub r1, imm
cmp r3, r1 or cmp r1, r3 | cmp r1, imm
bge L1

TO
subs r1, r3
bge L1 or ble L1

If the branch instruction can use flag from "sub", then we can replace
"sub" with "subs" and eliminate the "cmp" instruction.

rdar: 10734411


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156599 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
fe65d98dadbedf2650266ac71c1c093c3b97da1f 10-May-2012 Manman Ren <mren@apple.com> Revert: 156550 "ARM: peephole optimization to remove cmp instruction"

This commit broke an external linux bot and gave a compile-time warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156556 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
8ae4f062e4aefe60732b3fc135769aaedddf082d 10-May-2012 Manman Ren <mren@apple.com> ARM: peephole optimization to remove cmp instruction

This patch will optimize the following cases:
sub r1, r3 | sub r1, imm
cmp r3, r1 or cmp r1, r3 | cmp r1, imm
bge L1

TO
subs r1, r3
bge L1 or ble L1

If the branch instruction can use flag from "sub", then we can replace
"sub" with "subs" and eliminate the "cmp" instruction.

rdar: 10734411


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156550 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
397fc4874efe9c17e737d4c5c50bd19dc3bf27f5 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass().

The getPointerRegClass() hook can return register classes that depend on
the calling convention of the current function (ptr_rc_tailcall).

So far, we have been able to infer the calling convention from the
subtarget alone, but as we add support for multiple calling conventions
per target, that no longer works.

Patch by Yiannis Tsiouris!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156328 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMLoadStoreOptimizer.cpp
LxExpansionPass.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
e5f31ad55ef67231b6e415a4a7dc7f1eb7c0871c 05-May-2012 Jim Grosbach <grosbach@apple.com> Nuke a few dead remnants of the CBE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156241 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCAsmInfo.cpp
aaf723dd2bccc052d2dd28e3cc4db76f2a3e2fb0 05-May-2012 Benjamin Kramer <benny.kra@googlemail.com> Add a new target hook "predictableSelectIsExpensive".

This will be used to determine whether it's profitable to turn a select into a
branch when the branch is likely to be predicted.

Currently enabled for everything but Atom on X86 and Cortex-A9 devices on ARM.

I'm not entirely happy with the name of this flag, suggestions welcome ;)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156233 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3610a15c3581dee713820f72d8ffe2e2a632b057 05-May-2012 Kevin Enderby <enderby@apple.com> Tweak to the fix in r156212, as with the change in removing the shift the
SignExtend32<22>(Val<<1) also needs to change to SignExtend32<21>(Val) .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156213 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
ce734d5ffe53273caa7df762f70803050b0ce929 05-May-2012 Kevin Enderby <enderby@apple.com> Fix a bug in the ARM disassembler for wide branch conditional instructions
where the symbolic operand's displacement was incorrectly shifted left by 1.
rdar://11387046


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156212 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
2c7e5c714c8675f757c4936a3a2132c2466a626c 04-May-2012 Sebastian Pop <spop@codeaurora.org> Added missing CMN case in Thumb2SizeReduction pass so that LLVM emits 16-bits encoding of CMN instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156195 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
39af9449a26054ffbf879f5a7f75da2022e4b235 04-May-2012 Matt Beaumont-Gay <matthewbg@google.com> Pacify GCC's -Wreturn-type

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156189 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fd5abd546e8e035755005a654d60d6f5f74cfe2c 04-May-2012 Hans Wennborg <hans@hanshq.net> Make ARM and Mips use TargetMachine::getTLSModel()

This moves the logic for selecting a TLS model to a single place,
instead of the previous three (ARM, Mips, and X86 which already
uses this function).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156162 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
338607ae0ddab00e197222e769748e2e0c0b4e18 04-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the SubRegClasses field from RegisterClass descriptions.

This information in now computed by TableGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156152 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
2d524b0765145f1c7888166c985a25452f16b2bc 04-May-2012 Kevin Enderby <enderby@apple.com> Fix issues with the ARM bl and blx thumb instructions and the J1 and J2 bits
for the assembler and disassembler. Which were not being set/read correctly
for offsets greater than 22 bits in some cases.

Changes to lib/Target/ARM/ARMAsmBackend.cpp from Gideon Myles!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156118 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMAsmBackend.cpp
b422d0b65e15435b6aef4a92f5663db9ec6659d4 03-May-2012 Silviu Baranga <silviu.baranga@arm.com> Fixed disassembler for vstm/vldm ARM VFP instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156077 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
2727930ab4ce260fef0487bc878c1cd4c3769cef 02-May-2012 Jim Grosbach <grosbach@apple.com> ARM: Add missing two-operand VBIC aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0a552d611efe9d1070aff1d35c7f169dd1ab0be7 02-May-2012 Richard Barton <richard.barton@arm.com> Disallow YIELD and other allocated nop hints in pre-ARMv6 architectures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155983 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
94b590f8faf4dbba406f263e6a839882b0c68a94 01-May-2012 Jim Grosbach <grosbach@apple.com> ARM: allow vanilla expressions for movw/movt.

Expressions for movw/movt don't always have an :upper16: or :lower16:
on them and that's ok. When they don't, it's just a plain [0-65536]
immediate result, effectively the same as a :lower16: variant kind.

rdar://10550147

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155941 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
7c4ce30ea6a9d0410f306e805403dd224c3df65c 01-May-2012 Bill Wendling <isanbard@gmail.com> Change the PassManager from a reference to a pointer.

The TargetPassManager's default constructor wants to initialize the PassManager
to 'null'. But it's illegal to bind a null reference to a null l-value. Make the
ivar a pointer instead.
PR12468


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155902 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
7a3afa91ad8f68428373948fc16375e99bff3c6f 01-May-2012 Jim Grosbach <grosbach@apple.com> ARM: Diagnostics for out of range fixups.

Replace some assert() calls w/ actual diagnostics. In a perfect world,
there'd be range checks on these values long before things ever reached
this code. For now, though, issuing a better-late-than-never diagnostic
is still a big improvement over assert().

rdar://11347287

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155851 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
887d095fb6c6fb0980ab90a9211fb2420d0da7c0 30-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix address calculation error from r155744.

This was exposed by SingleSource/UnitTests/Vector/constpool.c.

The computed size of a basic block isn't always a multiple of its known
alignment, and that can introduce extra alignment padding after the
block.

<rdar://problem/11347135>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155845 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ff73d8fef9a94ceb2fc35d9371deeb0214c0eeee 30-Apr-2012 Bob Wilson <bob.wilson@apple.com> Don't introduce illegal types when creating vmull operations. <rdar://11324364>

ARM BUILD_VECTORs created after type legalization cannot use i8 or i16
operands, since those types are not legal. Instead use i32 operands, which
will be implicitly truncated by the BUILD_VECTOR to match the element type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155824 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9b10dae0bf3a796ac06e94f072ac67126e30a255 28-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a problem with blocks that need to be split twice.

The code could search past the end of the basic block when there was
already a constant pool entry after the block.

Test case with giant basic block in SingleSource/UnitTests/Vector/constpool.c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155753 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a9cc08f24f61e2663a131d7ac16c329b75162e7b 28-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: Thumb add(sp plus register) asm constraints.

Make sure when parsing the Thumb1 sp+register ADD instruction that
the source and destination operands match. In thumb2, just use the
wide encoding if they don't. In Thumb1, issue a diagnostic.

rdar://11219154

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155748 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
bb32f1d545241ab957f402165cec359d4473c0ca 28-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: Tweak tADDrSP definition for consistent operand order.

Make the operand order of the instruction match that of the asm syntax.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155747 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ARMDisassembler.cpp
456ff46e668f361f79e8e91f145152089cd7d933 28-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Track worst case alignment padding more accurately.

Previously, ARMConstantIslandPass would conservatively compute the
address of an aligned basic block as:

RoundUpToAlignment(Offset + UnknownPadding)

This worked fine for the layout algorithm itself, but it could fool the
verify() function because it accounts for alignment padding twice: Once
when adding the worst case UnknownPadding, and again by rounding up the
fictional block offset. This meant that when optimizeThumb2Instructions
would shrink an instruction, the conservative distance estimate could
grow. That shouldn't be possible since the woorst case alignment padding
wss already included.

This patch drops the use of RoundUpToAlignment, and depends only on
worst case padding to compute conservative block offsets. This has the
weird effect that the computed offset for an aligned block may not be
aligned.

The important difference is that shrinking an instruction can never
cause the estimated distance between two instructions to grow. The
estimated distance is always larger than the real distance that only the
assembler knows.

<rdar://problem/11339352>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155744 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
7787800481ad854eed5d976778dd493eb49bfaf9 27-Apr-2012 Lang Hames <lhames@gmail.com> Fix the order of the operands in the llvm.fma intrinsic patterns for ARM,
<rdar://problem/11325085>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155724 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
04a09a461beb4ec629fe53e601b7665547ac35c3 27-Apr-2012 Richard Barton <richard.barton@arm.com> Fix ARM assembly parsing for upper case condition codes on IT instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155720 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4d2f077df1b46a126b5595d983f233ec896b757e 27-Apr-2012 Richard Barton <richard.barton@arm.com> Refactor IT handling not to store the bottom bit of the condition code in the mask operand in the MCInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155700 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
afb3b5ebe61b480527de86311d2a0770fc857d38 27-Apr-2012 Evan Cheng <evan.cheng@apple.com> Implement a bastardized ABI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155686 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMSubtarget.cpp
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
RMInstrThumb2.td
CTargetDesc/ARMMCTargetDesc.cpp
9da7892fbe1c9e7c592c5928e36724a0e190a777 26-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: Thumb ldr(literal) base address alignment is 32-bits.

The base address for the PC-relative load is Align(PC,4), so it's the
address of the word containing the 16-bit instruction, not the address
of the instruction itself. Ugh.

rdar://11314619

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155659 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
37abe8df4a4e74513e2daa0cdf0b801bec94dade 26-Apr-2012 Tim Northover <Tim.Northover@arm.com> Use VLD1 in NEON extenting-load patterns instead of VLDR.

On some cores it's a bad idea for performance to mix VFP and NEON instructions
and since these patterns are NEON anyway, the NEON load should be used.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155630 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e38993f89288f8dd96451fe3ba514950520757ad 26-Apr-2012 Tim Northover <Tim.Northover@arm.com> Test commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155626 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e67a4163f5d2ad8e42a3aa0ccdaa27d85f6d5be4 26-Apr-2012 Evan Cheng <evan.cheng@apple.com> If triple is armv7 / thumbv7 and a CPU is specified, do not automatically assume
the feature set of v7a. This comes about if the user specifies something like
-arch armv7 -mcpu=cortex-m3. We shouldn't be generating instructions such as
uxtab in this case.

rdar://11318438


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155601 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
b56e4115ed33dae56108ed4ce88ee3a0e0392bfc 25-Apr-2012 Richard Barton <richard.barton@arm.com> Unify internal representation of ARM instructions with a register right-shifted by #32. These are stored as shifts by #0 in the MCInst and correctly marshalled when transforming from or to assembly representation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155565 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
8030e1a0df630ec6ed1cd5ec673f6472558a4dbe 25-Apr-2012 Craig Topper <craig.topper@gmail.com> Add ifdef around getSubtargetFeatureName in tablegen output file so that only targets that want the function get it. This prevents other targets from getting an unused function warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155538 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
14ce6fac242228dacc5c08040e544141a96880e5 25-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: improved assembler diagnostics for missing CPU features.

When an instruction match is found, but the subtarget features it
requires are not available (missing floating point unit, or thumb vs arm
mode, for example), issue a diagnostic that identifies what the feature
mismatch is.

rdar://11257547

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155499 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
95a7e80b5e6423f4daf4c674100706b0036d4fe0 24-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: Nuke remnant bogus code.

r154362 was supposed to delete this bit, but obviously didn't.

rdar://11305594

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155465 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
cf5a1461acaace0f3e7d11fbbcfbf635b8c8ea9d 24-Apr-2012 Shih-wei Liao <sliao@google.com> Merge with LLVM upstream r155090.

Conflicts:
lib/Support/Unix/PathV2.inc

Change-Id: I7b89833849f6cbcfa958a33a971d0f7754c9cb2c
f4478f99dd63503bf0f0e763bc6d684e738bfe3d 24-Apr-2012 Richard Barton <richard.barton@arm.com> Refactor Thumb ITState handling in ARM Disassembler to more efficiently use its vector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155439 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb2.td
RMInstrVFP.td
6a8c7bf8e72338e55f0f9583e1828f62da165d4a 23-Apr-2012 Preston Gurd <preston.gurd@intel.com> This patch fixes a problem which arose when using the Post-RA scheduler
on X86 Atom. Some of our tests failed because the tail merging part of
the BranchFolding pass was creating new basic blocks which did not
contain live-in information. When the anti-dependency code in the Post-RA
scheduler ran, it would sometimes rename the register containing
the function return value because the fact that the return value was
live-in to the subsequent block had been lost. To fix this, it is necessary
to run the RegisterScavenging code in the BranchFolding pass.

This patch makes sure that the register scavenging code is invoked
in the X86 subtarget only when post-RA scheduling is being done.
Post RA scheduling in the X86 subtarget is only done for Atom.

This patch adds a new function to the TargetRegisterClass to control
whether or not live-ins should be preserved during branch folding.
This is necessary in order for the anti-dependency optimizations done
during the PostRASchedulerList pass to work properly when doing
Post-RA scheduling for the X86 in general and for the Intel Atom in particular.

The patch adds and invokes the new function trackLivenessAfterRegAlloc()
instead of using the existing requiresRegisterScavenging().
It changes BranchFolding.cpp to call trackLivenessAfterRegAlloc() instead of
requiresRegisterScavenging(). It changes the all the targets that
implemented requiresRegisterScavenging() to also implement
trackLivenessAfterRegAlloc().

It adds an assertion in the Post RA scheduler to make sure that post RA
liveness information is available when it is needed.

It changes the X86 break-anti-dependencies test to use –mcpu=atom, in order
to avoid running into the added assertion.

Finally, this patch restores the use of anti-dependency checking
(which was turned off temporarily for the 3.1 release) for
Intel Atom in the Post RA scheduler.

Patch by Andy Zhang!

Thanks to Jakob and Anton for their reviews.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155395 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
1d52184cd1714876f0a691c98153a8abef204845 23-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: VSLI two-operand assmebly aliases are tblgen'erated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155393 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e1d866e3c33ac1c3ad01f4bca4485a711c4fe42c 23-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: tblgen'erate VSRA/VRSRA/VSRI assembly two-operand aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155392 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
13b7352fe4883f8ef937a7324309e94398d8cf17 23-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: vqdmulh two-operand aliases are tblgen'erated now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155387 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
bfae1fd1fce97e73299e8ad67a22ae18de5112e9 22-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> ARM: Initialize the HasRAS bit.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155313 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
8e3c17aabf558e19dcd63e159862022d31951d62 21-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: tblgen'erate more NEON two-operand aliases.

VMUL and VEXT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155258 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d83c9ea7d10d8ea5ca8b6cb8a5227b747c505afc 21-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: tblgen'erate more NEON two-operand aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155254 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d8b3ed8f25c1ba76a6db875cd2d6eaa016bd4646 20-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: Update NEON assembly two-operand aliases.

Use the new TwoOperandAliasConstraint to handle lots of the two-operand aliases
for NEON instructions. There's still more to go, but this is a good chunk of
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155210 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
420761a0f193e87d08ee1c51b26bba23ab4bac7f 20-Apr-2012 Craig Topper <craig.topper@gmail.com> Convert more uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155188 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
181b14797518e714e1b6112db849ca53192b8f23 20-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM some VFP tblgen'erated two-operand aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155178 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2a22b691b6b7c4412a66f80519e504b15e732a18 20-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM let TableGen handle a few two-operand aliases.

No need for these explicit aliases anymore. Nuke 'em.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155173 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4c8fab82874a29dcd2b242533af3ebe7f66bfd74 18-Apr-2012 Shih-wei Liao <sliao@google.com> Revert "-arm-long-calls of zone."

This reverts commit 316d9307583d2bf375ba6f93ded63a60f7a80c0d.
RMFastISel.cpp
35ee7d28a69173ca0c11fb6b3271518bf4c5bff6 18-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Added support for disassembling unpredictable swp/swpb ARM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155004 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
6b9f97dd892b0d61d8a1f0ee4f837058f2ca4552 18-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Fix the bahavior of the disassembler when decoding unpredictable mrs instructions on ARM. Now the diasassembler emmits warnings instead of errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155002 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fa1ebc6abe95b79b7f82030eea53586a8704eb7e 18-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Added support for unpredictable mcrr/mcrr2/mrrc/mrrc2 ARM instruction in the disassembler. Since the upredicability conditions are complex, C++ code was added to handle them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155001 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
e546c4c9c3004274c8e275e8303ca078b794bf28 18-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Fixed decoding for the ARM cdp2 instruction. The restriction on the coprocessor number was removed for this instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155000 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9e71231309e8924b89aa94ca86cae883db1d2916 18-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Add suport for unpredicatble cases of the cmp, tst, teq and cmnz ARM instructions in the disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154999 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
316d9307583d2bf375ba6f93ded63a60f7a80c0d 18-Apr-2012 Shih-wei Liao <sliao@google.com> -arm-long-calls of zonr.

Change-Id: Id7ce13f166a6663d42c164010aad0920264d4594
RMFastISel.cpp
3f5966b85ea572002bfd0bb2f7c371ed087ae260 17-Apr-2012 Chad Rosier <mcrosier@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154953 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ef1a3a25b3398768b9fad5526782675b1a8c128f 17-Apr-2012 Jay Foad <jay.foad@gmail.com> Remove unused CCIfSubtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154921 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
72aadc057c3fb92b5ccbc4c856306abd3b9d3b83 17-Apr-2012 James Molloy <james.molloy@arm.com> Fix bad EXTRACT_SUBREG in instruction selection for extending-loads on NEON.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154915 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c5a2a33938182ccc5a1a94f7e1e2b3fdaff6a8b1 17-Apr-2012 Kevin Enderby <enderby@apple.com> Fix ARM disassembly of VLD2 (single 2-element structure to all lanes)
instructions with writebacks. And add test a case for all opcodes handed by
DecodeVLD2DupInstruction() in ARMDisassembler.cpp .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154884 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
bf42f24e6e2347fbd28abb9d442a6cd9d95fcc3b 17-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM two-operand forms for vhadd and vhsub instructions.

rdar://11252521

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154875 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b8768dc32df0bf3edfa2777cdef57bb066e54344 16-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM handle :lower16: and :upper16: after a '#' prefix.

rdar://11252521

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154862 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
199366a6a6b59717cd1b98d8d5df521e3981de19 16-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM assembly two-operand forms for VRSHL.

rdar://11252521

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154840 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
705e2572b442c34d65a3b667e008327b50bac06b 16-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM two-operand aliases for VRHADD instructions.

rdar://11252521

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154832 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e15660acc226291da49379051c0bf0a02262deb6 15-Apr-2012 Shih-wei Liao <sliao@google.com> Non-static arm-reserve-r9.

Change-Id: I96d9a7cb594d89e0377616ad613f8201e9aa8136
RMSubtarget.cpp
362a05a635379ca1151e5ccf735295aed814dd4b 15-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Wire up support for diagnostic ranges in the ARMAsmParser.

As an example, attach range info to the "invalid instruction" message:

$ clang -arch arm -c asm.c
asm.c:2:11: error: invalid instruction
__asm__("foo r0");
^
<inline asm>:1:2: note: instantiated into assembly here
foo r0
^~~

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154765 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7ece9539c287dd536f56e81c69291454186ad262 13-Apr-2012 Evan Cheng <evan.cheng@apple.com> On Darwin targets, only use vfma etc. if the source use fma() intrinsic explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154689 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6c22695c6d10036f5635caec7ea84dbe84cc6bea 13-Apr-2012 Kevin Enderby <enderby@apple.com> For ARM disassembly only print 32 unsigned bits for the address of branch
targets so if the branch target has the high bit set it does not get printed as:
beq 0xffffffff8008c404


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154685 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
b54efe809f258af2bd1cfbde6e196f70a8a33081 12-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM 'adr' fixups don't need the interworking addend tweaking.

They reference the PC directly, so things work properly that way.

rdar://11231229

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154576 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
b318cc16c9e959adb96294b3aa4940e74f68dde3 12-Apr-2012 Kevin Enderby <enderby@apple.com> Fixed a case of ARM disassembly getting an assert on a bad encoding
of a VST instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154544 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1835547ec195c35b3a59bf834f4df942c61a5c53 11-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM 'vuzp.32 Dd, Dm' is a pseudo-instruction.

While there is an encoding for it in VUZP, the result of that is undefined,
so we should avoid it. Define the instruction as a pseudo for VTRN.32
instead, as the ARM ARM indicates.

rdar://11222366

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154511 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
6073b30b053da2c2ac6150dd67cecb304bc614f1 11-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM 'vzip.32 Dd, Dm' is a pseudo-instruction.

While there is an encoding for it in VZIP, the result of that is undefined,
so we should avoid it. Define the instruction as a pseudo for VTRN.32
instead, as the ARM ARM indicates.

rdar://11221911

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154505 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
14b4c0358055c3de5ab404e953ba8c8a678c61ae 11-Apr-2012 Evan Cheng <evan.cheng@apple.com> Add more fused mul+add/sub patterns. rdar://10139676

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154484 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
bee78fe5fcd8464f58bc729dede1a87d763ac3ae 11-Apr-2012 Evan Cheng <evan.cheng@apple.com> Clean up ARM fused multiply + add/sub support some more: rename some isel
predicates.
Also remove NEON2 since it's not really useful and it is confusing. If
NEON + VFP4 implies NEON2 but NEON2 doesn't imply NEON + VFP4, what does it
really mean?

rdar://10139676


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154480 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
92c904539a5e8c021c41d6f134e5df1f90c3eddd 11-Apr-2012 Evan Cheng <evan.cheng@apple.com> Match (fneg (fma) to vfnma. rdar://10139676

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154469 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
a69da35c127dd7e35ae6216d965670643dc55bb6 11-Apr-2012 Kevin Enderby <enderby@apple.com> Fix ARM disassembly of VLD instructions with writebacks.  And add test a case
for all opcodes handed by DecodeVLDInstruction() in ARMDisassembler.cpp .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154459 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
a5378ebe7890aa9a4974f2872aa6632f1b7f2400 11-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM add missing Thumb1 two-operand aliases for shift-by-immediate.

rdar://11222742

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154457 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
82509e5c62a99912c636b22e227b810eaf6eda78 11-Apr-2012 Evan Cheng <evan.cheng@apple.com> Fix a number of problems with ARM fused multiply add/subtract instructions.
1. The new instruction itinerary entries are not properly described.
2. The asm parser can't handle vfms and vfnms.
3. There were no assembler, disassembler test cases.
4. HasNEON2 has the wrong assembler predicate.
rdar://10139676


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154456 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrInfo.td
RMInstrNEON.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
RMSubtarget.h
smParser/ARMAsmParser.cpp
3aef2ff514c879f98571fb91ddbe1142466a6266 10-Apr-2012 Evan Cheng <evan.cheng@apple.com> Handle llvm.fma.* intrinsics. rdar://10914096

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154439 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
RMInstrVFP.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
bf010eb9110009d745382bf15131fbe556562ffe 10-Apr-2012 Evan Cheng <evan.cheng@apple.com> Fix a long standing tail call optimization bug. When a libcall is emitted
legalizer always use the DAG entry node. This is wrong when the libcall is
emitted as a tail call since it effectively folds the return node. If
the return node's input chain is not the entry (i.e. call, load, or store)
use that as the tail call input chain.

PR12419
rdar://9770785
rdar://11195178


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154370 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
2d620c571cb53993b788893b6ef73a6e2805411f 10-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM LDR/LDRT has the same encoding collision as STR/STRT.

Generalized logic of r154141.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154362 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
7f354557089d93cc681c440f9e064c906e1fbd58 09-Apr-2012 Chad Rosier <mcrosier@apple.com> When performing a truncating store, it's possible to rearrange the data
in-register, such that we can use a single vector store rather then a
series of scalar stores.

For func_4_8 the generated code

vldr d16, LCPI0_0
vmov d17, r0, r1
vadd.i16 d16, d17, d16
vmov.u16 r0, d16[3]
strb r0, [r2, #3]
vmov.u16 r0, d16[2]
strb r0, [r2, #2]
vmov.u16 r0, d16[1]
strb r0, [r2, #1]
vmov.u16 r0, d16[0]
strb r0, [r2]
bx lr

becomes

vldr d16, LCPI0_0
vmov d17, r0, r1
vadd.i16 d16, d17, d16
vuzp.8 d16, d17
vst1.32 {d16[0]}, [r2, :32]
bx lr

I'm not fond of how this combine pessimizes 2012-03-13-DAGCombineBug.ll,
but I couldn't think of a way to judiciously apply this combine.

This

ldrh r0, [r0, #4]
strh r0, [r1]

becomes

vldr d16, [r0]
vmov.u16 r0, d16[2]
vmov.32 d16[0], r0
vuzp.16 d16, d17
vst1.32 {d16[0]}, [r1, :32]

PR11158
rdar://10703339


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154340 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
96b66d65c23a596447ce3b14775f5c803fec47b3 09-Apr-2012 Chad Rosier <mcrosier@apple.com> Update comments and remove unnecessary isVolatile() check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154336 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
93abbc272a1445d5108dfe9bddd323f6ac7b96a2 07-Apr-2012 Bob Wilson <bob.wilson@apple.com> Fix Thumb __builtin_longjmp with integrated assembler. <rdar://problem/11203543>

The tLDRr instruction with the last register operand set to the zero register
prints in assembly as if no register was specified, and the assembler encodes
it as a tLDRi instruction with a zero immediate. With the integrated assembler,
that zero register gets emitted as "r0", so we get "ldr rx, [ry, r0]" which
is broken. Emit the instruction as tLDRi with a zero immediate. I don't
know if there's a good way to write a testcase for this. Suggestions welcome.

Opportunities for follow-up work:
1) The asm printer should complain if a non-optional register operand is set
to the zero register, instead of silently dropping it.
2) The integrated assembler should complain in the same situation, instead of
silently emitting the operand as "r0".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154261 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d4f020a3af325630973df8d3a084d0b0e3b68ebc 07-Apr-2012 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154226 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFastISel.cpp
RMISelLowering.cpp
RMTargetMachine.cpp
humb2SizeReduction.cpp
967cbbd8b5a328498b27a70bfa5f621c853692df 06-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> ARMPat is equivalent to Requires<[IsARM]>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154210 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
aa395e8c5dcc6d13f1f8ae65ce89f36383cb714a 06-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate iOS-specific tail call instructions.

After register masks were introdruced to represent the call clobbers, it
is no longer necessary to have duplicate instruction for iOS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154209 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
ba4d45737f6e1094195823b33fb9868570ae1701 06-Apr-2012 Chandler Carruth <chandlerc@gmail.com> There is no portable std::abs overload for int64_t, use the llvm::abs64
which exists for this purpose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154199 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
70fbea7c7598c8803a325ffca98069ff013a2994 06-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow negative immediates in ARM and Thumb2 compares.

ARM and Thumb2 mode can use cmn instructions to compare against negative
immediates. Thumb1 mode can't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154183 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMFastISel.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
3ef737608ab005f320c2e20fcb3b914c677616ed 06-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM: Don't form a t2LDRi8 or t2STRi8 with an offset of zero.

The load/store optimizer splits LDRD/STRD into two instructions when the
register pairing doesn't work out. For negative offsets in Thumb2, it uses
t2STRi8 to do that. That's fine, except for the case when the offset is in
the range [-4,-1]. In that case, we'll also form a second t2STRi8 with
the original offset plus 4, resulting in a t2STRi8 with a non-negative
offset, which ends up as if it were an STRT, which is completely bogus.
Similarly for loads.

No testcase, unfortunately, as any I've been able to construct is both large
and extremely fragile.

rdar://11193937

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154141 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
1c01249191ba5d3648e7bedaf8233c41cc103551 05-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Added support for unpredictable ADC/SBC instructions on ARM, and also fixed some corner cases involving the PC register as an operand for these instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154101 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
82e1bba0e4afaf3769fc46819c1601e387ffb56e 05-Apr-2012 Silviu Baranga <silviu.baranga@arm.com> Added support for handling unpredictable arithmetic instructions on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154100 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
22378fd664fed97c296878d8d188ab06e2c89395 05-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM assembly aliases for two-operand V[R]SHR instructions.

rdar://11189467

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154087 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b657a90929867716ca1c7c12d442bb5d32281bd4 05-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for 'msr' plain 'cpsr' operand.

Plain 'cpsr' is an alias for 'cpsr_fc'.

rdar://11153753

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154080 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.td
RMInstrThumb2.td
EADME.txt
26c8dcc692fb2addd475446cfff24d6a4e958bca 04-Apr-2012 Rafael Espindola <rafael.espindola@gmail.com> Always compute all the bits in ComputeMaskedBits.
This allows us to keep passing reduced masks to SimplifyDemandedBits, but
know about all the bits if SimplifyDemandedBits fails. This allows instcombine
to simplify cases like the one in the included testcase.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154011 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
75e3b7fb8fdf069b6f9f1e1db9634ca5701cbe96 03-Apr-2012 Dylan Noblesmith <nobled@dreamwidth.org> ARMDisassembler: drop bogus dependency on ARMCodeGen

And indirectly, a dependency on most of the core LLVM optimization
libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153957 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/LLVMBuild.txt
c97ef618d2d849a272a353c2b4343fc5902cd921 02-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Move getOpcodeName from the various target InstPrinters into the superclass MCInstPrinter.

All implementations used the same code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153866 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
7c0b3c1fb6395475e262d66ee403645f0c67dee2 02-Apr-2012 Craig Topper <craig.topper@gmail.com> Remove getInstructionName from MCInstPrinter implementations in favor of using the instruction name table from MCInstrInfo. Reduces static data in the InstPrinter implementations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153863 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
17463b3ef1a3d39b10619254f12e806c8c43f9e7 02-Apr-2012 Craig Topper <craig.topper@gmail.com> Make MCInstrInfo available to the MCInstPrinter. This will be used to remove getInstructionName and the static data it contains since the same tables are already in MCInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153860 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCTargetDesc.cpp
3ee3661f8f10e7f82094a89c40d9118630ab0a40 31-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a 2 byte safety margin in offset computations.

ARMConstantIslandPass still has bugs where jump table compression can
cause constant pool entries to go out of range.

Add a safety margin of 2 bytes when placing constant islands, but use
the real max displacement for verification.

<rdar://problem/11156595>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153789 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
101c03a8c9042781b6c9ba1fcc366e14fc8534ce 31-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add more debugging output to ARMConstantIslandPass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153788 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
bf3c322640fdaf6e4a60a59ed8cb108a7f6685ad 30-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM fix encoding fixup resolution for ldrd and friends.

The 8-bit payload is not contiguous in the opcode. Move the upper nibble
over 4 bits into the correct place.

rdar://11158641

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153780 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
ad353c630359d285018a250d72c80b7022d8e67e 30-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM assembler should prefer non-aliases encoding of cmp.

When an immediate is both a value [t2_]so_imm and a [t2_]so_imm_neg,
we want to use the non-negated form to make sure we prefer the normal
encoding, not the aliased encoding via the negation of, e.g., 'cmp.w'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153770 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a45e3747e612c00ca4933087d883db77f4547571 30-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM encoding for VSWP got the second operand incorrect.

Make the non-tied register operand names line up with what the base
class encoding handler expects.

rdar://11157236

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153766 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8f1148bd07d57a1324ed39250642119baa540b7c 30-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM can only use narrow encoding for low regs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153765 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2d30d947ec2626e8b1a9b577cdfa4121f476c3f5 30-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM integrated assembler should encoding choice for add/sub imm.

For 'adds r2, r2, #56' outside of an IT block, the 16-bit encoding T2
can be used for this syntax. Prefer the narrow encoding when possible.

rdar://11156277

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153759 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c0164f86080bc9d7a41fd5eabd0d6556396f5b38 30-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM assembly parsing needs to be paranoid about negative immediates.

Make sure to treat immediates as unsigned when doing relative comparisons.

rdar://11153621

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153753 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cb0809b82b126e79b99755ae4fc3d9733faea038 30-Mar-2012 James Molloy <james.molloy@arm.com> Ensure conditional BL instructions for ARM are given the fixup fixup_arm_condbranch.

Patch by Tim Northover!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153737 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMFixupKinds.h
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMachObjectWriter.cpp
1c80f56268fa91f9c0c4d0a32b5d61e7b900c6d4 30-Mar-2012 Evan Cheng <evan.cheng@apple.com> ARM target should allow codegenprep to duplicate ret instructions to enable tailcall opt. rdar://11140249

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153717 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7a4c071cd9f67599eba21e902079d0e85f2abf97 30-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Invalidate liveness in ARMConstantIslandPass.

This pass splits basic blocks to insert constant islands, and it
doesn't recompute the live-in lists. No later passes depend on accurate
liveness information.

This fixes PR12410 where the machine code verifier was complaining.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153700 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ccca22e9e2e03bdd782b1d4bf880ebf79e7b7e77 30-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Prefer even-odd D-register pairs.

We are sometimes allocatinog from the DPair register class which
contains odd-even pairs in addition to the Q registers.

Place the Q registers first in the DPair allocation order as they can be
copied with a single instruction. The odd-even pairs should only be
allocated as a last resort.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153699 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
c0a9f820d851baf66577a87c69ef383df41bbe32 29-Mar-2012 Lang Hames <lhames@gmail.com> Try using vmov.i32 to materialize FP32 constants that can't be materialized by
vmov.f32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153696 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
85bdf2e76a0351468f231f48069c64bc6938f140 29-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register copies for the new ARM register classes.

ARM recently gained DPair, DTriple, and DQuad register classes.
Update copyPhysReg() to handle copies in these register classes.

No test case, it is difficult to make the register allocator emit the
odd copies reliably. The missing DPair copy caused a failure on
partialsums in the nightly test suite.

<rdar://problem/11147997>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153686 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
892143ff70b5e7d0cb06e7c4596c232347806b17 29-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't kill the base register when expanding strd.

When an strd instruction doesn't get the registers it wants, it can be
expanded into two str instructions. Make sure the first str doesn't kill
the base register in the case where the base and data registers are
identical:

t2STRi12 %R0<kill>, %R0, 4, pred:14, pred:%noreg
t2STRi12 %R2<kill>, %R0, 8, pred:14, pred:%noreg

<rdar://problem/11101911>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153611 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
dc909bf46ba94bf123bf5c7273fa867bddffc4a2 29-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve implicit defs in ARMLoadStoreOptimizer.

When a number of sub-register VLRDS instructions are combined into a
VLDM, preserve any super-register implicit defs. This is required to
keep the register scavenger and machine code verifier happy.

Enable machine code verification after ARMLoadStoreOptimizer.
ARM/2012-01-26-CopyPropKills.ll was failing because of this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153610 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
5b2f9136644c58ae32e00d8317540692a697d1c9 28-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Spill DPair registers, not just QPR.

The arm_neon intrinsics can create virtual registers from the DPair
register class which allows both even-odd and odd-even D-register pairs.

This fixes PR12389.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153603 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
8d813de71e18dd73ed98e8d58407caba0265e38e 28-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r153516: "Invalidate liveness in Thumb2ITBlockPass."
Revert r153519: "ARMLoadStoreOptimizer invalidates register liveness."

These patches caused miscompilations in povray by turning off branch
folding's updating of live-in lists.

It turns out the the late scheduler depends on the live-in lists, even
if it doesn't need correct kill flags.

<rdar://problem/11139228>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153593 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
humb2ITBlockPass.cpp
6e9d66c756a3d3f0d1636a9f1143dedd2f58138b 28-Mar-2012 Richard Barton <richard.barton@arm.com> Fixup VST1.32 with writeback instruction. Also re-factor non-writeback version.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153573 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
805543068eb7407d718b0359f54b342d7094d0ea 27-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> ARMLoadStoreOptimizer invalidates register liveness.

This pass tries to update kill flags, but there are still many bugs.
Passes after the load/store optimizer don't need accurate liveness, so
don't even try.

<rdar://problem/11101911>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153519 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
33fa614b16db175d0687eb34aea3a080d0d237c2 27-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Invalidate liveness in Thumb2ITBlockPass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153516 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
4e02f23de24375294005f88b5254a3775d39fcb2 27-Mar-2012 Craig Topper <craig.topper@gmail.com> Prune some includes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153502 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
smParser/ARMAsmLexer.cpp
CTargetDesc/ARMAsmBackend.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
c89c744b69cecac576317a98322fd295e36e9886 27-Mar-2012 Craig Topper <craig.topper@gmail.com> Remove unnecessary llvm:: qualifications

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153500 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.h
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
e279f5953e9c3d934248cd4d2f24b6179ad9d2e6 27-Mar-2012 Evan Cheng <evan.cheng@apple.com> ARM has a peephole optimization which looks for a def / use pair. The def
produces a 32-bit immediate which is consumed by the use. It tries to
fold the immediate by breaking it into two parts and fold them into the
immmediate fields of two uses. e.g
movw r2, #40885
movt r3, #46540
add r0, r0, r3
=>
add.w r0, r0, #3019898880
add.w r0, r0, #30146560
;
However, this transformation is incorrect if the user produces a flag. e.g.
movw r2, #40885
movt r3, #46540
adds r0, r0, r3
=>
add.w r0, r0, #3019898880
adds.w r0, r0, #30146560
Note the adds.w may not set the carry flag even if the original sequence
would.

rdar://11116189


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153484 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f1d0f7781e766df878bec4e7977fa3204374f394 26-Mar-2012 Craig Topper <craig.topper@gmail.com> Prune some includes and forward declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153429 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMELFObjectWriter.cpp
0e5233a9e5ee9385c6a940e3985194d77bee0bbb 26-Mar-2012 Craig Topper <craig.topper@gmail.com> Prune includes and replace uses of ARMRegisterInfo.h with ARMBaeRegisterInfo.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153422 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMCallingConv.h
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
acf2077ca497980a066e8e7bb81ceec0de82d5da 26-Mar-2012 Craig Topper <craig.topper@gmail.com> Replace uses of ARMBaseInstrInfo and ARMTargetMachine with the Base versions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153421 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.h
RMJITInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.h
805853bc59ecdae1746473d2b4178e9275a1b997 25-Mar-2012 Craig Topper <craig.topper@gmail.com> Prune some includes and forward declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153415 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.h
c59a7995d22e2889706810c90a20a51ecfec278b 24-Mar-2012 Shih-wei Liao <sliao@google.com> Merge branch 'upstream' into sliao_d
7a465250564d2ae0cc53ebe58732a751daa43e8d 24-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM tidy up ARMConstantIsland.cpp.

No functional change, just tidy up the code and nomenclature a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153347 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6fe310e1555dedba2b36dedae9a88eb900ad1804 22-Mar-2012 Silviu Baranga <silviu.baranga@arm.com> Added soft fail checks for the disassembler when decoding some corner cases of the STRD, STRH, LDRD, LDRH, LDRSH and LDRSB instructions on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153252 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
b7c2ed66642b141a768b3074c465eba9d98665d8 22-Mar-2012 Silviu Baranga <silviu.baranga@arm.com> Added soft fail cases for the disassembler when decoding LDRSBT, LDRHT or LDRSHT instruction on ARM

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153251 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
a0c48eb8f69bcb619a2c2cc0044375bb4171cebe 22-Mar-2012 Silviu Baranga <silviu.baranga@arm.com> Added soft fail cases for the disassembler when decoding MUL instructions on ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153250 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f0586f08dfd5bf1889c15849e9c603b3985fce4a 21-Mar-2012 Kevin Enderby <enderby@apple.com> Fix ARM disassembly of VST1 and VST2 instructions with writeback. And add test
case for all opcodes handed by DecodeVSTInstruction() in ARMDisassembler.cpp .


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153218 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
98a27acc6b1d4bc4bda6eb122851b3f9b39efeb8 20-Mar-2012 Matt Beaumont-Gay <matthewbg@google.com> remove unused variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153116 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
aaa1e2f820e61a2f4b878d97599b3ca093bc96ed 20-Mar-2012 Bob Wilson <bob.wilson@apple.com> Require a base pointer for stack realignment when SP may vary dynamically.

ARMBaseRegisterInfo::canRealignStack was checking for variable-sized objects
but not for stack adjustments around calls. Use hasReservedCallFrame() to
check for both. The hasBasePointer function was already correctly checking
both conditions, so the effect of this was that a base pointer would be used
without checking whether the base pointer register could be reserved. I don't
have a small testcase for this.

<rdar://problem/11075906>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153110 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
055a8127c9ffee287807fe7cc1b115d0f40162b0 20-Mar-2012 Bob Wilson <bob.wilson@apple.com> Remove some redundant checks.

ARMFrameLowering::hasReservedCallFrame is already checking for variable
sized objects, so there's no point in checking it twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153109 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
9f2e160f7ae90a7a80b17e38ad06f2c706515115 20-Mar-2012 Kevin Enderby <enderby@apple.com> Fix assembling ARM vst2 instructions with double-spaced registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153099 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
07cdd80ccc1a07edc565199c62d35ea0d80c6c1c 20-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM non-scattered MachO relocations for movw/movt.

Needed when building -mdynamic-no-pic code.

rdar://10459256

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153097 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
5c062ad92672f22e61a4b20a9954af3db3b72bd6 20-Mar-2012 Silviu Baranga <silviu.baranga@arm.com> The ARM instructions that have an unpredictable behavior when the pc register operand is given now fail with soft fail. Modified the regression tests to reflect this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153089 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
db9ca59759aeedfca9a9ceee55798587c4beceec 20-Mar-2012 Richard Barton <richard.barton@arm.com> Test Commit - add a newline


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153083 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fa1f74470a51a57b7b8feb4c4ba18501c3f2709a 19-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM branch relaxation for unconditional t1 branches.

rdar://11059157

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153055 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
ceee984302a1cf1d659a186cf94149c779866da5 19-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM assembly, accept optional '#' on lane index number.

rdar://11057160

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153053 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2d7ea04e2822bbe5faad0eefceb7a300ea01224e 19-Mar-2012 Anton Korobeynikov <asl@math.spbu.ru> Perform mul combine when multiplying wiht negative constants.
Patch by Weiming Zhao!
This fixes PR12212


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153049 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c1f6f42049696e7357fb4837e1b25dabbaed3fe6 17-Mar-2012 Craig Topper <craig.topper@gmail.com> Reorder includes to match coding standards. Fix an issue or two exposed by that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152978 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMBaseRegisterInfo.cpp
RMCallingConv.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
humb1FrameLowering.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
5aeff3171c173dec9a6e6f89e428a0a78698c43e 17-Mar-2012 Bill Wendling <isanbard@gmail.com> Check if we can handle the arguments of a call (and therefore the call) in
fast-isel before emitting code. If the program bails after code was emitted,
then it could lead to the stack being adjusted more than once (two
CALLSEQ_BEGINs emitted) but being adjuste back only once after the call. This
leads to general badness and gnashing of teeth.
<rdar://problem/11050630>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152959 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrThumb2.td
66cba302f0e9de6f4e9401b24375d791aad32b6b 16-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM divided syntax fmrx/fmxr mnemonics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152946 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
be7cf2b377d987f46d10f54f89ae4e1a71c37f55 16-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM ldm/stm register lists can be out of order.

It's not a good style idea, as the registers will be laid down in memory in
numerical order, not the order they're in the list, but it's legal. vldm/vstm
are stricter.

rdar://11064740

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152943 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
9426ac7b575de9e1297a01f27307d858343ac4ed 16-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM vmrs system registers mvfr0 and mvfr1 handling.

rdar://11058464

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152881 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMRegisterInfo.td
89eaa6f554c362799a86ca50bdbaab72402565d2 16-Mar-2012 Jim Grosbach <grosbach@apple.com> Remove inadvertant commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152870 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/x
0ac754f6f43a0e5a56f712aebb663581ae512e4c 15-Mar-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Address Eli's comments for r152847. Specifically, add a test case
and still allow immediate encoding, just not with cmn.
rdar://11038907


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152869 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
530b19b70212f02cffa971256501e77284c320a0 15-Mar-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Don't try to encode LONG_MIN using cmn instructions.
rdar://11038907


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152847 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b84ad4aa7dacfba5337520740d47770f2200201c 15-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM case-insensitive checking for APSR_nzcv.

rdar://11056591

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152846 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
smParser/x
6357caec785268d1e39059d03eb2034dee65467f 15-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM aliases for pre-unified syntax fcmpz[sd] mnemonics.

rdar://11056647

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152834 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
45b5f88938f59c495209512b545f289bf2cca90a 15-Mar-2012 Lang Hames <lhames@gmail.com> Use vmov.f32 to materialize f32 consts on ARM. This relaxes constraints on
register allocation by allowing all 32 D-registers to be used. Patch by Cameron
Zwarich.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152824 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
8a6bcc3722729803a16b5885de1ff85a3752e6a0 15-Mar-2012 Kristof Beyls <kristof.beyls@arm.com> Fix VCVT decoding (between floating-point and fixed-point, Floating-point). Patch by Richard Barton.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152814 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2bbb22b8ef571cc11e0c0bb0a0f13670b5ef5cff 12-Mar-2012 Bob Wilson <bob.wilson@apple.com> Switch to unified syntax for VFP instructions in inline assembly.
<rdar://problem/11024696>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152548 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
c5eaae4e9bc75b203b3a9922b480729bc4f340e2 11-Mar-2012 Craig Topper <craig.topper@gmail.com> Convert more static tables of registers used by calling convention to uint16_t to reduce space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152538 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMISelLowering.cpp
b78ca423844f19f4a838abb49b4b4fa7ae499707 11-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store registers and opcode in static tables in the target specific backends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152537 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
isassembler/ARMDisassembler.cpp
humb2SizeReduction.cpp
fac259814923d091942b230e7bd002a8d1130bc3 08-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store instruction implicit uses and defs. Reduces static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152301 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
fd03ccddedce13a216c9b6e04e9d0ca6b163170e 08-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM don't use MCRelaxAll, as it's not safe on ARM.

The ARM code generator makes aggressive assumptions about the encodings
being selected for branches which MCRelaxAll invalidates.

rdar://11006355


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152268 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
44c98b71148d11368c18ffb9c14e8a28a76a8021 07-Mar-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] ARMEmitCmp generates FMSTAT, which transfers the floating-point
condition flags to CPSR. This allows us to simplify SelectCmp.
Patch by Zonr Chang <zonr.xchg@gmail.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152243 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
05d88f4fea6f7565d3d89ab2ac54e54e32fbc09a 07-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM pre-v6 assembly parsing for umull/smull.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152188 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0104dd3ffd75b9620610b63eaa72f573f5a20752 07-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM pre-v6 alias for 'nop' to 'mov r0, r0'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152185 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ff3164a1893c61dc0b7169dba9705c2d8e80dfec 07-Mar-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Remove dead code that slipped into previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152184 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
4d0983a4d734280d481bb56472fe44ad0ddc447d 07-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM more NEON VLD/VST composite physical register refactoring.

Register pair, all lanes subscripting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152157 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMBaseInfo.h
c0fc450f0754508871bc70f21e528bf2f1520da1 06-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM refactor more NEON VLD/VST instructions to use composite physregs

Register pair VLD1/VLD2 all-lanes instructions. Kill off more of the
pseudos as a result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152150 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
bde1b2a5a8cef66f67513c9f4309b7fae798c679 06-Mar-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Kill some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152131 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
14f87e01ca704b2916a4c0c5360f3d703c85806f 06-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow the same types in DPair as in QPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152129 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
158c8a49c23d01297e7913c03c1fdb0760aee3a8 06-Mar-2012 Kevin Enderby <enderby@apple.com> Fix a bug in the ARM disassembly of the neon VLD2 all lanes instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152127 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
3247af294996ff8588077c06505b64966ad41542 06-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add <imp-def> operands when reloading into physregs.

When an instruction only writes sub-registers, it is still necessary to
add an <imp-def> operand for the super-register. When reloading into a
virtual register, rewriting will add the operand, but when loading
directly into a virtual register, the <imp-def> operand is still
necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152095 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
4f92b5e6163b16d63eb63269c2aec670b55ea19a 06-Mar-2012 Lang Hames <lhames@gmail.com> Split fpscr into two registers: FPSCR and FPSCR_NZCV.

The fpscr register contains both flags (set by FP operations/comparisons) and
control bits. The control bits (FPSCR) should be reserved, since they're always
available and needn't be defined before use. The flag bits (FPSCR_NZCV) should
like to be unreserved so they can be hoisted by MachineCSE. This fixes PR12165.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152076 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFastISel.cpp
RMInstrVFP.td
RMRegisterInfo.td
bc978a60d90a06b2d879b6f4db22b3760168df7f 06-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM vpush/vpop assembler mnemonics accept an optional size suffix.

rdar://10988114

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152068 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
8019aac390baf43b3907d92928bad7fbe62588c6 06-Mar-2012 Stephen Hines <srhines@google.com> Merge with upstream LLVM @152063

Removed call to getsid() from LockFileManager.cpp, since bionic doesn't have
support for it.

Build updates
+TableGenAction.cpp
+X86ModRMFilters.cpp
-InstrEnumEmitter.cpp
-JITDebugRegisterer.cpp
-MCLoggingStreamer.cpp
+Hashing.cpp
-ElfCodeEmitter.cpp
-ElfWriter.cpp
-ObjectCodeEmitter.cpp
+DataStream.cpp
+StreamableMemoryObject.cpp
+CmpInstAnalysis.cpp
+LockFileManager.cpp
+IntrusiveRefCntPtr.cpp
+ThreadSanitizer.cpp
+ARMMachineFunctionInfo.cpp
+ARMELFObjectWriter.cpp
+MipsAnalyzeImmediate.cpp
+MipsMachineFunction.cpp
+X86MachineFunctionInfo.cpp
+X86ELFObjectWriter.cpp
+X86WinCOFFObjectWriter.cpp
+ResourcePriorityQueue.cpp
+ScheduleDAGVLIW.cpp
+MachineCopyPropagation.cpp
+MachineScheduler.cpp
+RegAllocBase.cpp
+libLLVMVectorize

Change-Id: I69e700fe357e275ec509af1daaa7408cd3cde3a1
ndroid.mk
CTargetDesc/Android.mk
c02a5c5e8d9c1fd2a20ad4aed40f328564e95b40 05-Mar-2012 Stephen Hines <srhines@google.com> Merge branch 'upstream' into merge-20120305

Conflicts:
lib/Support/Atomic.cpp

Change-Id: I563b3bc2a82942ccbae5bed42e53b9149a8bf3a0
c3384c93c0e4c50da4ad093f08997507f9281c75 05-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM Refactor VLD/VST spaced pair instructions.

Use the new composite physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152063 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
af9f4bc752292b3282f110c11aeb2a1ffb710bbf 05-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM Remove a bit of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152061 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
28f08c93e75d291695ea89b9004145103292e85b 05-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM refactor away a bunch of VLD/VST pseudo instructions.

With the new composite physical registers to represent arbitrary pairs
of DPR registers, we don't need the pseudo-registers anymore. Get rid of
a bunch of them that use DPR register pairs and just use the real
instructions directly instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152045 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMFrameLowering.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMBaseInfo.h
c6449b636f4984be88f128d0375c056ad05e7e8f 05-Mar-2012 Jim Grosbach <grosbach@apple.com> Make MCRegisterInfo available to the the MCInstPrinter.

Used to allow context sensitive printing of super-register or sub-register
references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152043 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCTargetDesc.cpp
74bebde7c4e2d1cfd4a16c19ce3c87521df67639 05-Mar-2012 Sebastian Pop <spop@codeaurora.org> updated patch for the ARM fused multiply add/sub

In this update:
- I assumed neon2 does not imply vfpv4, but neon and vfpv4 imply neon2.
- I kept setting .fpu=neon-vfpv4 code attribute because that is what the
assembler understands.

Patch by Ana Pazos <apazos@codeaurora.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152036 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
9ebfbf8b9fd5f982e0db9293808bd32168615ba9 05-Mar-2012 Craig Topper <craig.topper@gmail.com> Convert more GenRegisterInfo tables from unsigned to uint16_t to reduce static data size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152016 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
fce711cb65716f86b4e150f42cbb597bbecf7dbe 04-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use <def,undef> operands when spilling NEON bundles.

MachineOperands that define part of a virtual register must have an
<undef> flag if they are not intended as read-modify-write operands.

The old trick of adding an <imp-def> operand doesn't work any longer.

Fixes PR12177.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152008 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b6632ba380cf624e60fe16b03d6e21b05dd07724 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t instead of unsigned to store registers in reg classes. Reduces static data size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151998 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
015f228861ef9b337366f92f637d4e8d624bb006 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store registers in callee saved register tables to reduce size of static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151996 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameLowering.cpp
RMISelLowering.cpp
humb1FrameLowering.cpp
fc501a3ec9d97e372ecb1bd9cf32d861da46b2c9 02-Mar-2012 Evan Cheng <evan.cheng@apple.com> Neuter the optimization I implemented with r107852 and r108258 which turn some
floating point equality comparisons into integer ones with -ffast-math. The
issue is the optimization causes +0.0 != -0.0.

Now the optimization is only done when one side is known to be 0.0. The other
side's sign bit is masked off for the comparison.

rdar://10964603


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151861 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b24b820bd7ddfe118141422f4d0cf378b2c9a6fd 01-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in Thumb1RegisterInfo::saveScavengerRegister().

This function could have r12 live across a function call when compiling
thumb1 code.

The test case for this is not included because it is very long. It must
provoke emergency spilling near a function call. The behavior is
provoked by MultiSource/Applications/JM/lencod, and it triggers an
assertion in the scavenger.

<rdar://problem/10963642>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151855 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
e751c0069aee16e85156d6539f4b724f71c341c6 01-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM use the right opcode for FP<->Integer move in fast-isel.

rdar://10965031

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151850 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b0578512c79134136e8b53c62a8677ab8e600be2 01-Mar-2012 Kevin Enderby <enderby@apple.com> Change ARMInstPrinter::printPredicateOperand() so it will not abort if it
runs into the undefined 15 condition code value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151844 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
adef06a71458ded0716935a61b3d43d164d4df12 29-Feb-2012 Derek Schuff <dschuff@google.com> Make MemoryObject accessor members const again



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151687 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
c01810eeb7227010f73cb39e3c4fa0197a3c4ef0 29-Feb-2012 Jim Grosbach <grosbach@apple.com> ARM implement TargetInstrInfo::getNoopForMachoTarget()

Without this hook, functions w/ a completely empty body (including no
epilogue) will cause an MCEmitter assertion failure.

For example,
define internal fastcc void @empty_function() {
unreachable
}

rdar://10947471

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151673 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
c94206e5521d06d196a290e0c4431150e6be031b 28-Feb-2012 Jim Grosbach <grosbach@apple.com> ARM vbit/vbif/vbsl assembly optional size suffix.

These instructions accept but do not require a size suffix.

rdar://10947225

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151646 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RM.td
RMAsmPrinter.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMSelectionDAGInfo.cpp
RMSubtarget.h
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
RM.td
RMAsmPrinter.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMSelectionDAGInfo.cpp
RMSubtarget.h
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
RM.td
RMAsmPrinter.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMSelectionDAGInfo.cpp
RMSubtarget.h
0f9d07fb2526c0acdf7ad9fa6e9c1a97a746c0e9 28-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable ARM base pointer when calling functions with large arguments.

When an outgoing call takes more than 2k of arguments on the stack, we
don't allocate that call frame in the prolog, but adjust the stack
pointer immediately before the call instead.

This causes problems with the emergency spill slot because PEI can't
track stack pointer adjustments on the second pass, and if the outgoing
arguments are too big, SP can't be used to reach the emergency spill
slot at all.

Work around these problems by ensuring there is a base or frame pointer
that can be used to access the emergency spill slot.

<rdar://problem/10917166>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151604 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1RegisterInfo.cpp
7b25ecf6adbf3c4709c48033acfeb6ebbb4452ab 27-Feb-2012 Jim Grosbach <grosbach@apple.com> ARM BL/BLX instruction fixups should use relocations.

We on the linker to resolve calls to the appropriate BL/BLX instruction
to make interworking function correctly. It uses the symbol in the
relocation to do that, so we need to be careful about being too clever.

To enable this for ARM mode, split the BL/BLX fixup kind off from the
unconditional-branch fixups.

rdar://10927209

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151571 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMFixupKinds.h
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMachObjectWriter.cpp
0943303d31b1d1f2111725e2fa6906c0a785b96e 27-Feb-2012 Kevin Enderby <enderby@apple.com> Fix the symbolic operand added for the C disassmbler API for the ARM bl
thumb instruction. The PC adjustment is +4 in Thumb mode and +8 in ARM mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151530 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
120cfdf0e0a53f858970874476a21cffb8069847 24-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused cl::opt, make another opt static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151398 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
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
RMInstrThumb2.td
4df4f5b49baa108271ae29473bf45cb6b6ec4cc1 24-Feb-2012 Jia Liu <proljc@gmail.com> comment fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151339 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMFixupKinds.h
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
RMFastISel.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
d1b220a33b16d97ef4194b4da625ba1c57974dee 24-Feb-2012 Jim Grosbach <grosbach@apple.com> Make sure the regs are low regs for tMUL size reduction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151318 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
fdf7c850321bba542e181ae035507d9c71d95364 24-Feb-2012 Jim Grosbach <grosbach@apple.com> Thumb2 size reduction fix for tied operands of tMUL.

The tied source operand of tMUL is the second source operand, not the
first like every other two-address thumb instruction. Special case it
in the size reduction pass to make sure we create the tMUL instruction
properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151315 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
db9538923eb95df48e9a6abe7e3b0ba8435915d7 24-Feb-2012 Dan Gohman <gohman@apple.com> When emitting a cmp with 0 for a lowered select, mask out the high
bits of the value carying the boolean condition, as their contents
are undefined. This fixes rdar://10887484.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151310 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b80d571ea85db5d52fafed0523cf59e693502198 23-Feb-2012 Kevin Enderby <enderby@apple.com> Updated the llvm-mc disassembler C API to support for the X86 target.
rdar://10873652

As part of this I updated the llvm-mc disassembler C API to always call the
SymbolLookUp call back even if there is no getOpInfo call back. If there is a
getOpInfo call back that is tried first and then if that gets no information
then the SymbolLookUp is called. I also made the code more robust by
memset(3)'ing to zero the LLVMOpInfo1 struct before then setting
SymbolicOp.Value before for the call to getOpInfo. And also don't use any
values from the LLVMOpInfo1 struct if getOpInfo returns 0. And also don't
use any of the ReferenceType or ReferenceName values from SymbolLookUp if it
returns NULL. rdar://10873563 and rdar://10873683

For the X86 target also fixed bugs so the annotations get printed.

Also fixed a few places in the ARM target that was not producing symbolic
operands for some instructions. rdar://10878166


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151267 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1b14f20ef7b35b9209ba6ab394773278936babe9 23-Feb-2012 Duncan Sands <baldrick@free.fr> Remove unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151251 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5fb468a6b308b643edf61f1731b6d95fd1a03bf4 23-Feb-2012 Evan Cheng <evan.cheng@apple.com> Canonicalize (srl (bswap x), 16) to (rotr (bswap x), 16) if the high 16 bits
of x are zero. This optimizes rev + lsr 16 to rev16.

rdar://10750814


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151230 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
90f20044ade3712c8b0c3f4ebe47d57ad15ae6ce 22-Feb-2012 Chad Rosier <mcrosier@apple.com> Remove extra semi-colons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151169 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
44d23825d61d530b8d562329ec8fc2d4f843bb8d 22-Feb-2012 Craig Topper <craig.topper@gmail.com> Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151134 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
209600bb8830036f981238494ab0188c25364837 22-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clarify ARM calling conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151113 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a1aa8db51715bdd21770fbe4f7d7abf2c5d28829 22-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Calls don't really change the stack pointer.

Even if a call instruction has %SP<imp-def> operands, it doesn't change
the value of the stack pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151104 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
07043279f60622243d16d8a3f60805960482083c 21-Feb-2012 Evan Cheng <evan.cheng@apple.com> Proper support for a bastardized darwin-eabi hybird ABI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151083 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
RMSubtarget.cpp
873fd5f75332023ee8d8b4f9a85351f25e7f1e90 20-Feb-2012 James Molloy <james.molloy@arm.com> Improve generated code for extending loads and some trunc stores on ARM.

Teach TargetSelectionDAG about lengthening loads for vector types and set v4i8 as legal. Allow FP_TO_UINT for v4i16 from v4i32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150956 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
b0934ab7d811e23bf530371976b8b35f3242169c 19-Feb-2012 Ahmed Charles <ace2001ac@gmail.com> Remove dead code. Improve llvm_unreachable text. Simplify some control flow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150918 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMMCTargetDesc.cpp
9ad012a29c72881623fdfb135f4faa81807ea29b 19-Feb-2012 Jia Liu <proljc@gmail.com> comment fix ARM.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150904 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
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
RM.h
RM.td
RMAsmPrinter.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMBuildAttrs.h
RMCallingConv.h
RMCallingConv.td
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMExpandPseudoInsts.cpp
RMFrameLowering.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.cpp
RMMachineFunctionInfo.h
RMPerfectShuffle.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMRelocations.h
RMSchedule.td
RMScheduleV6.td
RMSubtarget.cpp
RMSubtarget.h
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMAddressingModes.h
CTargetDesc/ARMMCAsmInfo.cpp
CTargetDesc/ARMMCAsmInfo.h
CTargetDesc/ARMMCExpr.h
CTargetDesc/ARMMCTargetDesc.cpp
LxExpansionPass.cpp
humb1FrameLowering.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
2420b558de5d291d8503c1339004e5b5bf99a48a 17-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmask operands in ARMInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150833 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb2InstrInfo.cpp
8c3b87cf19df5631125254784d57446b80e12397 17-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix ARMBaseInstrInfo::getInstrLatency for calls.

Calls always clobber CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150831 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b8703fe265d44a3eb909c289cb5d31b840ca893c 17-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for returning non-legal types with no sign- or zero-
entend flag.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150774 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
c2e08db4e5a8e1b3c253fb07c6eb736dfb66fe59 17-Feb-2012 Lang Hames <lhames@gmail.com> Re-enable 150652 and 150654 - Make FPSCR non-reserved, and make MachineCSE bail on reserved registers. This *should* be safe as of r150786.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150769 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a69feb0f33788b13aa4c25736e50afc6f2b4ce44 16-Feb-2012 Chad Rosier <mcrosier@apple.com> Remove unnecessary assignment to temporary, ResultReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150737 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1834df8384354217c59e1c5dd8bc091c11b8ca43 16-Feb-2012 Lang Hames <lhames@gmail.com> Oop - r150653 + r150654 broke one of my test cases. Backing out for now...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150655 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
afae28b1c67171a567c6f0274a7dede83ac5d8f1 16-Feb-2012 Lang Hames <lhames@gmail.com> FPSCR shouldn't be reserved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150654 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
40d552e0be0ba66a3d8e31bf797f1acba4c91b17 15-Feb-2012 Chad Rosier <mcrosier@apple.com> Add braces to if clause to make symmetric with associate else clause.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150591 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4a1ff2fb3ecaa2576ecf9ed84816b174c235ac1d 15-Feb-2012 Bill Wendling <isanbard@gmail.com> Strip the pointer casts from the constants here.

The c'tor list is stored as a list of 'void ()*'s, so all of the functions are
bitcast to that. However, the dyn_cast doesn't automagically look through
bitcasts. Do that for it.
<rdar://problem/10813350>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150572 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
92fd01736484262fef049b7358366d8eab2f857e 15-Feb-2012 Chad Rosier <mcrosier@apple.com> Use a temporary variable, rather then a series of redundant calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150536 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5793a6586d94a5032a815af97113c3ba47cbdf8a 14-Feb-2012 Chad Rosier <mcrosier@apple.com> Remove unnecessary assignment to temporary, ResultReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150520 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1a4cb1caf0be953e5d7b201aca4ad54579751020 14-Feb-2012 Lang Hames <lhames@gmail.com> Third time's the charm...?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150447 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6b0e9d97fad402b269b580bd372bed9ecb836645 14-Feb-2012 Lang Hames <lhames@gmail.com> Unswap swap operands, partially reducing confusion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150444 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
bdf9db6f4905fcbbcdbdfed328ea8b36b655dd45 14-Feb-2012 Bill Wendling <isanbard@gmail.com> Don't reserve the R0 and R1 registers here. We don't use these registers, and
marking them as "live-in" into a BB ruins some invariants that the back-end
tries to maintain.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150437 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2cc494b963e68895d6b6173bcc2ea02995d71442 14-Feb-2012 Lang Hames <lhames@gmail.com> Make operands for VSWP read-modify-write.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150433 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
88b6fc06db667bd26d6ef661597affaa6abfdd0d 11-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Make the EDis tables const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150304 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
f06dfa786064edc3bb6de92bb3783d0c23f4d34a 10-Feb-2012 Jim Grosbach <grosbach@apple.com> Revert r150222, as the clang driver now handles this properly.

Now that the clang driver passes the CPU and feature information to
the backend when processing assembly files (150273), this isn't necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150274 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
1de886c1fa932b9c33d1f9d34698bafa9cdabebd 10-Feb-2012 Jason W Kim <jason.w.kim.2009@gmail.com> Make valgrind happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150251 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e009860049c0062fc1c708e46c7d868a84e3a41f 10-Feb-2012 Jim Grosbach <grosbach@apple.com> ARM on darwin, v6 implies the presence of VFP for the assembler.

rdar://10838899

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150222 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
3015dfb7d739f4cc0b1408555889ecea880ffac9 09-Feb-2012 James Molloy <james.molloy@arm.com> Teach the MC and disassembler about SoftFail, and hook it up to UNPREDICTABLE on ARM. Wire this to tBLX in order to provide test coverage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150169 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
1dd8c8560d45d36a8e507cd014352f1d313f9f9e 08-Feb-2012 Andrew Trick <atrick@apple.com> Codegen pass definition cleanup. No functionality.

Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.

While cleaning up declarations, cleaned up comments (sorry for large diff).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150100 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
743e19983effd486c1911f5b797aea7133ea154c 08-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for SUBs with non-legal types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150047 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6fde8756215a725578b6afe678757f60d7f55d06 08-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for ORs with non-legal types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150045 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
60c8fa6bb9db791acf6846fe250c184e3f1df168 08-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for indirect branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150014 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4ee1c5cf6c18db0fa4946437f0bca3dbb313e21b 07-Feb-2012 Evan Cheng <evan.cheng@apple.com> Do not fold ADD / SUB into load / store (to form pre-indexed, post-indexed
load / store) if the ADD / SUB has a live definition of CPSR.

Bug reported by David Meyer. Alas, no test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149970 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
bc2198133a1836598b54b943420748e75d5dea94 07-Feb-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149961 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMConstantPoolValue.cpp
RMELFWriterInfo.cpp
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMMCInstLower.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAddressingModes.h
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCExpr.cpp
humb1RegisterInfo.cpp
3901c3e75009f2ec7b4e67c354170dadab9e5a02 07-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for ADDs with non-legal types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149934 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2ea93875b2f2900b9d244dfd7649c9ed02a34cd7 06-Feb-2012 Derek Schuff <dschuff@google.com> Enable streaming of bitcode

This CL delays reading of function bodies from initial parse until
materialization, allowing overlap of compilation with bitcode download.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149918 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
dc7c716a1cfc27a12f3bbfa44bd80904ee782779 05-Feb-2012 Evan Cheng <evan.cheng@apple.com> DefinesPredicate should only look for def operands. Patch by Ludwig Meier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149846 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5b8a1db7ea6510a2589f710d50754599da742de9 05-Feb-2012 Duncan Sands <baldrick@free.fr> Persuade GCC that there is nothing worth warning about here (there isn't).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149834 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
061efcfb3e79899493d857f49e50d09f29037e0a 04-Feb-2012 Andrew Trick <atrick@apple.com> TargetPassConfig: confine the MC configuration to TargetMachine.

Passes prior to instructon selection are now split into separate configurable stages.
Header dependencies are simplified.
The bulk of this diff is simply removal of the silly DisableVerify flags.

Sorry for the target header churn. Attempting to stabilize them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149754 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
769422f0fce4def419c8cdb72ee967437ffd2f4f 03-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for URem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149716 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ae46a3362d6c7fd2d4b1bf3b40982d289d7418fb 03-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Rename isZExt to isSigned. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149714 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7ccb30b5964675a70559ec25a6bff32f7dea1025 03-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for UDIV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149712 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ee8901c08fb27e98078326706a49dba70e1768a3 03-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for FPToUI. Also add test cases for FPToSI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149706 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
36b7beb42921c428fc9f5b5a9cc9feb7fe7dd4b3 03-Feb-2012 Chad Rosier <mcrosier@apple.com> [fast-isel] Add support for selecting UIToFP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149704 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
843ee2e6a46b2b2d74a84c2eea68dec35cb359cc 03-Feb-2012 Andrew Trick <atrick@apple.com> Added TargetPassConfig. The first little step toward configuring codegen passes.

Allows command line overrides to be centralized in LLVMTargetMachine.cpp.
LLVMTargetMachine can intercept common passes and give precedence to command line overrides.
Allows adding "internal" target configuration options without touching TargetOptions.
Encapsulates the PassManager.
Provides a good point to initialize all CodeGen passes so that Pass ID's can be used in APIs.
Allows modifying the target configuration hooks without rebuilding the world.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149672 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
42865588d7263593d102dcdf2f8f0994dca4bba4 02-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add pseudo-registers for pairs, triples, and quads of D registers.

NEON loads and stores accept single and double spaced pairs, triples,
and quads of D registers. This patch adds new register classes to
accurately model those constraints:

Dn, Dn+1 Dn, Dn+2
----------------------
DPair DPairSpc
DTriple DTripleSpc
DQuad DQuadSpc

Also extend the existing QQ and QQQQ register classes to contains all Q
pairs and quads instead of just the aligned ones.

These new register classes will make it possible to accurately model
constraints on NEON loads and stores, and we can get rid of all the NEON
pseudo-instructions. The late scheduler will be able to accurately
model instruction dependencies from the explicit operands.

This more than doubles the number of ARM registers, but the backend
passes are quite good at handling this. The llc -O0 compile time only
regresses by 1.5%. Future work on register mask operands will recover
this regression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149640 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
521804a1f702b80158b6490c8f22d1dc6a8b9c65 02-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move ARM subreg index compositions to the SubRegIndex itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149557 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
24dda217052b48373ed89d043a778aabb2f65080 01-Feb-2012 Jim Grosbach <grosbach@apple.com> Tidy up. One more return type mismatch fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149452 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0c3cfefca62eeaf1f98a49756e3bcb2c451b3374 31-Jan-2012 Jim Grosbach <grosbach@apple.com> Refactor loop for better readability.

Excellent suggestion from Ben Kramer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149417 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
c73f42b54028e0fce3e7159b76cd59e78107023d 31-Jan-2012 Jim Grosbach <grosbach@apple.com> Add explanatory comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149416 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6edd5884c91aea72661ed899b0c91dfb4f0ea80f 29-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Cleanups for EABI standard functions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149195 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f349cb8f33665bf854b4d0a05012d958072febd4 29-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Use base AAPCS for varargs functions even for AAPCS-VFP CC


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149194 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7750ff1e3cbb87e68f406e6fa7c43a80a61a0ccb 28-Jan-2012 Bob Wilson <bob.wilson@apple.com> Add a note about a potential optimization for clz/ctz patterns for ARM
(and other targets).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149182 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
2d8955a77c6920d1a50de5ec9094faaa1b2f4e88 28-Jan-2012 James Molloy <james.molloy@arm.com> Ensure .AliasedSymbol() is called on all uses of getSymbol(). Affects ARM and MIPS ELF backends.

Fixes PR11877



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149180 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
6b4bcd69d02e67bb00496db4d296fa7ab768d36f 27-Jan-2012 Jim Grosbach <grosbach@apple.com> Better user diagnostics for more ARM MachO relocation errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149102 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
42e6bd38e02e2e1c2cc50d2f12036c38c4ea3ab0 27-Jan-2012 Jim Grosbach <grosbach@apple.com> Keep source information, if available, around for ARM Fixups.

Adjust an example MachObjectWriter diagnostic to use the information
to issue a better message.

Before:
LLVM ERROR: unknown ARM fixup kind!

After:
x.s:6:5: error: unsupported relocation on symbol
beq bar
^

rdar://9800182

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149093 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMachObjectWriter.cpp
ef4d3ebe2a36ebfd9370e1efbe74dff13f64c40f 26-Jan-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Fix mismatched return types for error handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149062 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
34982576a43887e7f062ed0a3571af2cbab003f3 26-Jan-2012 James Molloy <james.molloy@arm.com> Add support for the R_ARM_TARGET1 relocation, which should be given to relocations applied to all C++ constructors and destructors.

This enables the linker to match concrete relocation types (absolute or relative) with whatever library or C++ support code is being linked against.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149057 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
CTargetDesc/ARMELFObjectWriter.cpp
4a99f59aef358fb93eac180e49f6dcef03822046 25-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Properly emit ctors / dtors with priorities into desired sections
and let linker handle the rest.

This finally fixes PR5329



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148990 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
RMTargetObjectFile.h
74423e32ce7f426b624bfb0c31481bcf6a36394d 25-Jan-2012 Jim Grosbach <grosbach@apple.com> ARM assemly parsing and validation of IT instruction.

"Although a Thumb2 instruction, the IT mnemonic shall be permitted in
ARM mode, and the condition verified to match the condition code(s)
on the following instruction(s)."

PR11853

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148969 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
a57a36abe7d0b769a495ed886246db157aff4add 25-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VLD4(all lanes) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148884 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
6cd6a6824fa611b8da8b01daa5239256fe0661e9 25-Jan-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Rename VLD4DUP patterns for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148883 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5e59f7e15ed3770b32481cd72d2c15b159e991e6 25-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VLD3(all lanes) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148882 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
88a54de799240d5de2e79dfff4671ad5653e7ceb 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VST4(one lane) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148836 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
4f8dc7b17accf4f2ec953b80b2cc79786207492e 24-Jan-2012 Owen Anderson <resistor@mac.com> Widen the instruction encoder that TblGen emits to a 64 bits, which should accomodate every target I can think of offhand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148833 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
e983a134e7e40e214f590c3d8ba565bb85f39628 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VLD4(one lane) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148832 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
1ac2060678edd88726e06ff19c9468211b41fc37 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON Two-operand assembly aliases for VSRA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148821 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5e497d39927d2ddf6bf6adbfac39fe9102a1a305 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON Two-operand assembly aliases for VSLI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148819 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d8ee0cc4e8b67f9d85d08bd55e53ac14c5ca533d 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON Two-operand assembly aliases for VSRI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148818 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
78d13e191e0f6bcb4bef5bc5c8c5f6e5be1f4070 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON add correct predicates for some asm aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148815 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
46de2d5f5b83dfb8c1e56242fa656a3444ec7f3d 24-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Use correct register class for am2offset register operands.
This pacifies machine verifier


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148782 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
539aab771fea06bd230789e19c9672ef80ad1c7e 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VST4(multiple 4 element structures) assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148764 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
8abe7e33641fccfa70a7e335939e83dfbf654fe8 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VLD4(multiple 4 element structures) assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148762 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
7945eade3d8db8c1dd52a291cee5d55ac0539586 24-Jan-2012 Jim Grosbach <grosbach@apple.com> Tidy up. Remove some vertical space for readability.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148761 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3eb4be0ace6263f35a2f3aae9e964a752ebe55af 24-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Revert r148686 (and r148694, a fix to it) due to a serious layering
violation -- MC cannot depend on CodeGen.

Specifically, the MCTargetDesc component of each target is actually
a subcomponent of the MC library. As such, it cannot depend on the
target-independent code generator, because MC itself cannot depend on
the target-independent code generator. This change moved a flag from the
ARM MCTargetDesc file ARMMCAsmInfo.cpp to the CodeGen layer in
ARMException.cpp, leaving behind an 'extern' to refer back to it. That
layering order isn't viable givin the constraints outlined above.
Commandline flags are designed to be static specifically to avoid these
types of bugs.

Fixing this is likely going to require some non-trivial refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148759 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
CTargetDesc/ARMMCAsmInfo.cpp
7b426cee22a3cac030ec7ace0be04ee8569f18c7 24-Jan-2012 Jim Grosbach <grosbach@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148757 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4adb18234278d6d40e5791e0dd6970be9a4b0b57 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VST3(single element from one lane) assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148755 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
d7433e2873706265d545edc5cdd0a728dd71ef66 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VST3(multiple 3-element structures) assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148748 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
c387fc66bd52e4276fdc2704a3aaed57cc1f9a11 24-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VLD3(multiple 3-element structures) assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148745 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrInfo.td
RMInstrThumb2.td
3a678af71dec76a7e1474ad85a99b3588516906d 23-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON VLD3 lane-indexed assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148734 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
8b31f95bdde1e3809a1c9fdb6926b1840effcf9c 23-Jan-2012 Jim Grosbach <grosbach@apple.com> Simplify some NEON assembly pseudo definitions.

Let the generic token alias definitions handle the data subtype
suffices. We don't need explicit versions for each.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148718 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
db4b85f532314e5972fedb1c1e04820de3cabc83 23-Jan-2012 NAKAMURA Takumi <geek4civic@gmail.com> ARMAsmPrinter.cpp: Try to fix up r148686. EnableARMEHABI was also here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148694 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7908480e4caf2f7ecb0b62c900039d49e7d51ebb 23-Jan-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> An option to selectively enable parts of ARM EHABI support.

This change adds an new value to the --arm-enable-ehabi option that
disables emitting unwinding descriptors. This mode gives a working
backtrace() without the (currently broken) exception support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148686 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCAsmInfo.cpp
4b4e62219be91839091f9e35d8accf877f925d81 22-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Add fused multiple+add instructions from VFPv4.
Patch by Ana Pazos!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148658 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMSchedule.td
RMSubtarget.cpp
RMSubtarget.h
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
4d6ccb5f68cd7c6418a209f1fa4dbade569e4493 20-Jan-2012 David Blaikie <dblaikie@gmail.com> More dead code removal (using -Wunreachable-code)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMELFWriterInfo.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMachObjectWriter.cpp
1e9ccd68d40c3d79b2f25f471553914d73bdee58 20-Jan-2012 Bob Wilson <bob.wilson@apple.com> ARM vector any_extends need to be selected to vmovl. <rdar://problem/10723651>

We have patterns for vector sext and zext operations but were missing
anyext. Without those patterns, codegen will fail when the selection DAG
has any_extend nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148568 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6d56730ab8a08a3530a029e9b681590d88b00bc0 20-Jan-2012 Jim Grosbach <grosbach@apple.com> VST2 four-register w/ update pseudos for fixed/register update.

rdar://10724489

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148560 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
51222d1551383dd7b95ba356b1a5ed89df69e789 20-Jan-2012 Jim Grosbach <grosbach@apple.com> NEON use vmov.i32 to splat some f32 values into vectors.

For bit patterns that aren't representable using the 8-bit floating point
representation for vmov.f32, but are representable via vmov.i32, treat
the .f32 syntax as an alias. Most importantly, this covers the case
'vmov.f32 Vd, #0.0'.

rdar://10616677

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148556 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
e545ee20f1b6ea6c03919cc9bc1a4a059c2f03b6 19-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Silence warnings about mixing enums.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148495 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
73dd8bbce3ff54c318233027fb5e29f8298e01d6 19-Jan-2012 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Emit ARM EHABI unwinding instructions for 3 more Thumb instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148473 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ae69f703d59410fc96f04be3c1afeaa1c17a45ce 19-Jan-2012 Jim Grosbach <grosbach@apple.com> ARM assembly diagnostic caret in better position for FPImm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148459 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9363c58dc2473a6470d3e7037afe8a215bee7e3e 19-Jan-2012 Jim Grosbach <grosbach@apple.com> Thumb2 relaxation for tADR to t2ADR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148456 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
d26bad079d6977309699e0bc9203451904acbd86 19-Jan-2012 Jim Grosbach <grosbach@apple.com> Add comment and fix range check in condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148455 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
bca15f9c8059ccb9244853f86593c35ac35c8801 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> - Slight change to finalizeBundle() interface. LastMI is not exclusive (pointing
to instruction right after the last instruction in the bundle.
- Add a finalizeBundle() variant that doesn't specify LastMI. Instead, the code
will find the last instruction in the bundle by following the 'InsideBundle'
marker. This is useful in case bundles are formed early (i.e. during MI
scheduling) but finalized later (i.e. after register allocator has finished
rewriting virtual registers with physical registers).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148444 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
9b159710ebe8a37cba38ca0c5b465e362bd68af7 19-Jan-2012 Evan Cheng <evan.cheng@apple.com> Rename Finalizebundle to finalizeBundle to conform to coding guideline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148440 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
71f0fc1ca88965b69b4b2c8794a7144bc93d4bba 19-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore register mask operands when lowering instructions to MC.

This is similar to implicit register operands. MC doesn't understand
register liveness and call clobbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148437 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMInstrThumb2.td
256ba4f42a16da2b3ffc757aa7bf191890765580 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Thumb2 relaxation for LDR(literal).

If the fixup is out of range for the Thumb1 instruction, relax it
to the Thumb2 encoding instead.

rdar://10711829

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148424 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
a2ee0fa3ee4ae46c3dc655a5a57e9db539912e14 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Rename pattern for clarity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148422 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
ec3433852dd11e8ff60c9610b4c84468e5935f2b 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Tidy up. MCAsmBackend naming conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148400 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
5a7efa7f134dd6f8f927c162d9f4062eaa3eb4ac 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Thumb2 load/store fixups don't set the thumb bit.

Load/store instructions w/ a fixup to be relative a function marked as thumb
don't use the low bit to specify thumb vs. non-thumb like interworking
branches do, so don't set it when dealing with those fixups.

rdar://10348687.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148366 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
9b5b125c34b47e0e7eef2548acee8bf1448c4b71 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Move some ARM specific MCAssmebler bits into the ARMAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148364 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
31867660cb81ea2b1d1a6ffa7d09c91acb754a8b 18-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a CoveredBySubRegs property to Register descriptions.

When set, this bit indicates that a register is completely defined by
the value of its sub-registers.

Use the CoveredBySubRegs property to infer which super-registers are
call-preserved given a list of callee-saved registers. For example, the
ARM registers D8-D15 are callee-saved. This now automatically implies
that Q4-Q7 are call-preserved.

Conversely, Win64 callees save XMM6-XMM15, but the corresponding
YMM6-YMM15 registers are not call-preserved because they are not fully
defined by their sub-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148363 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
3ee7d15284f188672e9e429e9e5cf7b870698677 18-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement ARMBaseRegisterInfo::getCallPreservedMask().

Move ARM callee-saved lists into ARMCallingConv.td.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148357 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCallingConv.td
2dd674fdce68f8fd59d78a3bbab2cf5b8d220290 17-Jan-2012 David Blaikie <dblaikie@gmail.com> Removing unused default switch cases in switches over enums that already account for all enumeration values explicitly.

(This time I believe I've checked all the -Wreturn-type warnings from GCC & added the couple of llvm_unreachables necessary to silence them. If I've missed any, I'll happily fix them as soon as I know about them)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148262 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
smParser/ARMAsmParser.cpp
810d6d3354a31f24125abef831e4afccbbbe973d 16-Jan-2012 David Blaikie <dblaikie@gmail.com> Refactor variables unused under non-assert builds (& remove two entirely unused variables).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148230 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ed4c8c633c52a40ad1a3e8687f290be4aeb1f0e8 15-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Return an ArrayRef from ShuffleVectorSDNode::getMask and push it through CodeGen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148218 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bfe8afaaec03795fe6c78daa9817e54c186a699d 14-Jan-2012 Evan Cheng <evan.cheng@apple.com> After r147827 and r147902, it's now possible for unallocatable registers to be
live across BBs before register allocation. This miscompiled 197.parser
when a cmp + b are optimized to a cbnz instruction even though the CPSR def
is live-in a successor.
cbnz r6, LBB89_12
...
LBB89_12:
ble LBB89_1

The fix consists of two parts. 1) Teach LiveVariables that some unallocatable
registers might be liveouts so don't mark their last use as kill if they are.
2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional
branch does not kill CPSR.

rdar://10676853


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148168 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMRegisterInfo.td
fae699a580380b910740e1cb17ab950ba91ce4a1 11-Jan-2012 Eric Christopher <echristo@apple.com> Fix assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147966 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
08c66642d70879cc479b502c048df4f5fdeaefae 11-Jan-2012 Andrew Trick <atrick@apple.com> ARM Ld/St Optimizer fix.

Allow LDRD to be formed from pairs with different LDR encodings. This was the original intention of the pass. Somewhere along the way, the LDR opcodes were refined which broke the optimization. We really don't care what the original opcodes are as long as they both map to the same LDRD and the immediate still fits.

Fixes rdar://10435045 ARMLoadStoreOptimization cannot handle mixed LDRi8/LDRi12


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147922 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
19d0bf3a9273d337b776ca33c284fd2b5da485ab 10-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Consider unknown alignment caused by OptimizeThumb2Instructions().

This function runs after all constant islands have been placed, and may
shrink some instructions to their 2-byte forms. This can actually cause
some constant pool entries to move out of range because of growing
alignment padding.

Treat instructions that may be shrunk the same as inline asm - they
erode the known alignment bits.

Also reinstate an old assertion in verify(). It is correct now that
basic block offsets include alignments.

Add a single large test case that will hopefully exercise many parts of
the constant island pass.

<rdar://problem/10670199>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147885 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f1f16c832f92829f47573620c20d8420c47bde6c 10-Jan-2012 Jim Grosbach <grosbach@apple.com> ARM updating VST2 pseudo-lowering fixed vs. register update.

rdar://10663487

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147876 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
ea7ad3b3e60f91a5256053b26988806f1dbfdd27 10-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Move default case for covered enum outside of switch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147870 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMBaseInfo.h
95789d0ff90c24297947c778b256de0e8dc26cd6 10-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> Fix a -Wreturn-type warning in g++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147867 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMBaseInfo.h
2bd335470f8939782f3df7f6180282d3825d4f09 10-Jan-2012 David Blaikie <dblaikie@gmail.com> Remove unnecessary default cases in switches that cover all enum values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147855 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
CTargetDesc/ARMBaseInfo.h
CTargetDesc/ARMMCCodeEmitter.cpp
dae412bd320f1522bd1d850be0276212fca0331f 10-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Accurately model hardware alignment rounding.

On Thumb, the displacement computation hardware uses the address of the
current instruction rouned down to a multiple of 4. Include this
rounding in the UserOffset we compute for each instruction.

When inline asm is present, the instruction alignment may not be known.
Constrain the maximum displacement instead in that case.

This makes it possible for CreateNewWater() and OffsetIsInRange() to
agree about the valid displacements. When they disagree, infinite
looping happens.

As always, test cases for this stuff are insane.

<rdar://problem/10660175>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147825 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
169db15717e77f2893d1868ef934ce42c2e9e956 09-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Catch runaway ARMConstantIslandPass even in -Asserts builds.

The pass is prone to looping, and it is better to crash than loop
forever, even in a -Asserts build.

<rdar://problem/10660175>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147806 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
79aa048d2102a7d4c8abbba82b4b8a41dbc32214 08-Jan-2012 Evan Cheng <evan.cheng@apple.com> Don't forget to transfer implicit uses of return instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147752 91177308-0d34-0410-b5e6-96231b3b80d8
humb1FrameLowering.cpp
8f37a2422ea948b71d0992ab3f82dab07a54ce52 07-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Match SelectionDAG logic for enabling movt.

Darwin doesn't do static, and ELF targets only support static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147740 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
f321e1075eabae96f62b1f2570d9dee5d10b8200 07-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove VectorExtras. This unused helper was written for a type of API that is discouraged now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147738 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4964ba01f96d5b3a8fb27a7847c01666ee9b4ebd 07-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use getRegForValue() to materialize the address of ARM globals.

This enables basic local CSE, giving us 20% smaller code for
consumer-typeset in -O0 builds.

<rdar://problem/10658692>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147720 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ccec74738d0fc34f4bc2ac6909324e62705f1c38 07-Jan-2012 Evan Cheng <evan.cheng@apple.com> Copy implicit defs (e.g. r0) when changing tBX_RET to tPOP_RET. This bug is
exposed with an upcoming change will would delete the copy to return register
because there is no use! It's amazing anything works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147715 91177308-0d34-0410-b5e6-96231b3b80d8
humb1FrameLowering.cpp
45ca7c6336f174fae3a9521d5161a498ca27fd13 07-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use movw+movt in ARMFastISel::ARMMaterializeGV.

This eliminates a lot of constant pool entries for -O0 builds of code
with many global variable accesses.

This speeds up -O0 codegen of consumer-typeset by 2x because the
constant island pass no longer has to look at thousands of constant pool
entries.

<rdar://problem/10629774>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147712 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bad1e6b8e0dd51a15f6f2cae4f9d7815120f2471 06-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable aligned NEON spilling by default.

Experiments show this to be a small speedup for modern ARM cores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147689 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
59ecaae7b61ef0023ed1db4643937f7a57f61d10 06-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Abort AdjustBBOffsetsAfter early when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147685 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
7255a4e1332ccb69918ebe041dff05f9e4e5815d 05-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Reapply r146997, "Heed spill slot alignment on ARM."

Now that canRealignStack() understands frozen reserved registers, it is
safe to use it for aligned spill instructions.

It will only return true if the registers reserved at the beginning of
register allocation allow for dynamic stack realignment.

<rdar://problem/10625436>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147579 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
54f3b7a9109d1916cf25ffdb2ed5045f03121b5a 05-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid reserving an ARM base pointer during register allocation.

Once register allocation has started the reserved registers are frozen.

Fix the ARM canRealignStack() hook to respect the frozen register state.
Now the hook returns false if register allocation was started with frame
pointer elimination enabled.

It also returns false if register allocation started without a reserved
base pointer, and stack realignment would require a base pointer. This
bug was breaking oggenc on armv6.

No test case, an upcoming patch will use this functionality to realign
the stack for spill slots when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147578 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
afad0fe59a791cb4fd87fbd7ea2b1aba8d67a7af 04-Jan-2012 Evan Cheng <evan.cheng@apple.com> Fix more places which should be checking for iOS, not darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147513 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
RMFrameLowering.cpp
humb1FrameLowering.cpp
6d5b7cc235e284130350045a320426afceb82874 03-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r146997, "Heed spill slot alignment on ARM."

This patch caused a miscompilation of oggenc because a frame pointer was
suddenly needed halfway through register allocation.

<rdar://problem/10625436>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147487 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
19055cc2712223f6834fc3cf5b547803ba83f066 03-Jan-2012 Matt Beaumont-Gay <matthewbg@google.com> Fix malformed assert.

If anybody has strong feelings about 'default: assert(0 && "blah")' vs
'default: llvm_unreachable("blah")', feel free to regularize the instances of
each in this file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147459 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
43ea32ca042214c28b7abba9c10f470ac5ade405 24-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix Comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147238 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
f06f6f50e9844b88cfbb9fb896fff9c3a752966b 23-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Experimental support for aligned NEON spills.

ARM targets with NEON units have access to aligned vector loads and
stores that are potentially faster than unaligned operations.

Add support for spilling the callee-saved NEON registers to an aligned
stack area using 16-byte aligned NEON loads and store.

This feature is off by default, controlled by an -align-neon-spills
command line option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147211 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMFrameLowering.h
RMMachineFunctionInfo.h
f4aea8f34946d4d2b101b8e3c6db95c18be80173 23-Dec-2011 Bob Wilson <bob.wilson@apple.com> Add variants of the dispatchsetup pseudo for Thumb and !VFP. <rdar://10620138>

My change r146949 added register clobbers to the eh_sjlj_dispatchsetup pseudo
instruction, but on Thumb1 some of those registers cannot be used. This
caused massive failures on the testsuite when compiling for Thumb1. While
fixing that, I noticed that the eh_sjlj_setjmp instruction has a "nofp"
variant, and I realized that dispatchsetup needs the same thing, so I have
added that as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147204 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
4050bc4cab61f8d3c7583a9b60f17c7da47bbf69 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP assembly parsing and encoding for VCVT(float <--> fixed point).

rdar://10558523

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147189 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
d2355e72c56f0fe8fe032afc171c5622ad029c6a 22-Dec-2011 Bob Wilson <bob.wilson@apple.com> Add missing usesCustomInserter flag on Int_eh_sjlj_setjmp_nofp.

Noticed by inspection; I don't have a testcase for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147188 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
21bcca81f4597f1c7d939e5d69067539ff804e6d 22-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Use predicate function a bit more liberally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147184 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b975c27adc2371a9666fa9b8cecd9487966ec5b1 22-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix incorrect relocation generation. Patch by Kristof Beyls.
Fixes PR11214.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147180 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
c7448f8d47de96333d6854113fb9f0e7affb31cd 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP add encoding of the bitcount to fixed-point<-->floating point. insns.

The value from the operands isn't right yet, but we weren't encoding it at
all previously. The parser needs to twiddle the values when building the
instruction.

Partial for: rdar://10558523

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147170 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
8c748113eb5df50ce1e44e5cb92be941aa94f4bd 22-Dec-2011 Jim Grosbach <grosbach@apple.com> Remove some bogus comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147169 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
1aa149f5acea364aa8bc9cfc3a167f78eff2e96b 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM pre-UAL aliases. fcmp[sd].

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147158 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
8d9550bde95c8d128e7bf62e9e65dec1854e2d1d 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembler should accept shift-by-zero for any shifted-immediate operand.

Just treat it as-if the shift wasn't there at all. 'as' compatibility.

rdar://10604767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147153 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
de626ad8726677328e10dbdc15011254214437d7 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parser canonicallize on 'lsl' for shift-by-zero form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147152 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
18c8d12dea944086ef0ce2f674ca8a34de2bbd74 22-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147151 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f1a88fc474b87d66906689f5bf76d67cb5b1a4c7 22-Dec-2011 Jim Grosbach <grosbach@apple.com> Nuke invalid comment from copy/paste.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147150 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6db2d926033a5b35ca01293167353a15637ac7f2 22-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Make the virtual methods in ARMELFObjectWriter public.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147132 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
81fafde8a6465fbf2809dd77e4672477359f78a6 22-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Hopefully fix the cmake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147121 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/CMakeLists.txt
7609785d2b9b79b9aafc3b3afabcb691cfc8afa5 22-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Fix name in comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147119 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMELFObjectWriter.cpp
74cab51aa5cdc955b1de0c93d3785479c3ed2d18 22-Dec-2011 Richard Smith <richard-llvm@metafoo.co.uk> Unbreak cmake build after r147115.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147117 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/CMakeLists.txt
69bbda03918a18bd4477bb254d51346ee3033567 22-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Move the ARM specific parts of the ELF writer to Target/ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147115 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMELFObjectWriter.cpp
CTargetDesc/ARMMCTargetDesc.h
f7c66fa0de7c18a030480d2581051510c574da4b 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON mnemonic aliase for vrecpeq.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147109 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
af33a0cfe092afd327e1b8b05c655d9eab689eed 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP optional data type on VMOV GPR<-->SPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147104 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
5f669fa8ba41e1794af1624c25186b941cf1dfb4 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON optional data type on VSWP instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147103 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4553fa3128cb582426fb02c2f2779d659f1073a0 22-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON mnemonic aliases for vzipq and vswpq.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147102 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
de4d83943a5206690fbe1e39dd33770f5ab29595 21-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM asm parser should be more lenient w/ .thumb_func directive.

Rather than require the symbol to be explicitly an argument of the directive,
allow it to look ahead and grab the symbol from the next non-whitespace
line.

rdar://10611140

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147100 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
520dc78d92a47af5e644b09f401d278cb1d5d196 21-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing of 'mov rd, rn, rrx'.

Maps to the RRX instruction. Missed this case earlier.

rdar://10615373

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147096 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
a2a98fd0ddd2ae277be7cdd62aae92f6c5155e07 21-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move common code into an MRI function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147071 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
e6949b13997e6d31aa4719a0e80c4b6b405e42a9 21-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON assmebly parsing for VLD2 to all lanes instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147069 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
8d0447c506eceddcebb1d4eb3bb869a83de19d84 21-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix a couple of copy-n-paste bugs. Noticed by George Russell!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147064 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dc9a8a378daf432d8dcfc178507afe149706f9a6 21-Dec-2011 Rafael Espindola <rafael.espindola@gmail.com> Reduce the exposure of Triple::OSType in the ELF object writer. This will
avoid including ADT/Triple.h in many places when the target specific bits are
moved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147059 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
1e33e8b715299dd014931be388cf593d6a55dc69 21-Dec-2011 Evan Cheng <evan.cheng@apple.com> Fix a couple of copy-n-paste bugs. Noticed by George Russell.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147032 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c931325d99a93c273844c38d3c762705c454ae93 21-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing allows constant expressions for lane indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147028 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3471d4fbbd50eabb12511b711cbd2afd7bb9d962 21-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VLD2 assembly parsing for structure to all lanes, non-writeback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147025 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
aee718beac4fada5914d773db38002d95cae5e0d 21-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM .req register name aliases are case insensitive, just like regnames.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147009 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3cbe43fe69680df772d83947ced97ca445861213 20-Dec-2011 Jim Grosbach <grosbach@apple.com> Move comment to appropriate place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147000 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
52346e964ff1108729c2b8990b859c10f09a1822 20-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Heed spill slot alignment on ARM.

Use the spill slot alignment as well as the local variable alignment to
determine when the stack needs to be realigned. This works now that the
ARM target can always realign the stack by using a base pointer.

Still respect the ARMBaseRegisterInfo::canRealignStack() function
vetoing a realigned stack. Don't use aligned spill code in that case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146997 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
5b484312c66f8d125c072517947538f301c5a805 20-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VST2 single-element, double spaced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146990 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
95fad1c6034cdf8010428e61b71cd196ee1698ad 20-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD2 single-element, double spaced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146983 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
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
RMBaseRegisterInfo.cpp
RMFastISel.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
d7c9e08b6bcf15655919960e214b9b91677cdde9 20-Dec-2011 Jason W Kim <jason.w.kim.2009@gmail.com> First steps in ARM AsmParser support for .eabi_attribute and .arch
(Both used for Linux gnueabi)
No behavioral change yet (no tests need so far)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146977 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cfb75fba735edd44841eb21c72c3a9736a7d9af2 20-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Fix up the CMake build for the new files added in r146960, they're
likely to stay either way that discussion ends up resolving itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146966 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2d24e2a396a1d211baaeedf32148a3b657240170 20-Dec-2011 David Blaikie <dblaikie@gmail.com> Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146960 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
CTargetDesc/ARMMCAsmInfo.cpp
CTargetDesc/ARMMCAsmInfo.h
c0b0e57a87aa5e52e0a45af75fc1cee78d8f2bc6 20-Dec-2011 Bob Wilson <bob.wilson@apple.com> Mark ARM eh_sjlj_dispatchsetup as clobbering all registers. Radar 10567930.

We used to rely on the *eh_sjlj_setjmp instructions to mark that a function
with setjmp/longjmp exception handling clobbers all the registers. But with
the recent reorganization of ARM EH, those eh_sjlj_setjmp instructions are
expanded away earlier, before PEI can see them to determine what registers to
save and restore. Mark the dispatchsetup instruction in the same way, since
that instruction cannot be expanded early. This also more accurately reflects
when the registers are clobbered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146949 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
04b5d93250bef585631a583a85f6733b1bdc8c52 20-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly shifts by zero should be plain 'mov' instructions.

"mov r1, r2, lsl #0" should assemble as "mov r1, r2" even though it's
not strictly legal UAL syntax. It's a common extension and the friendly
thing to do.

rdar://10604663

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146937 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9b0878512fb57ee4b0bc483509e4d9f4f0b9e426 20-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON assembly aliases for VMOV<-->VMVN for i32 immediates.

e.g., "vmov.i32 d4, #-118" can be assembled as "vmvn.i32 d4, #117"

rdar://10603913

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146925 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
2f196747f15240691bd4e622f7995edfedf90f61 20-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding support for LDRD(label).

rdar://9932658

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146921 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMFixupKinds.h
CTargetDesc/ARMMCCodeEmitter.cpp
d22170e16a42aed0212e1e52f189bfb8b7c7105d 19-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON two-operand aliases for VPADD.

rdar://10602276

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146895 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6849019079794c573b72c1ec55613cb6ba1297a5 19-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP pre-UAL mnemonic aliases for fmul[sd].

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146892 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
9c39789c361d4fe2632f28fca74c9ea5fff3dafc 19-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP pre-UAL mnemonic aliases for fcpy[sd] and fdiv[sd].

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146887 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
61b74b42478474534827070cdd703811ddc9ce19 19-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON implied destination aliases for VMAX/VMIN.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146885 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
eeaf1c1636c664c707fd9ecc96916fd20ddf137a 19-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON relax parse time diagnostics for alignment specifiers.

There's more variation that we need to handle. Error checking will need
to be on operand predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146884 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
3346dcef02a5b43bbd03d0b84803b60b4b77bf63 19-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146882 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9897c622e049e0008747381505b406d8ecc40bec 19-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove a register class that can just as well be synthesized.

Add the new TableGen register class synthesizer feature to the release
notes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146875 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
570f9a972e02830d1ca223743dd6b4cc4fdf9549 19-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Emit a getMatchingSuperRegClass() implementation for every target.

Use information computed while inferring new register classes to emit
accurate, table-driven implementations of getMatchingSuperRegClass().

Delete the old manual, error-prone implementations in the targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146873 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
b16db8171970f7390895f1e36d5887e6baa9abc3 17-Dec-2011 Evan Cheng <evan.cheng@apple.com> Fix a CPSR liveness tracking bug introduced when I converted IT block to bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146805 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
2027379985f1cbb965be808adad5b819a66dd97f 17-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Preserve more memory operands in ARMExpandPseudo.

I don't think this affects anything but verbose assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146787 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
b076fb7762498289718dbe4cb5de03e6e93bd4e7 17-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix off-by-one error in bucket sort.

The bad sorting caused a misaligned basic block when building 176.vpr in
ARM mode.

<rdar://problem/10594653>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146767 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f9aabb8f32d61d19f57fb4710c06d01a12fedce7 16-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't adjust for alignment padding in OffsetIsInRange.

This adjustment is already included in the block offsets computed by
BasicBlockInfo, and adjusting again here can cause the pass to loop.

When CreateNewWater splits a basic block, OffsetIsInRange would reject
the new CPE on the next pass because of the too conservative alignment
adjustment. This caused the block to be split again, and so on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146751 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f5bb45f89564129fcaca25b9dd84750ffc02beed 16-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Note ARM constant island alignment in the release notes.

The command line option should be removed, but not until the feature has
gotten a lot of testing. The ARMConstantIslandPass tends to have subtle
bugs that only show up after a while.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146739 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a1e6e241a813f81be2d2f36ab60c950ca297574b 16-Dec-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r146714 (Dec 16th 2011)

Change-Id: Ied458adb08bf9a69250cbcee9b14b44d17e8701a
ddecfe54a35ffbe0675f7f33e493734fd60b2495 16-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON aliases for vmovq.f*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146714 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrThumb2.td
2f21e8c5ba62ec98e7dec9c65e35a3b4e7fdaf4d 15-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Make check a bit more strict so we don't call ARM_AM::getFP32Imm with a value that isn't a 32-bit value. (This is just to be safe; I don't think this actually causes any issues in practice.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146700 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a738da7bd30819f1bc710d313c9ecb06c56f1a4f 15-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VCLE is an alias for VCGE w/ the source operands reversed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146699 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
60d99a5278e4a0e7116a05c01cececb07ca1362a 15-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VTBL/VTBX assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146691 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
b6ff6ec85e589b8ad3bede4533dc71a09655bb1e 15-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable proper constant island alignment by default.

The code size increase is tiny (< 0.05%) because so little code uses
16-byte constant pool entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146690 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
276ed0344c05822617934fa4a6a9920d864193a5 15-Dec-2011 Jim Grosbach <grosbach@apple.com> Silence warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146686 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0aaf4cd9b34454eb381e1694f520504779c6b7f8 15-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON two-register double spaced register list parsing support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146685 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
299b059cd675f1e5beac1a2383a44e062e2eef43 15-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Consider CPE alignment in CreateNewWater().

An aligned constant pool entry may require extra alignment padding where
the new water is created. Take that into account when computing offset.

Also consider the alignment of other constant pool entries when
splitting a basic block. Alignment padding may make it necessary to
move the split point higher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146609 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
799ca9d1b7cfa8910ac27f8de4929bfbd278114d 15-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON better assembly operand range checking for lane indices of VLD/VST.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146608 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
9b1b3902882675e5ce35eacd639456bd648324b7 15-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VLD2/VST2 lane indexed assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146605 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
ec04a3f8db9ab9db3bbec3ce32baaa2ea2cb853f 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON fix alignment encoding for VST2 w/ writeback.

Add tests for w/ writeback instruction parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146594 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2dbab5c33db5eb08f909f5b9a036d75c9ac88a25 14-Dec-2011 Jim Grosbach <grosbach@apple.com> Nuke old code. Missed in last commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146590 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
bb3a2e4d0defc6854d37384d80858037dbbc5f20 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON refactor VST2 w/ writeback instructions.

In addition to improving the representation, this adds support for assembly
parsing of these instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146588 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
20accfc6c7b22b22193eb90c53921f71c1202a73 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON improve factoring a bit. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146585 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
020f4106f820648fd7e91956859844a80de13974 14-Dec-2011 Evan Cheng <evan.cheng@apple.com> Model ARM predicated write as read-mod-write. e.g.
r0 = mov #0
r0 = moveq #1

Then the second instruction has an implicit data dependency on the first
instruction. Sadly I have yet to come up with a small test case that
demonstrate the post-ra scheduler taking advantage of this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146583 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
e90ac9bce9aa6de288568df9bf6133c08534ae2f 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VST2 assembly parsing and encoding.

Work in progress. Parsing for non-writeback, single spaced register lists
works now. The rest have the representations better factored, but still
need more to be able to parse properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146579 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
5e46dcbb4b6f6e82f7bb88490800ed09ac02f105 14-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix speling and 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146575 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
5dca1c9f633e3657189afaf9a672a7715c7be22d 14-Dec-2011 Jim Grosbach <grosbach@apple.com> Fix copy/pasto that skipped the 'modify' step.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrInfo.td
RMInstrThumb2.td
6762f8f302f5c01a26e848cdcac20bddde0dd22c 14-Dec-2011 Chad Rosier <mcrosier@apple.com> VFP2 is required for FP loads. Noticed by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146569 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
64ac91b4b6e62f82d608fe9602b28c00171f88a0 14-Dec-2011 Chad Rosier <mcrosier@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146568 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
404ed3c2239ff394270053bdcb76a5a4908af7ce 14-Dec-2011 Chad Rosier <mcrosier@apple.com> Fix 80-column violation and extraneous brackets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146566 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a39cda7aff2d379ad9c15500319ab037baa48747 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembler support for the target-specific .req directive.

rdar://10549683


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146543 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ddfd1377d2e4154d44dc3ad217735adc15af2e3f 14-Dec-2011 Evan Cheng <evan.cheng@apple.com> - Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
and use lists of the BUNDLE instruction) and a pass to unpack bundles.
- Teach more of MachineBasic and MachineInstr methods to be bundle aware.
- Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
prevent IT blocks from being broken apart.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146542 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMFastISel.cpp
RMHazardRecognizer.cpp
RMHazardRecognizer.h
RMTargetMachine.cpp
LxExpansionPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
27debd60a152d39e421c57bce511f16d8439a670 13-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM LDM/STM system instruction variants.

rdar://10550269

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146519 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
d7ea73a4909fc3200a1cecd2b420d7ace2180b70 13-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 tweak for ccout handling in RSB parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146516 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
55b02f28c1a2960ebb88cf5019cc5b36bb2eabf4 13-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM thumb2 parsing of "rsb rd, rn, #0".

rdar://10549741


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146515 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0f293de207fa0e9461a9dbee95bed9a6a2c52f76 13-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON two-operand aliases for VQDMULH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146514 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
f10154010ec01a6965f86e8c136db79732c92eee 13-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM add some more pre-UAL VFP mnemonics for convenience when porting old code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146508 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
485d8bf7e5537a19d3ad63e65f841bd7e63d4d06 13-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM add more 'gas' compatibility aliases for NEON instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146507 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
8a9bce978fa4ca60d3a0ba42a1d44c41463a3c33 13-Dec-2011 Chad Rosier <mcrosier@apple.com> [fast-isel] Unaligned loads of floats are not supported. Therefore, convert to a regular
load and then move the result from a GPR to a FPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146502 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
63974b2144c87c962effdc0508c27643c8ad98b6 13-Dec-2011 Chandler Carruth <chandlerc@gmail.com> Initial CodeGen support for CTTZ/CTLZ where a zero input produces an
undefined result. This adds new ISD nodes for the new semantics,
selecting them when the LLVM intrinsic indicates that the undef behavior
is desired. The new nodes expand trivially to the old nodes, so targets
don't actually need to do anything to support these new nodes besides
indicating that they should be expanded. I've done this for all the
operand types that I could figure out for all the targets. Owners of
various targets, please review and let me know if any of these are
incorrect.

Note that the expand behavior is *conservatively correct*, and exactly
matches LLVM's current behavior with these operations. Ideally this
patch will not change behavior in any way. For example the regtest suite
finds the exact same instruction sequences coming out of the code
generator. That's why there are no new tests here -- all of this is
being exercised by the existing test suite.

Thanks to Duncan Sands for reviewing the various bits of this patch and
helping me get the wrinkles ironed out with expanding for each target.
Also thanks to Chris for clarifying through all the discussions that
this is indeed the approach he was looking for. That said, there are
likely still rough spots. Further review much appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146466 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2e29024d2e3aa23a1ec049c30dbce903e57d5f9b 13-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Account for CPE alignment when searching for new water.

Constant pool entries with different alignment may cause more alignment
padding to be inserted. Compute the amount of padding needed, and try to
pick the location that requires the least amount of padding.

Also take the extra padding into account when the water is above the
use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146458 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b0c594fd422417e1e290da166b566c7bee74644b 12-Dec-2011 Daniel Dunbar <daniel@zuster.org> LLVMBuild: Introduce a common section which currently has a list of the
subdirectories to traverse into.
- Originally I wanted to avoid this and just autoscan, but this has one key
flaw in that new subdirectories can not automatically trigger a rerun of the
llvm-build tool. This is particularly a pain when switching back and forth
between trees where one has added a subdirectory, as the dependencies will
tend to be wrong. This will also eliminates FIXME implicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146436 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
9cd2b9562d23909937ab2e4bb45c2a1ed4c86816 12-Dec-2011 Bob Wilson <bob.wilson@apple.com> Implement 'e' and 'f' modifiers for Neon inline asm. <rdar://problem/10551006>

These modifiers simply select either the low or high D subregister of a Neon
Q register. I've also removed the unimplemented 'p' modifier, which turns out
to be a bit different than the comment here suggests and as far as I can tell
was only intended for internal use in Apple's version of gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146417 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4ab406d7fc06b1272d02cd8be46f0c5ebe51a3da 12-Dec-2011 Daniel Dunbar <daniel@zuster.org> LLVMBuild: Remove trailing newline, which irked me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146409 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/LLVMBuild.txt
isassembler/LLVMBuild.txt
nstPrinter/LLVMBuild.txt
LVMBuild.txt
CTargetDesc/LLVMBuild.txt
argetInfo/LLVMBuild.txt
8552821e578d693ec14007b21e9468010485ae76 12-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a postOffset() alignment argument.

This computes the offset of the layout sucessor block, considering its
alignment as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146401 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
bd1ec17caf8fc393b112e6c01fe0e9cd7db213ae 12-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146400 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
cca33a3f24106cfdb6cb892b76efc76f1ad91806 12-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also set the proper alignment on inner islands and the function itself.

Downgrade the alignment of the initial constant island when constant
pool entries are moved elsewhere.

This is all gated by -arm-align-constant-islands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146391 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
dbf350a5a8f5fb5321a4e11e381f0023fbe61d15 12-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Make MF a class member instead of passing it around everywhere.

Also add an MCP member pointing to the machine constant pool.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146382 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b813f924a749396ffb4a4bd087ee1dbb678551f3 12-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a -arm-align-constant-islands flag, default off.

Order constant pool entries by descending alignment in the initial
island to ensure packing and correct alignment. When the command line
flag is set, also align the basic block containing the constant pool
entries.

This is only a partial implementation of constant island alignment. More
to come.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146375 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
3e0dc0606aed30b1fa6e1abcecf2cbf5e9ac1af9 11-Dec-2011 Stepan Dyatkovskiy <stpworld@narod.ru> Fixed bug 9905: Failure in code selection for llvm intrinsics sqrt/exp (fix for FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP, FEXP2). Third attempt: simplified checks in test for armv7-apple-darwin11.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146341 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d440f678fb0fd6a8735bc315bd6f63fe8a71e8bd 10-Dec-2011 Chad Rosier <mcrosier@apple.com> Revert r146322 to appease buildbots. Original commit message:

Fixed bug 9905: Failure in code selection for llvm intrinsics sqrt/exp (fix for
FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP, FEXP2). Second
attempt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146328 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8c0b807e8fc9a14f61cc81589e4e81ea78ac57b4 10-Dec-2011 Stepan Dyatkovskiy <stpworld@narod.ru> Fixed bug 9905: Failure in code selection for llvm intrinsics sqrt/exp (fix for FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP, FEXP2). Second attempt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146322 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
77caaf0fc000a1e2e2afe949b6205ea5db668be9 10-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Try to align the point where a large basic block is split.

The split point is picked such that the newly created water has the same
alignment as the function. This makes the island suitable for constant
pool entries with potentially higher alignment.

This also fixes an issue where the basic block was split one instruction
too late, causing nonconvergence of the algorithm.

<rdar://problem/10550705>

There is still an issue with correctly packing differently aligned
entries in the island.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146314 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
2d5023bbcf816de39e37d9fea6dfa8f7aadb393f 10-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> More debug output formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146313 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
48171e7fbe58bb418f09717813779d03903d35e4 10-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM add some more pre-UAL VFP mnemonics for convenience when porting old code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146300 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
effab8fa2413e96b6a2ce2bbeefe35fe478ee028 10-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Splats can contain undef's; make sure to handle them correctly. PR11526.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146299 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
21d7fb814adcedc7b2f156e003d2083ad1d8ac6a 10-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM add some pre-UAL VFP mnemonics for convenience when porting old code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146296 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
8a12e3b5df13b279eff3cfc29e0d7808ff86aa44 09-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM allows '' syntax, not just '#imm' for assembly.

Backwards compatibility with 'gas'. #imm is the preferered and documented
syntax, but lots of existing code uses the '$' prefix, so we should
support it if we can.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146285 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
4332983e7757018f388ba24f58765571e0d134ed 09-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON data type aliases for VBIC(register).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146281 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a4e3c7fc4ba2d55695b0484480685698132eba20 09-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD2 with writeback.

Refactor the instructions into fixed writeback and register-stride
writeback variants to simplify the offset operand (no more optional
register operand using reg0). This is a simpler representation and allows
the assembly parser to more easily handle these instructions.

Add tests for the instruction variants now supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146278 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
493ad6b95d153763b4b4fec456918f6c0d72d1ea 09-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> User a helper overload for a common pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146270 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
2af50d981d605c007ef45f6a6117e17134bed9df 09-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Better base class factoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146267 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1f94ec7b5990b424b4209e38a2daf87455bf105b 09-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Better base class factoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146266 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3c4615eef2cb6b1bacb9b5fffe98359f9659f7c2 09-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Tweak debugging output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146264 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
976c0da213bb9a4f07d4ca2a82765b5e590be05d 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM convenience aliases for VSQRT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146201 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
8759c3f548e03f7caff45f35fde49ed3e8c1cf71 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM 64-bit VEXT assembly uses a .64 suffix, not .32, amazingly enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146194 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6b044c26094a9f86da7d12945b00a47a5f07cf6d 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VSHR implied destination operand form aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146192 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
a62d11ea942ab99ba74589f74d390138654b6197 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM asm parser, just issue a warning for a duplicate reg in a list.

For better 'gas' compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146185 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
120313435d217d869bd2141b0cd8f4d99ae4b9a4 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VSUB implied destination operand form aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146182 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9e7b42a40eb8fbeac92ad2272d983d559a554c37 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VQADD implied destination operand form aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146179 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1c2c8a9389526518164ab6386ffcd6a1fa01124d 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM a few more VMUL implied destination operand form aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146177 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
40e285554773c51f6dd6eb8d076256e557fab9c3 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembler support for register name aliases.

rdar://10550084

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146170 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3b0887e291eec345c4848888c4604aff4f5f1e19 08-Dec-2011 Daniel Dunbar <daniel@zuster.org> Revert r146143, "Fix bug 9905: Failure in code selection for llvm intrinsics
sqrt/exp (fix for FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP,
FEXP2).", it is failing tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146157 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
72590c973837f7d56638feb511a79574391f0eac 08-Dec-2011 Stepan Dyatkovskiy <stpworld@narod.ru> Fix bug 9905: Failure in code selection for llvm intrinsics sqrt/exp (fix for FSQRT, FSIN, FCOS, FPOWI, FPOW, FLOG, FLOG2, FLOG10, FEXP, FEXP2).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146143 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
730fe6c1b686fe71c8e549b0f955e65a6a49d3ff 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON two-operand aliases for VSHL(immediate).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146125 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
e6f9e9d8365346330c782c82860a6b77df8ee829 08-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop the HasInlineAsm flag.

It is not used any more. We are tracking inline assembly misalignments
directly through the BBInfo.Unalign and KnownBits fields.

A simple conservative size estimate is not good enough since it can
cause alignment padding to be underestimated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146124 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ff4cbb4c9a66d313a9f52830620f06c88b43397c 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON two-operand aliases for VSHL(register).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146123 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
99486be8bad67f70445df99fd0c07d17eb8b1c05 08-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify offset verification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146121 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
517a013a4fb6ead3b395e05dfdc04a622931eb36 08-Dec-2011 Jim Grosbach <grosbach@apple.com> Fix copy/past-o.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146120 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2b8810c500973ce96e476cff49c023cff24a86fc 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON two-operand aliases for VMUL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146119 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
540c6d9d2651310d88eb9a147177ccd52eec7cd5 08-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't include alignment padding in BBInfo.Size.

Compute alignment padding before and after basic blocks dynamically.

Heed basic block alignment.

This simplifies bookkeeping because we don't have to constantly add and
remove padding from BBInfo.Size. It also makes it possible to track the
extra known alignment bits we get after a tBR_JTr terminator and when
entering an aligned basic block.

This makes the ARMConstantIslandPass aware of aligned basic blocks.

It is tricky to model block alignment correctly when dealing with inline
assembly and tBR_JTr instructions that have variable size. If inline
assembly turns out to be smaller than expected, that may cause following
alignment padding to be larger than expected. This could cause constant
pool entries to move out of range.

To avoid that problem, we use the worst case alignment padding following
inline assembly. This may cause slightly suboptimal constant island
placement in aligned basic blocks following inline assembly. Normal
functions should be unaffected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146118 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
8254f02231faeb15b0abaad96a99ac9e40feb908 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP support 'fmrs/fmsr' aliases for 'vldr'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146116 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
67ca1adf822c6cbc2f2bb78b8f94eefd099a8eb6 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VFP support 'flds/fldd' aliases for 'vldr'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146115 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
a44f2c4a28cd9c43a3d34cbad4f47df77ec686cf 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM optional destination operand variants for VEXT instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146114 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
af4edea67b007592f9474e07d27182956e37f7f5 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly, allow 'asl' as a synonym for 'lsl' in shifted-register operands.

For 'gas' compatibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146106 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9fa0a743e6afef4ea5fe7b5115607947696774a8 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM two-operand aliases for VAND/VEOR/VORR instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146095 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
30a264eb7fa6c961e94a7eb3d3eaf72d9bc8a44c 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM two-operand aliases for VADDW instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146093 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d900441e134564aa396522ab6e4617a98db91e34 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM two-operand aliases for VADD instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146091 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4f66a050a2f74fc065bbe5c5a564feb40ea03bae 07-Dec-2011 Jim Grosbach <grosbach@apple.com> Nuke inadvertant debugging commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146057 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
577b09155f9a6fa38e5a7918da9701e120b3642f 07-Dec-2011 Jim Grosbach <grosbach@apple.com> Darwin assembler improved relocs when w/o subsections_via_symbols.

When the file isn't being built with subsections-via-symbols, symbol
differences involving non-local symbols can be resolved more aggressively.
Needed for gas compatibility.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146054 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
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
RMInstrThumb2.td
9a70df99ca674b288d50dbf454779ed75d6e48dd 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM support the .arm and .thumb directives for assembly mode switching.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146042 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
470855b24ff4e82360ce1f84a1088332f3b4c8ea 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VCLT(register) is a pseudo aliasing VCGT(register).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146039 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd 07-Dec-2011 Evan Cheng <evan.cheng@apple.com> Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMHazardRecognizer.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
LxExpansionPass.cpp
humb1RegisterInfo.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
2fe71c5ef4b1816993bafeec501e742a7fa69b46 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate delta argument from AdjustBBOffsetsAfter.

The block offset can be computed from the previous block. That is more
robust than keeping track of a delta.

Eliminate one redundant AdjustBBOffsetsAfter call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146018 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a26811ec83d00344a739d84f4b8584e5548b94ce 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Compute some alignment information for each basic block.

These fields are not used for anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146017 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1ceef1a49122cec6d79c0714719d99db27ab1764 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM tidy up and remove no longer needed InstAlias definitions.

The TokenAlias handling of data type suffices renders these unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146010 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
5bb32530bc1adb970eee2ac18508ea2876a2f410 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move common expression into a method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146008 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9f3d220c632a9c18b424248592d2bc7b023956d2 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM Implement ARM ARM Table A7-3 via TokenAlias.

Data type suffix aliasing. Previously handled via lots of instruction
aliases. Cleanup of those forthcoming.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146007 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a3f331bd81f9d468654635df4428ecc8d8ebb5ea 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Group BBSizes and BBOffsets into a single vector<BasicBlockInfo>.

No functional change is intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146005 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
3b8991cc98a469cbf8d9fa2a2ad971f46b8b6fd2 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM: NEON SHLL instruction immediate operand range checking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146003 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
4e4139588c78389099e67b555f8f6a57a321e850 07-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM: Parameterize the immediate operand type for NEON VSHLL.

No functional change yet. Will be implementing range-checked immediates
for better diagnostics and disambiguation of instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145994 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6fbea43b0b35e2a3f6f91a92edeffa873c5cd794 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r145971: "Use conservative size estimate for tBR_JTr."

This caused more offset errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145980 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
7c2a4a30e0e16762c75adacebd05ec9fcbccf16b 06-Dec-2011 Evan Cheng <evan.cheng@apple.com> First chunk of MachineInstr bundle support.
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
4. Taught MachineBasicBlock methods about bundled MIs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145975 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
d25c27807ef6b3d80ffa218b1fa5441fe40d3ce6 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use conservative size estimate for tBR_JTr.

This pseudo-instruction contains a .align directive in its expansion, so
the total size may vary by 2 bytes.

It is too difficult to accurately keep track of this alignment
directive, just use the worst-case size instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145971 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
305e5fe797cbba32d8091d687d47e98c8f3ee1f4 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove alignment from deserted constant islands.

ARMConstantIslandPass may sometimes leave empty constant islands behind
(it really shouldn't). Remove the alignment from the empty islands so
the size calculations are still correct.

This should fix the many Thumb1 assembler errors in the nightly test
suite.

The reduced test case for this problem is way too big. That is to be
expected for ARMConstantIslandPass bugs.

<rdar://problem/10534709>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145970 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
23261af193e462b73257445053f9f6515e60e8c9 06-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM mode 'mul' operand ordering tweak.

Same as r145922, just for ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145923 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
df33e0d05e6b7dc3d65cdb96e52fb6fb6b07f876 06-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 encoding choice correction for PLD.

Using encoding T1 for offset of #0 and encoding T2 for #-0.

rdar://10532413

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145919 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cb86509e7a0f831e28c89f84c22a409115d01c38 06-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up value checking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145895 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
ed42c5f778dd0128429e4feffe2c028b2352b534 06-Dec-2011 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] Doublewords only require word-alignment.
rdar://10528060

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145891 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3e572ac2fbdf6aa538500be07b9b050ac008669e 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Align ARM constant pool islands via their basic block.

Previously, all ARM::CONSTPOOL_ENTRY instructions had a hardwired
alignment of 4 bytes emitted by ARMAsmPrinter. Now the same alignment
is set on the basic block.

This is in preparation of supporting ARM constant pool islands with
different alignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145890 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantIslandPass.cpp
d9a6e8978dd65c85d68bf1141d992da576878cd8 06-Dec-2011 Jim Grosbach <grosbach@apple.com> Fix ARM handling of tBcc branch relaxation.

rdar://10069056

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145885 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
e80fba0e6c976039c132c3d5d4fcad569d2259a8 06-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an existing function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145883 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
370b78d795154899a22ca2b4674e890661ff1d59 06-Dec-2011 Jim Grosbach <grosbach@apple.com> Move target-specific logic out of generic MCAssembler.

Whether a fixup needs relaxation for the associated instruction is a
target-specific function, as the FIXME indicated. Create a hook for that
and use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145881 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
f503ef6800fcbda99d6ae581ee8cfe3204becb3c 06-Dec-2011 Jim Grosbach <grosbach@apple.com> Simple branch relaxation for Thumb2 Bcc instructions.

Not right yet, as the rules for when to relax in the MCAssembler aren't
(yet) correct for ARM. This is a step in the proper direction, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145871 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
713c70238c6d150d2cd458b07ab35932fafe508e 05-Dec-2011 Jim Grosbach <grosbach@apple.com> Tweak ADDrr fix. Bad check for explicit .w

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145863 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
927b9df4c678371d3fb1308be90e76ed44af72f8 05-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 prefer ADD register encoding T2 to T3 when possible.

rdar://10529664


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145860 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
da84786bee8304588a4325b15e297be1995a5d41 05-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 prefer encoding T3 to T4 for ADD/SUB immediate instructions.

rdar://10529348


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145851 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
253ef7a77930f6855a5bf24037e9dfbc65a1ee85 05-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for the rest of the VMUL data type aliases.

Finish up rdar://10522016.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145846 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
422faab909db99cc4936298e47fbf8d355fb9cd1 05-Dec-2011 Jim Grosbach <grosbach@apple.com> Fix previous commit. Oops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145844 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
45755a77ec08d460fefc08e99bd0225a9da9769c 05-Dec-2011 Jim Grosbach <grosbach@apple.com> Tidy up. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145843 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
afb500ace12698a99daa5d7c10bfedcbfef48022 05-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assmebler parsing for two-operand VMUL instructions.

Combined destination and first source operand for f32 variant of the VMUL
(by scalar) instruction.

rdar://10522016

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145842 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
6ce2deacefa5fd2565983d513d07a06d6a8af602 04-Dec-2011 Bob Wilson <bob.wilson@apple.com> Fix 80-column issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145783 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0cb2a45cceaefb48ec7efb902c453aaae4e24cb2 04-Dec-2011 Anton Korobeynikov <asl@math.spbu.ru> Emit the ctors in the proper order on ARM/EABI.
Maybe some targets should use this as well.

Patch by Evgeniy Stepanov!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145781 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
9eff1e33f616ad2d0134740ac4595ed2e79e3d74 03-Dec-2011 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] Unaligned stores of floats require special care.
rdar://10510150

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145742 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
587f5062b9e4532c4f464942e593cb87c58ac153 03-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM NEON VEXT aliases for data type suffices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145726 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
e40ab244c19ff73d086188526dbb81537f3af6c1 02-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VEXT tighten up operand classes a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145722 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
84defb51ca183d136e08e87d95e2c907654405f9 02-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VST1 single lane assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145718 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
8a8d479214745c82ef00f08d4e4f1c173b5f9ce2 02-Dec-2011 Nick Lewycky <nicholas@mxc.ca> Move global variables in TargetMachine into new TargetOptions class. As an API
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.

One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145714 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseRegisterInfo.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
RMTargetMachine.cpp
RMTargetMachine.h
872eedbb3a46618e333db42ee9c41fda34eb1e9b 02-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM VLD1 single lane assembly parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145712 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
204aa64f30911f28c11e05ba2acf475d25c45fa0 02-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM encoder method needs the physical register number, not the enum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145711 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
b74c865841481074539bdf4de35024939854f2e6 02-Dec-2011 Chad Rosier <mcrosier@apple.com> [arm-fast-isel] After promoting a function parameter be sure to update the
argument value type. Otherwise, the sign/zero-extend has no effect on arguments
passed via the stack (i.e., undefined high-order bits).
rdar://10515467

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145701 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dad2f8e7fb2df5fb080a38fa4c33a01f19729f15 02-Dec-2011 Jim Grosbach <grosbach@apple.com> Clean up aliases for ARM VLD1 single-lane assembly parsing a bit.

Add the 16-bit lane variants while I'm at it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145693 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
7636bf6530fd83bf7356ae3894246a4e558741a4 02-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM start parsing VLD1 single lane instructions.

The alias pseudos need cleaned up for size suffix handling, but this gets
the basics working. Will be cleaning up and adding more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145655 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
7b8e12152011ee21b1781113805a68cd3dc3d46b 30-Nov-2011 Matt Beaumont-Gay <matthewbg@google.com> Remove unused variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145517 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
096334e25ea68ac970942ecb680a82fbb8ad206c 30-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing for VLD1 all lanes, with writeback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145510 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
13af222bab6fdc77d8193eb38e78a9cbed1d9d1f 30-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing for VLD1 two register all lanes, no writeback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145504 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
98b05a57b67d1968381563c8cccbbb6c6cb65e3d 30-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing aliases for VLD1 single register all lanes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145464 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
6029b6ddafad45791c9e9d8e8ddd96978294beef 30-Nov-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145458 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
bd1cff5b2c367459329b291b929c9b645470b320 30-Nov-2011 Jim Grosbach <grosbach@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145456 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1ec7bf0c0d82f091b66aa52e63c99a538fe4653b 30-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing aliases for data-size suffices on VST1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145454 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4c7edb3ad8bd513c59190f6ebee9bee34af7d247 29-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for four-register VST1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145450 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
d5ca201891d238ca2185831524a1e3f2670224df 29-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for three-register VST1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145442 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
7d8867d45361b737dcd48db961488a35d9ac0e52 29-Nov-2011 Andrew Trick <atrick@apple.com> comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145422 91177308-0d34-0410-b5e6-96231b3b80d8
RMHazardRecognizer.h
d782bae970e888572f0458ac05369bbd7752f05a 29-Nov-2011 Daniel Dunbar <daniel@zuster.org> build/CMake: Finish removal of add_llvm_library_dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145420 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
MakeLists.txt
isassembler/CMakeLists.txt
nstPrinter/CMakeLists.txt
CTargetDesc/CMakeLists.txt
argetInfo/CMakeLists.txt
6200611dffd301c49cb19d52eaedff79623adb98 29-Nov-2011 Jim Grosbach <grosbach@apple.com> Better fix for ARM MOVT relocation encoding of thumb bit.

Replaces r145318 with a more targetted fix for the relocation handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145346 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMachObjectWriter.cpp
4c0c5451c78423bcc08e23f230e912e35d11dc4d 28-Nov-2011 Duncan Sands <baldrick@free.fr> Silence wrong warnings from GCC about variables possibly being used
uninitialized: GCC doesn't understand that the variables are only used
if !UseImm, in which case they have been initialized.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145239 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0861f5793a1834f02b522fb86fb037cd592c134f 27-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Move code into anonymous namespaces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145154 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
70aaf37c11bbfffc8d3e007556da46c810e822a3 25-Nov-2011 NAKAMURA Takumi <geek4civic@gmail.com> ARMLoadStoreOptimizer.cpp: Fix MSVC(Debug) build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145129 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
1429059dc0129c1cec938c29d6fce89e14293241 25-Nov-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r145126 (Nov 25th 2011)

Change-Id: I30d08ae004a4c3c74092ad2537ab30cce4280e1d
424fe0e422826f4962b58428b6aef48e1a66c30a 18-Nov-2011 Chad Rosier <mcrosier@apple.com> Guard call to getRegForValue with isTypeLegal check to avoid unnecessary work/dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144959 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
944d82ba06bcb6bf92ca1fbcbdf1a882cd009363 17-Nov-2011 Chad Rosier <mcrosier@apple.com> Add TODO comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144920 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2fb82ce75d193d5287d32bb3225b8008d8a133fa 17-Nov-2011 Chad Rosier <mcrosier@apple.com> Dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144888 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3bdb3c9b511b89d38696587d61b82949e06a7729 17-Nov-2011 Chad Rosier <mcrosier@apple.com> Don't unconditionally set the kill flag.
rdar://10456186


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144872 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2abba8496cb394af53b531e95067d5cae78bb9ee 16-Nov-2011 Jim Grosbach <grosbach@apple.com> Generalize the fixup info for ARM mode.

We don't (yet) have the granularity in the fixups to be specific about which
bitranges are affected. That's a future cleanup, but we're not there yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144852 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
b84acd24687c721e3da46bb56a94d393bc5a8cbc 16-Nov-2011 Jim Grosbach <grosbach@apple.com> Fix encoding of NOP used for padding in ARM mode .align.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144842 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
40a86ee20f903cf797d3c957e87cfd61e10a024f 16-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for shifted register operands for MOV instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144837 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
efed3d1f58f69ec0a9bbe74e2ce5cc9b939a3805 16-Nov-2011 Jim Grosbach <grosbach@apple.com> Clean up debug printing of ARM shifted operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144836 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b598b044091d9bc0651a3c93195c9fb9f8b453a9 16-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assmebly two operand forms for LSR, ASR, LSL, ROR register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144814 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
48b368bcd5fd6d1857de137230ac019b8530f1cd 16-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for RRX mnemonic.

rdar://9704684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144812 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
508a1f4db16baea5c0d5b1c4797d005dff1ee30f 16-Nov-2011 Chad Rosier <mcrosier@apple.com> Check to make sure we can select the instruction before trying to put the
operands into a register. Otherwise, we may materialize dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144805 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
23f220705a74685edd743e84861a3e0d6d109828 16-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM mode aliases for bitwise instructions w/ register operands.

rdar://9704684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144803 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
d0405aaabcb0d6cf34bb8cd0716b959cd9eb8741 16-Nov-2011 Bob Wilson <bob.wilson@apple.com> Fix tablegen warning: hasSideEffects is inferred for eh_sjlj_dispatchsetup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144798 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5c283e98c9da41c744c63a3ea13231d2f919fe9a 16-Nov-2011 NAKAMURA Takumi <geek4civic@gmail.com> lib/Target/ARM/CMakeLists.txt: Disable optimization in ARMISelLowering.cpp also on MSC15(aka VS9). Seems miscompiled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144794 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
b95fc31aa2e5a0a0b9ee1909d1cb949577c5aa16 16-Nov-2011 Evan Cheng <evan.cheng@apple.com> Sink codegen optimization level into MCCodeGenInfo along side relocation model
and code model. This eliminates the need to pass OptLevel flag all over the
place and makes it possible for any codegen pass to use this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144788 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
CTargetDesc/ARMMCTargetDesc.cpp
eaab6ef6eb12fc950f1d4371b297d9b7ca9d4c66 16-Nov-2011 Bob Wilson <bob.wilson@apple.com> Fix ARM SjLj-EH dispatch setup code. <rdar://problem/10444602>

The EmitBasePointerRecalculation function has 2 problems, one minor and one
fatal. The minor problem is that it inserts the code at the setjmp
instead of in the dispatch block. The fatal problem is that at the point
where this code runs, we don't know whether there will be a base pointer,
so the entire function is a no-op. The base pointer recalculation needs to
be handled as it was before, by inserting a pseudo instruction that gets
expanded late.

Most of the support for the old approach is still here, but it no longer
has any connection to the eh_sjlj_dispatchsetup intrinsic. Clean up the
parts related to the intrinsic and just generate the pseudo instruction
directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144781 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
f56c60b5713c57a3f9223d4ed3d9c88088132fad 16-Nov-2011 Chad Rosier <mcrosier@apple.com> Add FIXME comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144743 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3805d85e38c29d9106c758b63851eb847201f315 16-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Enable -widen-vmovs by default.

This will widen 32-bit register vmov instructions to 64-bit when
possible. The 64-bit vmovd instructions can then be translated to NEON
vorr instructions by the execution dependency fix pass.

The copies are only widened if they are marked as clobbering the whole
D-register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144734 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
e43862b6a6130ec29ee4e9e6c6c30b5607c9a728 16-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for register range syntax for VLD/VST register lists.

For example,
vld1.f64 {d2-d5}, [r2,:128]!

Should be equivalent to:
vld1.f64 {d2,d3,d4,d5}, [r2,:128]!

It's not documented syntax in the ARM ARM, but it is consistent with what's
accepted for VLDM/VSTM and is unambiguous in meaning, so it's a good thing to
support.

rdar://10451128


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144727 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5b2fb2083c387009607f438a2a986c3e0a2cd0be 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for data type suffices on NEON VMOV aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144722 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
9f302c4fb3feeb36561a6eee0168ee5242d8ac20 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing two operand forms for shift instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144713 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
88d012a9c37e7610fbc73a73e541f0bbc35f9cc1 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM VFP assembly parsing for VADD and VSUB two-operand forms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144710 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
6cb4b081829880ba97a729bcf33fd59517ca5450 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM accept an immediate offset in memory operands w/o the '#'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144709 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5c984e451d604e3ff3cfdc5db7c0b6ca6be7a14f 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM enclosing curly braces optional on one-register VLD/VST instruction lists.

'vld1.f32 d4, [r7]' should be parsed as equivalent to 'vld1.f32 {d4}, [r7]'

rdar://10450488.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144701 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
eaf2056709c8a5c6a1b9d27f1963a68aefaba8fa 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM size suffix on VFP single-precision 'vmov' is optional.

rdar://10435114

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144698 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
25e0a87e9190cdca62aee5ac95cfc8ef44f35e92 15-Nov-2011 Jim Grosbach <grosbach@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144695 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
19885de61ddbfe1a0db858e303baf19a190bc57a 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM alternate size suffices for VTRN instructions.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144694 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
22925d93e9c5d6159f24853457c858be5f08af04 15-Nov-2011 Owen Anderson <resistor@mac.com> Fix a misplaced paren bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144692 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
a68e90c36e6a53fb1889b608f44d6244a36b3e97 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for optional datatype suffix on VFP VMOV GPR<->VFP insns.

Yet more of rdar://10435076.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144691 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
bfb0a1717bb140c418e070042e852f925e92de01 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for two-operand form of 'mul' instruction.

rdar://10449856.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144689 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
d2586daf069f480e924cd7dd2079dd39de331541 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for two-operand form of 'mul' instruction.

Ongoing rdar://10435114.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144688 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
b589be9334ee5352dd263c406b99a90d413c0b2f 15-Nov-2011 Owen Anderson <resistor@mac.com> Fix an ambiguous decoding where we failed to properly decode VMOVv2f32 and VMOVv4f32.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144683 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
1de0bd194540f8bab399fb39c4ba615a7b2381d3 15-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing for mul.w in IT block fix.

When the 3rd operand is not a low-register, and the first two operands are
the same low register, the parser was incorrectly trying to use the 16-bit
instruction encoding.

rdar://10449281

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144679 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c5a6a687fd2fda61295acf38886016b4d54db1a5 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing datatype suffix variants for register-writeback VLD1/VST1 instructions.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144650 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
36abbec01815964352d4f3d391c0a03896c0095a 15-Nov-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to llvm upstream r144606.

Change-Id: Id22edd55de42831bdc3fc1a143ebec10cf8476d2
RMJITInfo.cpp
bf8356b37c2138376b7d42bf0c2b0189ae5032a0 15-Nov-2011 Jay Foad <jay.foad@gmail.com> Fix typo in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144633 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
978e0dfe46e481bfb1281e683aa308329e879e95 15-Nov-2011 Jay Foad <jay.foad@gmail.com> Make use of MachinePointerInfo::getFixedStack. This removes all mention
of PseudoSourceValue from lib/Target/.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144632 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
d9190c0f148b218ab046deadd0c7ae475414cde5 15-Nov-2011 Jay Foad <jay.foad@gmail.com> Remove some unnecessary includes of PseudoSourceValue.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144631 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
f9c1b92c27bf4ac40a52e0f1ef6d006d7e74bed3 15-Nov-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r144606 (Nov 15th 2011)

Conflicts:
Makefile.rules
configure
docs/ReleaseNotes.html
lib/Analysis/ScalarEvolution.cpp
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
lib/CodeGen/ExecutionDepsFix.cpp
lib/CodeGen/MachineBlockPlacement.cpp
lib/CodeGen/MachineBranchProbabilityInfo.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/ExecutionEngine/JIT/LLVMBuild.txt
lib/MC/LLVMBuild.txt
lib/MC/MCDisassembler/LLVMBuild.txt
lib/MC/MCDwarf.cpp
lib/Object/LLVMBuild.txt
lib/Target/ARM/ARMExpandPseudoInsts.cpp
lib/Target/ARM/ARMFastISel.cpp
lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/AsmParser/ARMAsmParser.cpp
lib/Target/ARM/Disassembler/ARMDisassembler.cpp
lib/Target/ARM/Disassembler/LLVMBuild.txt
lib/Target/ARM/TargetInfo/LLVMBuild.txt
lib/Target/CBackend/TargetInfo/LLVMBuild.txt
lib/Target/CellSPU/MCTargetDesc/LLVMBuild.txt
lib/Target/CellSPU/TargetInfo/LLVMBuild.txt
lib/Target/CppBackend/TargetInfo/LLVMBuild.txt
lib/Target/LLVMBuild.txt
lib/Target/MBlaze/Disassembler/LLVMBuild.txt
lib/Target/MBlaze/TargetInfo/LLVMBuild.txt
lib/Target/MSP430/MCTargetDesc/LLVMBuild.txt
lib/Target/MSP430/TargetInfo/LLVMBuild.txt
lib/Target/Mips/CMakeLists.txt
lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
lib/Target/Mips/Mips64InstrInfo.td
lib/Target/Mips/MipsAsmPrinter.cpp
lib/Target/Mips/MipsISelLowering.cpp
lib/Target/Mips/MipsMCInstLower.cpp
lib/Target/Mips/TargetInfo/LLVMBuild.txt
lib/Target/PTX/LLVMBuild.txt
lib/Target/PTX/PTXAsmPrinter.cpp
lib/Target/PTX/TargetInfo/LLVMBuild.txt
lib/Target/PowerPC/TargetInfo/LLVMBuild.txt
lib/Target/Sparc/TargetInfo/LLVMBuild.txt
lib/Target/X86/TargetInfo/LLVMBuild.txt
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrSSE.td
lib/Target/XCore/MCTargetDesc/LLVMBuild.txt
lib/Target/XCore/TargetInfo/LLVMBuild.txt
lib/Transforms/IPO/LLVMBuild.txt
lib/Transforms/Utils/LLVMBuild.txt
test/CodeGen/ARM/2011-10-26-memset-with-neon.ll
test/CodeGen/ARM/2011-11-07-PromoteVectorLoadStore.ll
test/CodeGen/ARM/fast-isel-cmp-imm.ll
test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll
test/CodeGen/CellSPU/call_indirect.ll
test/CodeGen/X86/avx2-logic.ll
test/CodeGen/X86/block-placement.ll
test/CodeGen/X86/sse-domains.ll
test/CodeGen/X86/sse3.ll
test/CodeGen/X86/vec_shuffle-39.ll
test/MC/ARM/neon-vld-encoding.s
test/MC/ARM/neon-vst-encoding.s
tools/llvm-config-2/llvm-config.cpp
utils/TableGen/LLVMBuild.txt

Change-Id: I70f454db6fc79d7799f56d0f6f2eb7b99561c504
eaa192af18677c4dc5894e049514d8a6b1d6d7c2 15-Nov-2011 Evan Cheng <evan.cheng@apple.com> Add vmov.f32 to materialize f32 immediate splats which cannot be handled by
integer variants. rdar://10437054


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144608 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
bfc9429c2b814469adf3930dda31539d1c3319d8 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing datatype suffix variants for fixed-writeback VLD1/VST1 instructions.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144606 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
dd47e0b5d4850fede4b2581c41f1e0a5eff5f05a 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing datatype suffix variants for non-writeback VST1 instructions.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144593 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e052b9afa1301419f8b52eed9ed370393fcad78d 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing datatype suffix variants for non-writeback VLD1 instructions.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144592 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
04db7f7a7d5d9312d2e40032883b708e321d55b3 15-Nov-2011 Jim Grosbach <grosbach@apple.com> Add explanatory comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144589 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0530d0d5d9dfaae2e3c78a52729abcbf9fcdd21b 15-Nov-2011 Jim Grosbach <grosbach@apple.com> Split out the plain '.{8|16|32|64}' suffix handling.

Make it easier to deal with aliases for instructions that do require a suffix
but accept more specific variants of the same size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144588 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
ef448767a35148261d6c82a8e55e6e2f4be8e631 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM parsing optional datatype suffix for VAND/VEOR/VORR instructions.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144587 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
2c42b8c912b62071c27454182cdef60e3b584083 15-Nov-2011 Chad Rosier <mcrosier@apple.com> Supporting inline memmove isn't going to be worthwhile. The only way to avoid
violating a dependency is to emit all loads prior to stores. This would likely
cause a great deal of spillage offsetting any potential gains.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144585 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ffc658b056b7cc0b3f6a2626694b6a4216ed728d 15-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM VLDR/VSTR instructions don't need a size suffix.

Canonicallize on the non-suffixed form, but continue to accept assembly that
has any correctly sized type suffix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144583 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
909cb4f2f2d227ea01852cb318c80a79c46bc9bf 14-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for inlining small memcpys.
rdar://10412592


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144578 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e489af8dce12249be26ac0c8e371557378886bc2 14-Nov-2011 Chad Rosier <mcrosier@apple.com> Fix a performance regression from r144565. Positive offsets were being lowered
into registers, rather then encoded directly in the load/store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144576 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
02e3d9268fe456ebe4fe6ae277507bb7933ec3df 14-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing type suffix options for VLDR/VSTR.

rdar://10435076

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144575 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
57b299796685033c87a5414e179b95b5ae7dc8d4 14-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for Thumb load/stores with negative offsets.
rdar://10412592



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144565 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
430052b084de7ab4eb6162b9f1a6a16bfb2a80ad 14-Nov-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 column.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144538 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
39c747269a8cff12acacda0759146005c941e541 11-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for using MVN to materialize negative constants.
rdar://10412592

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144348 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
45daa4d7f44c228a22888e1865485c5a86cc2261 11-Nov-2011 Daniel Dunbar <daniel@zuster.org> LLVMBuild: Add explicit information on whether targets define an assembly printer, assembly parser, or disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144344 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
fa2768fa992fec694f2a9fd2643c2960f5f7a953 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 ldm/stm updating w/ one register in the list are LDR/STR.

rdar://10429490

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144338 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
036bfcbe83604118c97699ff23d888a2bfc47da3 11-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM let processInstruction() tranforms chain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144337 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2cb212c883b5a4a4c963919c8989a432390921cb 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing for push/pop w/ hi registers in the reglist.

rdar://10130228.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144331 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a47505117e3b0c7db8f170c80eb5321b42226cb3 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb1 diagnostics for reglist on PUSH/POP fix.

Was not checking the first register in the register list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144329 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
57cada0a51266e156a3eee845f7c6cdba2964d57 10-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb MUL assembly parsing for 3-operand form.

Get the source register that isn't tied to the destination register correct,
even when the assembly source operand order is backwards.

rdar://10428630

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144322 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d382fcf6d2c3aa7f147864a2dbaf2e8079aecec0 10-Nov-2011 Chad Rosier <mcrosier@apple.com> When in ARM mode, LDRH/STRH require special handling of negative offsets.
For correctness, disable this for now.
rdar://10418009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144316 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ffe92f37a2944b0406451a13c73b0fc5d2edf8fe 10-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM .thumb_func directive for quoted symbol names.

Use the getIdentifier() method of the token, not getString(), otherwise
we keep the quotes as part of the symbol name, which we don't want.

rdar://10428015

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144315 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
668da49d3bcfa2fc1c8ef88fc2a7fbdfb433aa70 10-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for LSR/LSL/ROR(immediate).

More of rdar://9704684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144301 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
00a95c00bf3152e29584f511786efea95084eea0 10-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for ASR(immediate).

Start of rdar://9704684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144293 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
82819266746c3b0a23887d44b57c9a6d6d5e89f3 10-Nov-2011 Chad Rosier <mcrosier@apple.com> For immediate encodings of icmp, zero or sign extend first. Then
determine if the value is negative and flip the sign accordingly.
rdar://10422026

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144258 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e5345b6caee7f2f205e267ae56d532d39784ac5a 10-Nov-2011 Daniel Dunbar <daniel@zuster.org> llvm-build: Add --native-target and --enable-targets options, and add logic to
handle defining the "magic" target related components (like native,
nativecodegen, and engine).
- We still require these components to be in the project (currently in
lib/Target) so that we have a place to document them and hopefully make it
more obvious that they are "magic".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144253 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
4e2b002f5ba9ac7d21988c889ab2bfc602ec0e23 10-Nov-2011 Daniel Dunbar <daniel@zuster.org> llvm-build: Add an explicit component type to represent targets.
- Gives us a place to hang target specific metadata (like whether the target has a JIT).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144250 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
86de95024df48b78038fa3aa2e50a06d67d0e7e2 10-Nov-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
30b4e6b557868e16f89a9e09e632ae5d7f9a7654 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
RMInstrThumb2.td
1e962ceee442598e146de8528d2bc248615e1da0 10-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make sure we correctly unroll conversions between v2f64 and v2i32 on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144241 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
909511e7a6f8fa936c57d1e48e1dd4aa24234386 09-Nov-2011 Chad Rosier <mcrosier@apple.com> The ARM LDRH/STRH instructions use a +/-imm8 encoding, not an imm12.
rdar://10418009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144213 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6f4c56b00e58f8e06928eab6cee183493643ac04 09-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for encoding immediates in icmp and fcmp. Hopefully, this will
remove a fair number of unnecessary materialized constants.
rdar://10412592


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144163 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
099dcdbdf31d55dfb6b45cc47d1e51fe535113ae 09-Nov-2011 Evan Cheng <evan.cheng@apple.com> Hide cpu name checking in ARMSubtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144154 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMSubtarget.h
77e6488ed86045afdab8625c329683df71fa1322 08-Nov-2011 Evan Cheng <evan.cheng@apple.com> Add workaround for Cortex-M3 errata 602117 by replacing ldrd x, y, [x] with ldm or ldr pairs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144123 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
a86af3ee1eacde8751d676ab9cf434690c265f81 08-Nov-2011 Chad Rosier <mcrosier@apple.com> ARMFastISel doesn't support thumb1. Rename isThumb to isThumb2 to reflect this.
No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144122 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
22d43e3f0991cb2710cdb79eb6c37ae8ba53e4f4 08-Nov-2011 Lang Hames <lhames@gmail.com> Lower mem-ops to unaligned i32/i16 load/stores on ARM where supported.

Add support for trimming constants to GetDemandedBits. This fixes some funky
constant generation that occurs when stores are expanded for targets that don't
support unaligned stores natively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144102 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
67f02679340e056f50120a84b128b3c6188d693d 08-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added invariant field to the DAG.getLoad method and changed all calls.

When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144100 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
337e63a9c8f57d33390ed90bbad63cb13ed2156d 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make sure to mark vector extload's as expand on ARM. Fixes PR11319.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144057 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7c1a2ac76a1bb72553419ae5911d1ee991fb3dde 08-Nov-2011 Chad Rosier <mcrosier@apple.com> Enable support for returning i1, i8, and i16. Nothing special todo as it's the
callee's responsibility to sign or zero-extend the return value. The additional
test case just checks to make sure the calls are selected (i.e., -fast-isel-abort
doesn't assert).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144047 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMFastISel.cpp
00779a92fdd12dcf46d26fe3fddf116b8b5f7882 07-Nov-2011 Chad Rosier <mcrosier@apple.com> Allow i1 to be promoted to i32 for ARM AAPCS and AAPCS-VFP calling convention as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144021 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
66f72397cca6924503cee5d4f03c7163ff384fce 07-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Simplify some uses of utohexstr.

As a side effect hex is printed lowercase instead of uppercase now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144013 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
7b135ae6d5904bca27ae81ca3c4324f8c8b855fd 06-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Replace (Lower|Upper)caseString in favor of StringRef's newest methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143891 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
011369bb7f212748831a026dae045b975e07124c 05-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for passing i1, i8, and i16 call parameters. Also, be sure to
zero-extend the constant integer encoding. Test case provides testing for
both call parameters and materialization of i1, i8, and i16 types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143821 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
071de118421b012feecc35e2561ede2dcd65a4c3 05-Nov-2011 Chad Rosier <mcrosier@apple.com> Allow i1 to be promoted to i32 for ARM APCS calling convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143755 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
9c8c0966e0123dfaa8f91570bb670eb51c2924aa 05-Nov-2011 Chad Rosier <mcrosier@apple.com> Cannot create a result register for non-legal types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143749 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1ed7ead8fa5b32379efd3ea895a03fde974b7586 05-Nov-2011 Chad Rosier <mcrosier@apple.com> When materializing an i32, SExt vs ZExt doesn't matter when we're trying to fit
in a 16-bit immediate. However, for the shorter non-legal types (i.e., i1, i8,
i16) we should not sign-extend. This prevents us from materializing things
such as 'true' (i.e., i1 1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143743 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5668649c23ddd77f6d322aed602aef6c1ccd2455 04-Nov-2011 Chad Rosier <mcrosier@apple.com> Enable support for materializing i1, i8, and i16 integers via move immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143739 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0e063f5eaa7e122ac7737e4a2edb7bc84b77f244 04-Nov-2011 Daniel Dunbar <daniel@zuster.org> build/cmake: Use tblgen macro directly instead of llvm_tablegen, which just
added a layer of indirection with no value (not even conciseness).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143727 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
98520aaeb2b66e11ba668fb73fe7033fd7e6b7cb 04-Nov-2011 Evan Cheng <evan.cheng@apple.com> Fix some minor scheduling itinerary bug. It's not expected to actually affect codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143675 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a4c975b2a89e9a1c9f7057656d79635c0c4f7972 04-Nov-2011 Chad Rosier <mcrosier@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143670 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2ec6ba0dbf3ce9cf7c2da96bafca0379a16290ed 04-Nov-2011 Chad Rosier <mcrosier@apple.com> Add fast-isel support for returning i1, i8, and i16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143669 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dd21ce80415edf09fa66a0bfebc812ce682409bf 03-Nov-2011 Dan Gohman <gohman@apple.com> Reapply r143206, with fixes. Disallow physical register lifetimes
across calls, and only check for nested dependences on the special
call-sequence-resource register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143660 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
00ade8bab0045bde35b13d2489021b8642aeb0cc 03-Nov-2011 Daniel Dunbar <daniel@zuster.org> build: Add initial cut at LLVMBuild.txt files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/LLVMBuild.txt
isassembler/LLVMBuild.txt
nstPrinter/LLVMBuild.txt
LVMBuild.txt
CTargetDesc/LLVMBuild.txt
argetInfo/LLVMBuild.txt
33ad4ccb5f7df4ae166f3a6d89de75199a2376f9 03-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for sign-extending non-legal types in SelectSIToFP().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143603 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e88f495b18462733efac557a21966c9f3dac94c7 03-Nov-2011 Lang Hames <lhames@gmail.com> Fixed parameter name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143594 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
537a9f7685a8cd9d58fd7e448d89e513c1a45fb9 02-Nov-2011 Lang Hames <lhames@gmail.com> Try to lower memset/memcpy/memmove to vector instructions on ARM where the alignment permits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143582 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
07fa757c770aa3b15727178283f71afe81271bdc 02-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for comparing integer non-legal types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143559 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3a81c52a33c105d9282ea8bbde2a6b9ce1aa2731 02-Nov-2011 Owen Anderson <resistor@mac.com> Fix the issue that r143552 was trying to address the _right_ way. One-register lists are legal on LDM/STM instructions, but we should not print the PUSH/POP aliases when they appear. This fixes round tripping on this instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143557 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
bd513eaa3bed78ba3b4d86f7c0935d0cf82cbbda 02-Nov-2011 Owen Anderson <resistor@mac.com> The rules disallowing single-register reglist operands only apply to the POP alias, not to LDM/STM instructions. Revert r143552.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143553 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
87f24f52f4b61f7ad67f71abf131d5852d87524c 02-Nov-2011 Owen Anderson <resistor@mac.com> Register list operands are not allowed to contain only a single register. Alternate encodings are used in that case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143552 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1e512f49e4eae4ee2d5c91197c1b4803a6530596 02-Nov-2011 Chad Rosier <mcrosier@apple.com> Factor out an EmitIntExt function. No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143547 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fe409dd67c7093684012818b6a64ab93d4b27928 02-Nov-2011 Chad Rosier <mcrosier@apple.com> Factor out a SelectTrunc function. No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143523 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d70b1786e86f70f83094068a95ea0e1237dfa625 01-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM label operands can be quoted.

For example, labels from Objective-C sources.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143511 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1ae3b2de19e69ed7763c5926a3fbeaa18f6c6938 01-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM label operands can have an optional '#' before them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143510 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1a2a45b260d9b18aaa3a24a62cd296751027a4b7 01-Nov-2011 Owen Anderson <resistor@mac.com> Fix disassembly of some VST1 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143507 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
06b29155dd1a7f5f0dfdc507e792dcd9452a3871 01-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM VLD/VST assembly parsing for symbolic address operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143413 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMAsmBackend.cpp
c46f91288145bdfa2a19303121b549721b7f324d 31-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VST1 w/ writeback assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143369 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
2dc68468a025ce2371ad7ccf0e82aae06dc38514 31-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM writeback vs. stride operands for VST/VLD.

The _fixed variants have a writeback operand, but not a stride operand.
Split the conditional flag to distinguish the cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143356 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
65ebfa67036a032e0758de0ee9ba21ce2f852ba7 31-Oct-2011 Owen Anderson <resistor@mac.com> More not-crashing NEON disassembly updates for the vld refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143351 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
2ad3a89681d15d30b76c36bbd6355ddd78be7e45 29-Oct-2011 Dan Gohman <gohman@apple.com> Revert r143206, as there are still some failing tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143262 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a47e0da9799d06ac0c7e8cfacfa7c6224a0ca924 29-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM mode 'mov' to 'mvn' assembler alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143237 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
5ac24b0a800258194647370798e5eeb296008d57 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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
57838c6b1eacdb22fd448be34514c24b504aa1ef 28-Oct-2011 Owen Anderson <resistor@mac.com> Specify that the high bit of the alignment field is fixed to 0 on these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143220 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
101a983026371ab3fdc98fd4ed34962d606d1905 28-Oct-2011 Owen Anderson <resistor@mac.com> Reapply r143202, with a manual decoding hook for SWP. This change inadvertantly exposed a decoding ambiguity between SWP and CPS that the auto-generated decoder can't handle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143208 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
26b4f62e52845638a6e353b58ea72326a0aa7b06 28-Oct-2011 Dan Gohman <gohman@apple.com> Reapply r143177 and r143179 (reverting r143188), with scheduler
fixes: Use a separate register, instead of SP, as the
calling-convention resource, to avoid spurious conflicts with
actual uses of SP. Also, fix unscheduling of calling sequences,
which can be triggered by pseudo-two-address dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143206 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1752298d4d6fb06c155428b03b2d14522c392e78 28-Oct-2011 Owen Anderson <resistor@mac.com> Revert r143202.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143203 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a5679cbb920cf9a099db8cf724fd9b5dd82ac8e4 28-Oct-2011 Owen Anderson <resistor@mac.com> Specify fixed bits on CPS instructions to enable roundtripping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143202 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5ce8e933b4b5002f65050b4ba761a3ee4b1dcc64 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
RMInstrThumb2.td
48665489a07cf7db7fb78f70e9cabb730f29e32e 28-Oct-2011 Duncan Sands <baldrick@free.fr> Speculatively disable Dan's commits 143177 and 143179 to see if
it fixes the dragonegg self-host (it looks like gcc is miscompiled).
Original commit messages:
Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.

Delete #if 0 code accidentally left in.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143188 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0ffd02dc922213fed7eb0d055d76e260027adcdd 28-Oct-2011 Dan Gohman <gohman@apple.com> Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143177 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ae74e2d02beb3e78a1282d2c004731599a5ed9af 28-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM Allow 'q' registers in VLD/VST vector lists.

Just treat it as if the constituent D registers where specified.

rdar://10348896

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143167 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f2652f509d055054974c9d90fa4c951b6fa48e16 28-Oct-2011 Owen Anderson <resistor@mac.com> Add some NEON stores to the VLD decoding hook that were accidentally omitted previously.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143162 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
47a896b5a74c6a3705d96c39117ba87bfe30ea7d 28-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also set addrmode6 alignment when align==size.

Previously, we were only setting the alignment bits on over-aligned
loads and stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143160 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d619acd5e0ff59556f563b66a4075d28900781c0 28-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM isel for vld1, opcode selection for register stride post-index pseudos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143158 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7861c3f93940b5112fda4dde9d797cb7594d863d 27-Oct-2011 Evan Cheng <evan.cheng@apple.com> Avoid partial CPSR dependency from loop backedges. rdar://10357570

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143145 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
2aee84ddb90faf76d0162dc478cdb5e34f85cd5e 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
RMInstrThumb2.td
195041f15bfeaaeec270fd4335aac1a22b1eea26 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
RMInstrThumb2.td
d11ed82017f80eee78a71c16bb53c0eec170f3d6 27-Oct-2011 Chad Rosier <mcrosier@apple.com> A branch predicated on a constant can just FastEmit an unconditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143086 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1acd83af87340892e4b7309e1d1d69a43bd629ef 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Add a TODO comment. FastISel works by parsing each basic block from the bottom
up. Thus, improving the support for compares is goodness because it increases
the number of terminator instructions we can handle. This creates many more
opportunities for target specific fast-isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143079 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b9b7957ab80a1d8f3383d1c3e5f3edf6d89adade 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Factor a little more code into EmitCmp, which should have been done in the first
place. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143078 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ac9946371cdbef20f0260e7a9f3e5e19a31b57b2 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Use EmitCmp in SelectBranch. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143076 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2e048e006f250648b2e8f719d1fbcfb8858fe0f6 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Factor out an EmitCmp function that can be used by both SelectCmp and
SelectBranch. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143072 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e6fd12e1c21314ede2b91e5653a16fe8aabed079 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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
78794d3986f6499cc4724df0185069f8b62a2b8e 26-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM parse parenthesized expressions for label references.

Partial fix for rdar://10348687.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143063 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
23ac055f50505d4abedce97fd9e56e34d042fecb 26-Oct-2011 Lang Hames <lhames@gmail.com> Make sure short memsets on ARM lower to stores, even when optimizing for size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143055 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
20d912fea6b66b4dda25da64457b57a9ee4a7892 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
RMInstrThumb2.td
e5bef7f51e7f036631c1aa868066286cb096fd20 26-Oct-2011 James Molloy <james.molloy@arm.com> Revert r142530 at least temporarily while a discussion is had on llvm-commits regarding exactly how much optsize should optimize for size over performance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143023 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
eb360aeb03307e598401d29e8d454f794090974f 26-Oct-2011 Bill Wendling <isanbard@gmail.com> Use a worklist to prevent the iterator from becoming invalidated because of the 'removeSuccessor' call. Noticed in a Release+Asserts+Check buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143018 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
918bdf0925ae48b06560f27bd888794aa48f820f 26-Oct-2011 Evan Cheng <evan.cheng@apple.com> Revert part of r142530. The patch potentially hurts performance especially
on Darwin platforms where -Os means optimize for size without hurting
performance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143002 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fd927582491b94189901c15fa773f7d551add6c2 25-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD1 with writeback.

Four entry register lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142882 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
6612871ef6b50ff9aec353d155d0fb17627a4806 25-Oct-2011 Jim Grosbach <grosbach@apple.com> Nuke dead code. Nothing generates the VLD1d64QPseudo_UPD instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142877 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
974c3ceceb4d7cee299a06e8095a0b746db62564 25-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD1 w/ writeback.

Three entry register list variation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142876 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
2adfd841f62e261345f37640eb0c70e3ccff7097 25-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Don't crash on variable insertelement on ARM. PR10258.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142871 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
452c9fa1c219c96881fe2430984fd6747555a67c 25-Oct-2011 Evan Cheng <evan.cheng@apple.com> ARMConstantPoolMBB::print should print BB number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142867 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
f121d4f9a66dba013c4fd6bb2c8f578a5a904ea1 25-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD1 w/ writeback.

One and two length register list variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142861 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
a028cb524487151b2462e0daa849eee3fc50564e 24-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM refactor am6offset usage for VLD1.

Split am6offset into fixed and register offset variants so the instruction
encodings are explicit rather than relying an a magic reg0 marker.
Needed to being able to parse these.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142853 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
1d4b94ff66bc2b3b9b75d2896a0582712abd5531 24-Oct-2011 Owen Anderson <resistor@mac.com> Fix a NEON disassembly case that was broken in the recent refactorings. As more of this code gets refactored, a lot of these manual decoding hooks should get smaller and/or go away entirely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142817 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
887422c3752cbefb67e6a4367358a38bfcd99c0a 24-Oct-2011 Dan Gohman <gohman@apple.com> Change this overloaded use of Sched::Latency to be an overloaded
use of Sched::ILP instead, as Sched::Latency is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142813 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ea830cd77510d8035bbcb868518ec8bc27267214 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
RMInstrThumb2.td
1c7cab083974e6411e750150c8643918074220f6 22-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Move various generated tables into read-only memory, fixing up const correctness along the way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142726 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
3b55bcbf2342bd8c93b789d3feea7a301beea120 22-Oct-2011 Bill Wendling <isanbard@gmail.com> The different flavors of ARM have different valid subsets of registers. Check
that the set of callee-saved registers is correct for the specific platform.
<rdar://problem/10313708> & ctor_dtor_count & ctor_dtor_count-2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142706 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7d59e9476bf03201dc2e121fba9727f8fbddb8c5 22-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 4-register sequential variant of VLD2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142704 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
abe29f3ae72e94c5a97203fd4cd4429b4918a21e 22-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 2-register sequential variant of VLD2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142691 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
795974e62ca656aece0bea6bbc1bd203e47dec9a 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 4-register variant of VLD1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142682 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
9f769c6463fbb58242d8d656dee4025bf4d8f665 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 3-register variant of VLD1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142675 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
4d2df7abe37c4a77e1f8704e885b8318e69dd70b 21-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VLD parsing and encoding.

Next step in the ongoing saga of NEON load/store assmebly parsing. Handle
VLD1 instructions that take a two-register register list.

Adjust the instruction definitions to only have the single encoded register
as an operand. The super-register from the pseudo is kept as an implicit def,
so passes which come after pseudo-expansion still know that the instruction
defines the other subregs.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142670 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
a55723f31ed5f46e4697f1b27f3d35b11f8a682c 21-Oct-2011 Owen Anderson <resistor@mac.com> Don't automatically set the "fc" bits on MSR instructions if the user didn't ask for them. This is a divergence from gas' behavior, but it is correct per the documentation and allows us to forge ahead with roundtrip testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142669 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4ba8dae7e2d52964666bee7d16282ce609d361e3 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Nuke an #if0 that got accidentally left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142658 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f7dc1f6031ff101afaf1443b407ce5ffc0ea63e8 21-Oct-2011 Jim Grosbach <grosbach@apple.com> whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142657 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
3a312b8e4a5e88d20f0d93307bcc56807fa3d00e 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Remove some outdated comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142653 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
773762c84df485b924e54bc0ce8e6c8e02f8a3b6 21-Oct-2011 Owen Anderson <resistor@mac.com> Revert r142618, r142622, and r142624, which were based on an incorrect reading of the ARMv7 docs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e9f08e0ed1d0e1779109f7ecb28f1d0fec8c003f 20-Oct-2011 Owen Anderson <resistor@mac.com> Separate out ARM MSR instructions into M-class versions and AR-class versions. This fixes some roundtripping failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142618 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
531d3add6b131902c163876b792023bcf845afa3 20-Oct-2011 Bill Wendling <isanbard@gmail.com> Add missing operand. <rdar://problem/10313323>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
28e780947cea28a1f3b7ec7a0ae4c05aa42c4c03 20-Oct-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142591 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
cc5c6167d27edd29d05f65dddaa6750e31bfcffb 20-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VLD1/VST1 (one register, no writeback) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142583 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3e8ba1d79be1cf9813b83d00117c05f1199e3dda 20-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VTBX (one register) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142581 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
514e5381301eec702b3ee20cdee008e72c21f411 20-Oct-2011 Chad Rosier <mcrosier@apple.com> Revert 142337. Thumb1 still doesn't support dynamic stack realignment. :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142557 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1FrameLowering.cpp
dc9205d9c29171f1ddcf2de7eb172a583cadbe63 14-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for ARM halfword load/stores and signed byte loads with negative
offsets.
rdar://10412592



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144518 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9eb674880b98cbeca0cd5b3f0265b77282d48b4a 13-Nov-2011 Chad Rosier <mcrosier@apple.com> The order in which the predicate is added differs between Thumb and ARM mode. Fix predicate when in ARM mode and restore SelectIntrinsicCall.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144494 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a517ab155b371e2911450d0048fb158931b8e68c 13-Nov-2011 Chad Rosier <mcrosier@apple.com> Temporarily disable SelectIntrinsicCall when in ARM mode. This is causing failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144492 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5be833de769608254fdfc56e8173000e874a8154 13-Nov-2011 Chad Rosier <mcrosier@apple.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144490 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b29b950bf227b65e193abf924f77ef3fa4eceaae 13-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for emitting both signed- and zero-extend loads. Fix
SimplifyAddress to handle either a 12-bit unsigned offset or the ARM +/-imm8
offsets (addressing mode 3). This enables a load followed by an integer
extend to be folded into a single load.

For example:
ldrb r1, [r0] ldrb r1, [r0]
uxtb r2, r1 =>
mov r3, r2 mov r3, r1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144488 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b8ebca83f4dff04ba21cc97673003f0bd35a2e49 12-Nov-2011 Daniel Dunbar <daniel@zuster.org> build: Attempt to rectify inconsistencies between CMake and LLVMBuild versions of explicit dependencies.
- The hope is that we have a tool/test to verify these are accurate (and tight) soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144444 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/LLVMBuild.txt
CTargetDesc/CMakeLists.txt
argetInfo/LLVMBuild.txt
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
742c4bac07e2800275a69259296fba7c3e3f651b 12-Nov-2011 Jim Grosbach <grosbach@apple.com> Re-apply 144430, this time with the associated isel and disassmbler bits.

Original commit msg: 'ARM assembly parsing for VST1 two-register encoding.'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144437 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
4d06138d53b5e3248eccd04b2b31277fce66f260 12-Nov-2011 Jim Grosbach <grosbach@apple.com> Oops. Missed the isel half of this. revert while I sort that out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144431 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
10a630dea6d03e8cfc9575c81a996e1644b0d660 12-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for VST1 two-register encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144430 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c7352f8ca0fc716c38cb3d81e63e943d47d578b3 12-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM optional size suffix for VLDR/VSTR syntax.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144427 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
11add26ec2bdf5109f0ff2ee19d237664687b914 12-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support in fast-isel for selecting memset/memcpy/memmove intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144426 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7aef99b677452724100145c81f76f32e494cc5a7 12-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM vldm and vstm VFP instructions can take a data type suffix.

It's ignored by the assembler when present, but is legal syntax. Other
instructions have something similar, but for some mnemonics it's
only sometimes not significant, so this quick check in the parser will
need refactored into something more robust soon-ish. This gets some
basics working in the meantime.

Partial for rdar://10435264

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144422 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c3937b97c00a857dff3528895e71ecfbc7ff3a28 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Nuke no longer accurate comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144411 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
95bc85e4eefdfc1aabfde85daf752f05d2a60701 11-Nov-2011 Andrew Trick <atrick@apple.com> Preserve MachineMemOperands in ARMLoadStoreOptimizer.

Fixes PR8113.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144409 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ce485e7f70faed6d19daafff91bb20509403d432 11-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM allow Q registers in vldm/vstm register lists.

rdar://9672822

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144407 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
eea66f63d98771a2772f5173debf954a81f3f782 11-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove the unnecessary dependency on libARMCodeGen from libARMDisassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144384 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1c47de87c74c3834c5cfab8a7e0fa67b1805f927 11-Nov-2011 Chad Rosier <mcrosier@apple.com> Rename variables to avoid confusion. No functionallity change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144377 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a07d3fc693e2a3ac7c9ed2a59f62b21ab33d9fd4 11-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for using immediates with select instructions.
rdar://10412592


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144376 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
15f58c56e9a4150abeea04469c9105edb8acad99 11-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make sure to expand SIGN_EXTEND_INREG for NEON vectors. PR11319, round 3.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144361 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
646abbfa30f881b5183b62e77a185fc48d9d82bd 11-Nov-2011 Chad Rosier <mcrosier@apple.com> When loading a value, treat an i1 as an i8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144356 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4e89d97e3a40dcbbf07648512f0e95133867a74f 11-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for using MVN to materialize negative constants.
rdar://10412592

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144348 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5ed5506f18fcc0a277c863f7a21b39f58e892ca5 11-Nov-2011 Daniel Dunbar <daniel@zuster.org> LLVMBuild: Add explicit information on whether targets define an assembly printer, assembly parser, or disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144344 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
0352b4679e9289ded6b2d73a76a017e0d97fe70d 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 ldm/stm updating w/ one register in the list are LDR/STR.

rdar://10429490

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144338 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
83ec87755ed4d07f6650d6727fb762052bd0041c 11-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM let processInstruction() tranforms chain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144337 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5402637ff283d7397513d5c1699cdf2274c47313 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing for push/pop w/ hi registers in the reglist.

rdar://10130228.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144331 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fae02597bb90f4334079580441b8e5876be4a3d2 11-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb1 diagnostics for reglist on PUSH/POP fix.

Was not checking the first register in the register list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144329 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1b332860aef0121cf4591f4377a7201ce0ef8366 10-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb MUL assembly parsing for 3-operand form.

Get the source register that isn't tied to the destination register correct,
even when the assembly source operand order is backwards.

rdar://10428630

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144322 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
16455ce1a4063348209e94f52afde653ded5eeb5 10-Nov-2011 Chad Rosier <mcrosier@apple.com> When in ARM mode, LDRH/STRH require special handling of negative offsets.
For correctness, disable this for now.
rdar://10418009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144316 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d475f8612b1c7959dbf50242c8fa9d4aea1ee1a9 10-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM .thumb_func directive for quoted symbol names.

Use the getIdentifier() method of the token, not getString(), otherwise
we keep the quotes as part of the symbol name, which we don't want.

rdar://10428015

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144315 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ee10ff89a2934636570cb17b756bf31b2a38aab5 10-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for LSR/LSL/ROR(immediate).

More of rdar://9704684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144301 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
71810ab7c0ecd6927dde1eee0c73169642f3764d 10-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for ASR(immediate).

Start of rdar://9704684

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144293 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
6cba97c5557ac51d8ae09b9f5cbad6891124db4d 10-Nov-2011 Chad Rosier <mcrosier@apple.com> For immediate encodings of icmp, zero or sign extend first. Then
determine if the value is negative and flip the sign accordingly.
rdar://10422026

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144258 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
affc6cf9d2b2b74532ce82027ac4524d1e29a658 10-Nov-2011 Daniel Dunbar <daniel@zuster.org> llvm-build: Add --native-target and --enable-targets options, and add logic to
handle defining the "magic" target related components (like native,
nativecodegen, and engine).
- We still require these components to be in the project (currently in
lib/Target) so that we have a place to document them and hopefully make it
more obvious that they are "magic".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144253 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
c352caf168094c83f05a8010ca14c2e643dbf618 10-Nov-2011 Daniel Dunbar <daniel@zuster.org> llvm-build: Add an explicit component type to represent targets.
- Gives us a place to hang target specific metadata (like whether the target has a JIT).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144250 91177308-0d34-0410-b5e6-96231b3b80d8
LVMBuild.txt
c27f6725b9ff019ca0bfc317669ed1db9d95bad5 10-Nov-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
14e809c87210877a675977d247ff4453db82d9b2 10-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make sure we correctly unroll conversions between v2f64 and v2i32 on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144241 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7346347674f03868e8c076c8c27a7f09f0a086c2 09-Nov-2011 Chad Rosier <mcrosier@apple.com> The ARM LDRH/STRH instructions use a +/-imm8 encoding, not an imm12.
rdar://10418009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144213 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2f2fe417f98406140504ba3bbb65676d4a00ed87 09-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for encoding immediates in icmp and fcmp. Hopefully, this will
remove a fair number of unnecessary materialized constants.
rdar://10412592


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144163 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
44ee4714a8c245d4fdfd03840efcf58c3f66c6bc 09-Nov-2011 Evan Cheng <evan.cheng@apple.com> Hide cpu name checking in ARMSubtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144154 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMSubtarget.h
3568a1051efb9a9edbd4914b04b44e9d7bc1b004 08-Nov-2011 Evan Cheng <evan.cheng@apple.com> Add workaround for Cortex-M3 errata 602117 by replacing ldrd x, y, [x] with ldm or ldr pairs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144123 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
66dc8ca04b719f3ab4aa650609dbd56b055ecb34 08-Nov-2011 Chad Rosier <mcrosier@apple.com> ARMFastISel doesn't support thumb1. Rename isThumb to isThumb2 to reflect this.
No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144122 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5207bf2177e9ef1e68d9408ea4b44f1c8a5ef9c0 08-Nov-2011 Lang Hames <lhames@gmail.com> Lower mem-ops to unaligned i32/i16 load/stores on ARM where supported.

Add support for trimming constants to GetDemandedBits. This fixes some funky
constant generation that occurs when stores are expanded for targets that don't
support unaligned stores natively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144102 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d752e0f7e64585839cb3a458ef52456eaebbea3c 08-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added invariant field to the DAG.getLoad method and changed all calls.

When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144100 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
9f1f26aefaf0bc02e732a1d36e664165d228901a 08-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Make sure to mark vector extload's as expand on ARM. Fixes PR11319.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144057 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0eff39f2e25e9d8dd52b1eb7fa4e7cc6cc77875f 08-Nov-2011 Chad Rosier <mcrosier@apple.com> Enable support for returning i1, i8, and i16. Nothing special todo as it's the
callee's responsibility to sign or zero-extend the return value. The additional
test case just checks to make sure the calls are selected (i.e., -fast-isel-abort
doesn't assert).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144047 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMFastISel.cpp
62c8e8e3f65a2943cedbce37a6b9b47653f0ea0a 07-Nov-2011 Chad Rosier <mcrosier@apple.com> Allow i1 to be promoted to i32 for ARM AAPCS and AAPCS-VFP calling convention as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144021 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
70be28a5adba5bcae0c6dcd63f17592864c351fc 07-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Simplify some uses of utohexstr.

As a side effect hex is printed lowercase instead of uppercase now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144013 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
590853667345d6fb191764b9d0bd2ff13589e3a3 06-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Replace (Lower|Upper)caseString in favor of StringRef's newest methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143891 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
42536af5ce152593f489ca88bd0732218594d536 05-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for passing i1, i8, and i16 call parameters. Also, be sure to
zero-extend the constant integer encoding. Test case provides testing for
both call parameters and materialization of i1, i8, and i16 types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143821 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
38f5c0da6d3097ddd65aaab15ce22c1b95d52902 05-Nov-2011 Chad Rosier <mcrosier@apple.com> Allow i1 to be promoted to i32 for ARM APCS calling convention.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143755 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
451afbc6a22a3a662eea7e86088c65c36e84949f 05-Nov-2011 Chad Rosier <mcrosier@apple.com> Cannot create a result register for non-legal types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143749 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a4e07270bccb3cb6774af975300628e072bf03f1 05-Nov-2011 Chad Rosier <mcrosier@apple.com> When materializing an i32, SExt vs ZExt doesn't matter when we're trying to fit
in a 16-bit immediate. However, for the shorter non-legal types (i.e., i1, i8,
i16) we should not sign-extend. This prevents us from materializing things
such as 'true' (i.e., i1 1).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143743 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
44e895761f289029657a8d066f67f0c9d18693b3 04-Nov-2011 Chad Rosier <mcrosier@apple.com> Enable support for materializing i1, i8, and i16 integers via move immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143739 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b0d9ce567f5aee3af94c290d7cd52b1582c27b4f 04-Nov-2011 Daniel Dunbar <daniel@zuster.org> build/cmake: Use tblgen macro directly instead of llvm_tablegen, which just
added a layer of indirection with no value (not even conciseness).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143727 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
c39916b166dffba53d19e6189a4154d649e572b6 04-Nov-2011 Evan Cheng <evan.cheng@apple.com> Fix some minor scheduling itinerary bug. It's not expected to actually affect codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143675 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8e4a2e4f730e691e116a4b2cee3a2c760a54ac09 04-Nov-2011 Chad Rosier <mcrosier@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143670 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f470cbbad204caa85275873004151b92fba24375 04-Nov-2011 Chad Rosier <mcrosier@apple.com> Add fast-isel support for returning i1, i8, and i16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143669 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
65fd6564b8aedd053845c81ede1ac594acb470e4 03-Nov-2011 Dan Gohman <gohman@apple.com> Reapply r143206, with fixes. Disallow physical register lifetimes
across calls, and only check for nested dependences on the special
call-sequence-resource register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143660 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a3a2dfd4a2a8265a9a0c962cb776e2e6ba123956 03-Nov-2011 Daniel Dunbar <daniel@zuster.org> build: Add initial cut at LLVMBuild.txt files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/LLVMBuild.txt
isassembler/LLVMBuild.txt
nstPrinter/LLVMBuild.txt
LVMBuild.txt
CTargetDesc/LLVMBuild.txt
argetInfo/LLVMBuild.txt
463fe24f1dd5132607abb3548a2acb1849e9aa99 03-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for sign-extending non-legal types in SelectSIToFP().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143603 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a1e78888d95375194e7513bef3e18d9f1b7d45bf 03-Nov-2011 Lang Hames <lhames@gmail.com> Fixed parameter name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143594 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
1a1d1fcc0b955420cdbe0b94bd01c46d4e96b429 02-Nov-2011 Lang Hames <lhames@gmail.com> Try to lower memset/memcpy/memmove to vector instructions on ARM where the alignment permits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143582 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e07cd5e40ac06fabfb9d33ea7c79542f138f45ce 02-Nov-2011 Chad Rosier <mcrosier@apple.com> Add support for comparing integer non-legal types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143559 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
81550dc0a866e27a1efbc5de616fb366ebb547cd 02-Nov-2011 Owen Anderson <resistor@mac.com> Fix the issue that r143552 was trying to address the _right_ way. One-register lists are legal on LDM/STM instructions, but we should not print the PUSH/POP aliases when they appear. This fixes round tripping on this instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143557 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
244006db5c4d48878dc5fdc86976acdaff96cfaa 02-Nov-2011 Owen Anderson <resistor@mac.com> The rules disallowing single-register reglist operands only apply to the POP alias, not to LDM/STM instructions. Revert r143552.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143553 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
e31b42a6f5598691498808673648211916bf4d0f 02-Nov-2011 Owen Anderson <resistor@mac.com> Register list operands are not allowed to contain only a single register. Alternate encodings are used in that case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143552 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
87633026d65acf8253e953bdcfd20bc351631f61 02-Nov-2011 Chad Rosier <mcrosier@apple.com> Factor out an EmitIntExt function. No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143547 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0d7b231c9b0acf2ea6bb99f75672751f64c6c6db 02-Nov-2011 Chad Rosier <mcrosier@apple.com> Factor out a SelectTrunc function. No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143523 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6284afc293c8f6e84dffab8731aa9e679d437745 01-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM label operands can be quoted.

For example, labels from Objective-C sources.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143511 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ed6a0c5243f4dc13169edc8e342c679f1bfc201c 01-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM label operands can have an optional '#' before them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143510 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
60cb643f7561e5be7a3b5fe705535e96de72cbf5 01-Nov-2011 Owen Anderson <resistor@mac.com> Fix disassembly of some VST1 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143507 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
681460f954e9c13ffd2f02f27bba048ccf90abaf 01-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM VLD/VST assembly parsing for symbolic address operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143413 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMAsmBackend.cpp
4334e032525d6c9038605f3871b945e8cbe6fab7 31-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VST1 w/ writeback assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143369 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
f9f5a765adf8465530fe1aced6455ca9438bb29a 31-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM writeback vs. stride operands for VST/VLD.

The _fixed variants have a writeback operand, but not a stride operand.
Split the conditional flag to distinguish the cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143356 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
fb6ab2b30e822d292c557bda32f7eb0acd1004e2 31-Oct-2011 Owen Anderson <resistor@mac.com> More not-crashing NEON disassembly updates for the vld refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143351 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
6f3ddef7c51f03945644ad0e69068dfb24d4b092 29-Oct-2011 Dan Gohman <gohman@apple.com> Revert r143206, as there are still some failing tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143262 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e70ec8463720b5990f0d1ab8d9b6ab56ca1d01c3 29-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM mode 'mov' to 'mvn' assembler alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143237 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
b3727fe3ec3b3a718935a6d6c6561e9a58a14546 28-Oct-2011 Owen Anderson <resistor@mac.com> Specify that the high bit of the alignment field is fixed to 0 on these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143220 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
cb9fed665550376b7c65c7e1157a58911193e2e2 28-Oct-2011 Owen Anderson <resistor@mac.com> Reapply r143202, with a manual decoding hook for SWP. This change inadvertantly exposed a decoding ambiguity between SWP and CPS that the auto-generated decoder can't handle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143208 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
bf923b815d6da97367e3eedab69230918bf128a3 28-Oct-2011 Dan Gohman <gohman@apple.com> Reapply r143177 and r143179 (reverting r143188), with scheduler
fixes: Use a separate register, instead of SP, as the
calling-convention resource, to avoid spurious conflicts with
actual uses of SP. Also, fix unscheduling of calling sequences,
which can be triggered by pseudo-two-address dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143206 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
82418ff4d1156dfd30d89a4874a365509a0798de 28-Oct-2011 Owen Anderson <resistor@mac.com> Revert r143202.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143203 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7ccee5610a7100ddffe05f5eda1950f7d2cf66a6 28-Oct-2011 Owen Anderson <resistor@mac.com> Specify fixed bits on CPS instructions to enable roundtripping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143202 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
62c1d00dfd38996f381edae55e1028b8e52a1107 28-Oct-2011 Duncan Sands <baldrick@free.fr> Speculatively disable Dan's commits 143177 and 143179 to see if
it fixes the dragonegg self-host (it looks like gcc is miscompiled).
Original commit messages:
Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.

Delete #if 0 code accidentally left in.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143188 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2ba60e593012ba9b2a9d20b86733eadca288bcb2 28-Oct-2011 Dan Gohman <gohman@apple.com> Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW
on every node as it legalizes them. This makes it easier to use
hasOneUse() heuristics, since unneeded nodes can be removed from the
DAG earlier.

Make LegalizeOps visit the DAG in an operands-last order. It previously
used operands-first, because LegalizeTypes has to go operands-first, and
LegalizeTypes used to be part of LegalizeOps, but they're now split.
The operands-last order is more natural for several legalization tasks.
For example, it allows lowering code for nodes with floating-point or
vector constants to see those constants directly instead of seeing the
lowered form (often constant-pool loads). This makes some things
somewhat more complicated today, though it ought to allow things to be
simpler in the future. It also fixes some bugs exposed by Legalizing
using RAUW aggressively.

Remove the part of LegalizeOps that attempted to patch up invalid chain
operands on libcalls generated by LegalizeTypes, since it doesn't work
with the new LegalizeOps traversal order. Instead, define what
LegalizeTypes is doing to be correct, and transfer the responsibility
of keeping calls from having overlapping calling sequences into the
scheduler.

Teach the scheduler to model callseq_begin/end pairs as having a
physical register definition/use to prevent calls from having
overlapping calling sequences. This is also somewhat complicated, though
there are ways it might be simplified in the future.

This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others.
Please direct high-level questions about this patch to management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143177 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c73d73eb881ebe7493e934c00ca1c474ffd0ed2d 28-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM Allow 'q' registers in VLD/VST vector lists.

Just treat it as if the constituent D registers where specified.

rdar://10348896

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143167 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
04b12a4cfb74ac65ea86d57bde5999ef6ab09ad4 28-Oct-2011 Owen Anderson <resistor@mac.com> Add some NEON stores to the VLD decoding hook that were accidentally omitted previously.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143162 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
b0117eed84b7899c677a1da5e074fe3a2b7046dd 28-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also set addrmode6 alignment when align==size.

Previously, we were only setting the alignment bits on over-aligned
loads and stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143160 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
55dabaa73a7a0be4398fae58443f3ad8264e537e 28-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM isel for vld1, opcode selection for register stride post-index pseudos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143158 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
824a70a384988aebbe3b46254a3631e81a8f0690 27-Oct-2011 Evan Cheng <evan.cheng@apple.com> Avoid partial CPSR dependency from loop backedges. rdar://10357570

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143145 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
6d64b3adab682aea9c0b4dd665acc5e863ac6d21 27-Oct-2011 Chad Rosier <mcrosier@apple.com> A branch predicated on a constant can just FastEmit an unconditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143086 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8ff2664f2f3f4f5dbd847f94352ffc8b4e1b85e3 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Add a TODO comment. FastISel works by parsing each basic block from the bottom
up. Thus, improving the support for compares is goodness because it increases
the number of terminator instructions we can handle. This creates many more
opportunities for target specific fast-isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143079 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ade620065d1ad591e0f3d39d40cc241f49cf0a99 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Factor a little more code into EmitCmp, which should have been done in the first
place. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143078 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
75698f346fc44bdd8803b5dda4071d4b5872d82b 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Use EmitCmp in SelectBranch. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143076 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
530f7cefd3082e8aaa74b7d65636f30d0312b6ec 27-Oct-2011 Chad Rosier <mcrosier@apple.com> Factor out an EmitCmp function that can be used by both SelectCmp and
SelectBranch. No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143072 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
758a519a22b469ce8e2b8d0bf7a72813e87710d4 26-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM parse parenthesized expressions for label references.

Partial fix for rdar://10348687.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143063 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
75757f9fd13bffc51a6aa30eefe706c4f84d0913 26-Oct-2011 Lang Hames <lhames@gmail.com> Make sure short memsets on ARM lower to stores, even when optimizing for size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143055 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
015cca6c08a5da57b78796d82ab2679e8f5dabe1 26-Oct-2011 James Molloy <james.molloy@arm.com> Revert r142530 at least temporarily while a discussion is had on llvm-commits regarding exactly how much optsize should optimize for size over performance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143023 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
de39d86f26c5fa244a11d79988f26f52accabaf0 26-Oct-2011 Bill Wendling <isanbard@gmail.com> Use a worklist to prevent the iterator from becoming invalidated because of the 'removeSuccessor' call. Noticed in a Release+Asserts+Check buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143018 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f31151f34ec37dd49bdf998e9e352d572f4a8e06 26-Oct-2011 Evan Cheng <evan.cheng@apple.com> Revert part of r142530. The patch potentially hurts performance especially
on Darwin platforms where -Os means optimize for size without hurting
performance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143002 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
399cdca4d201f7232126c3a0643669971ede780a 25-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD1 with writeback.

Four entry register lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142882 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
b36e03d987c843ccb731627ffd2b1db17bd72e39 25-Oct-2011 Jim Grosbach <grosbach@apple.com> Nuke dead code. Nothing generates the VLD1d64QPseudo_UPD instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142877 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
5921675ff5ea632ab1e6d7aa5d1f263b858bbafa 25-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD1 w/ writeback.

Three entry register list variation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142876 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
5c89cb8cd613c5a9d2bb2d6ab68afe8c2b41db70 25-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Don't crash on variable insertelement on ARM. PR10258.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142871 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
aed4952753e2af9e93dde0b18a4ca8af73ec6db5 25-Oct-2011 Evan Cheng <evan.cheng@apple.com> ARMConstantPoolMBB::print should print BB number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142867 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
12431329d617064d6e72dd040a58c1635cc261ab 25-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VLD1 w/ writeback.

One and two length register list variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142861 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
10b90a9bbf7dcae1568c03a03f9606f5395f2144 24-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM refactor am6offset usage for VLD1.

Split am6offset into fixed and register offset variants so the instruction
encodings are explicit rather than relying an a magic reg0 marker.
Needed to being able to parse these.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142853 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
a7c98f58ea939e1dfe40bba725fbac698f36c0bb 24-Oct-2011 Owen Anderson <resistor@mac.com> Fix a NEON disassembly case that was broken in the recent refactorings. As more of this code gets refactored, a lot of these manual decoding hooks should get smaller and/or go away entirely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142817 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
692c1d85353249124caa1885cfeda513146c6d81 24-Oct-2011 Dan Gohman <gohman@apple.com> Change this overloaded use of Sched::Latency to be an overloaded
use of Sched::ILP instead, as Sched::Latency is going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142813 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
1a2f9886a2a60dbd41216468a240446bbfed3e76 22-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Move various generated tables into read-only memory, fixing up const correctness along the way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142726 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
b8dcb314f7f9c5c0f068a322c689a64881d78b70 22-Oct-2011 Bill Wendling <isanbard@gmail.com> The different flavors of ARM have different valid subsets of registers. Check
that the set of callee-saved registers is correct for the specific platform.
<rdar://problem/10313708> & ctor_dtor_count & ctor_dtor_count-2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142706 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
224180e81b34c99d15e35a4d4de6729357c6d372 22-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 4-register sequential variant of VLD2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142704 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
4661d4cac3ba7f480a91d0ccd35fb2d22d9692d3 22-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 2-register sequential variant of VLD2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142691 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
b6310316dbaf8716003531d7ed245f77f1a76a11 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 4-register variant of VLD1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142682 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
cdcfa280568d5d48ebeba2dcfc87915105e090d1 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Assembly parsing for 3-register variant of VLD1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142675 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
280dfad48940a0a51726308dd3daa3b1b0d18705 21-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VLD parsing and encoding.

Next step in the ongoing saga of NEON load/store assmebly parsing. Handle
VLD1 instructions that take a two-register register list.

Adjust the instruction definitions to only have the single encoded register
as an operand. The super-register from the pseudo is kept as an implicit def,
so passes which come after pseudo-expansion still know that the instruction
defines the other subregs.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142670 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
7784f1d2d8b76a7eb9dd9b3fef7213770605532d 21-Oct-2011 Owen Anderson <resistor@mac.com> Don't automatically set the "fc" bits on MSR instructions if the user didn't ask for them. This is a divergence from gas' behavior, but it is correct per the documentation and allows us to forge ahead with roundtrip testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142669 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7926db82686be283ec4cdb68989806c69f388cb1 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Nuke an #if0 that got accidentally left in.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142658 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
293a5f69fad6053a328bf454e3f28d724d989231 21-Oct-2011 Jim Grosbach <grosbach@apple.com> whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142657 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
fe7b4998c603f181cad282894368028709a5c5e7 21-Oct-2011 Jim Grosbach <grosbach@apple.com> Remove some outdated comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142653 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2e5a5ee613fae456a8ed4282acede56860682f4f 21-Oct-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to upstream Oct 20th 2011.

Change-Id: I2bb819151f3fa5ce18690ef373bf071205d3f278
ndroid.mk
isassembler/Android.mk
nstPrinter/Android.mk
CTargetDesc/Android.mk
argetInfo/Android.mk
cd20c58e980552daef182247005cf905fe8b06ba 21-Oct-2011 Owen Anderson <resistor@mac.com> Revert r142618, r142622, and r142624, which were based on an incorrect reading of the ARMv7 docs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a3a6f215d0a56adb7fee009d3f0f8b55e26137fd 20-Oct-2011 Owen Anderson <resistor@mac.com> Separate out ARM MSR instructions into M-class versions and AR-class versions. This fixes some roundtripping failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142618 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
767f8be9eed51f41c8ad03de7684761f82bf26c9 20-Oct-2011 Bill Wendling <isanbard@gmail.com> Add missing operand. <rdar://problem/10313323>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
01817c39a9d7ff864d0b5de4941eec93d2f9e3a8 20-Oct-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142591 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
6b09c77b7a831f57ccedb20c760031492a0af043 20-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VLD1/VST1 (one register, no writeback) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142583 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d0b614754eb2d5ce9c2b0841270872129f956059 20-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VTBX (one register) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142581 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6690bca623d1f6405b95db5b1760f7ba8436e3fb 20-Oct-2011 Chad Rosier <mcrosier@apple.com> Revert 142337. Thumb1 still doesn't support dynamic stack realignment. :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142557 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1FrameLowering.cpp
0ebc07a576037e4e36f68bf5cece32740ca120c0 19-Oct-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream 2011/10/20 (r142530)

Conflicts:
lib/Support/Unix/Host.inc

Change-Id: Idc00db3b63912dca6348bddd9f8a1af2a8d5d147
cdd8e46bec4e975d00a5abea808d8eb4138515c5 19-Oct-2011 James Molloy <james.molloy@arm.com> Use literal pool loads instead of MOVW/MOVT for materializing global addresses when optimizing for size.

On spec/gcc, this caused a codesize improvement of ~1.9% for ARM mode and ~4.9% for Thumb(2) mode. This is
codesize including literal pools.

The pools themselves doubled in size for ARM mode and quintupled for Thumb mode, leaving suggestion that there
is still perhaps redundancy in LLVM's use of constant pools that could be decreased by sharing entries.

Fixes PR11087.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142530 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
922ad78776a2a45fd79602475636077edfdf94fc 19-Oct-2011 Bill Wendling <isanbard@gmail.com> Make sure we emit the 'movw' and 'movt' only if it's supported. Otherwise, use a constant pool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142485 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b677a135acb2fc5dabb94d8f7fd0839e43dea092 19-Oct-2011 Bill Wendling <isanbard@gmail.com> Remove some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
62383e889e0b06fd12a6b88311717cd33a1925c4 19-Oct-2011 Shih-wei Liao <sliao@google.com> Fix AsmParser's spacing.

Change-Id: Ifb734b77c539fc53ec68461d1de7732f296239b0
smParser/Android.mk
d2351e5c088147b5d71d5745cf07b5085a7f0073 19-Oct-2011 Logan Chien <loganchien@google.com> Add build rules for llc, opt, and llvm-link on target device.

Change-Id: I42f35da6f5ce77ab8969746131f5e6fdd42e5afa
smParser/Android.mk
15a1a226be46dfaaa15c537daa9722b6216a981d 19-Oct-2011 Bill Wendling <isanbard@gmail.com> Emit the MOVT instruction only if the # LPads is > 64K.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142460 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a5871dc1044ff31906f3a2cfc639c7fcd0a14c76 19-Oct-2011 Bill Wendling <isanbard@gmail.com> For Thumb mode, we need to use a constant pool if the value is too large to be
used with the CMP instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142458 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
862019c37f5b5d76e34eeb0d5686e617d544059f 19-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM VTBL (one register) assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142441 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
85f3a0a4c4c1953a06ea463c6b5d6b88d62b58b4 19-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the integer compare when the value is small enough. Use the "move into a
register and then compare against that" method when it's too large. We have to
move the value into the register in the "movw, movt" pair of instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142440 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
952cb50fee7181265c0feb4f656dbbe8c0101dfb 19-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the integer compare when the value is small enough. Use the "move into a
register and then compare against that" method when it's too large. We have to
move the value into the register in the "movw, movt" pair of instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142437 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
564392bd3f6df4ba139d3be34017ed2a826f78bb 19-Oct-2011 Bill Wendling <isanbard@gmail.com> The value we're comparing against may be too large for the ARM CMP
instruction. Move the value into a register and then use that for the CMP.
<rdar://problem/10305266>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142431 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b9fecf4e077cfd54884ce96ef6bd9febf0d84191 18-Oct-2011 Bill Wendling <isanbard@gmail.com> The immediate may be too large for the CMP instruction. Move it into a register
and use that in the CMP.
<rdar://problem/10305266>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142429 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a7d2e759ee3b428ec80f084b7c5265e286238632 18-Oct-2011 Jim Grosbach <grosbach@apple.com> Yet more ARM NEON assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142416 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
aead579017d0f8c43dba3bcb049b1d2576b9f8e3 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM vmla/vmls assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142413 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
687656c6300138583f2e8e3cdaff6cfeb6261b7f 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM vmov assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142412 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
9d45de252c7c3851c0159db4dcaa31e93598b29e 18-Oct-2011 Bob Wilson <bob.wilson@apple.com> Use isIntN and isUIntN to check for valid signed/unsigned numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142395 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMISelLowering.cpp
RMInstrThumb2.td
f7b0207f1e89f08b2e2d233b8cc6ba6fcb2a0f4d 18-Oct-2011 Bill Wendling <isanbard@gmail.com> A landing pad could have more than one predecessor. In that case, we want that
predecessor to remove the jump to it as well. Delay clearing the 'landing pad'
flag until after the jumps have been removed. (There is an implicit assumption
in several modules that an MBB which jumps to a landing pad has only two
successors.)
<rdar://problem/10304224>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142390 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9120088979dbcd20e8643bc8f5b22bc605c7d974 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM vmla/vmls assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142389 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0a0374018f1d17d6d2895fb73026e2942ab111ed 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM vqdmulh assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142386 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
970f787a7e3929c9cc1c0faabf224d26c1fcd252 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM vmul assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142381 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ad952ad8f05a1c5082a6b7ac8627008fa24d722a 18-Oct-2011 Bob Wilson <bob.wilson@apple.com> Fix incorrect check for sign-extended constant BUILD_VECTOR.
<rdar://problem/10298332>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142371 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e873d2a14820d2bfb007da43f382f322f8757ec8 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM vqdmlal assembly parsing for the lane index operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142365 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrThumb2.td
f2f5bc60f61acf0490d856ddd09e461bf93c5459 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VMOV.i64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142356 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
17001ce25cc205ac1cd2604492c2bce310964220 18-Oct-2011 Duncan Sands <baldrick@free.fr> Fix a bunch of unused variable warnings when doing a release
build with gcc-4.6.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142350 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
928698b14e4bcd0f231dc28e246920a242d81fc1 18-Oct-2011 David Meyer <pdox@google.com> Remove NaClMode

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142338 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrInfo.td
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
fe04757f5e06ab15208ac0a2ab8d7e83c62b9f0d 18-Oct-2011 Chad Rosier <mcrosier@apple.com> Add support for dynamic stack realignment when in thumb1 mode.
rdar://10288916


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142337 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1FrameLowering.cpp
895ede819f0558574fce66cc1eca80eee2deaa4e 18-Oct-2011 Joe Abbey <jabbey@arxan.com> Commit test, capitalizing store... keep it simple.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142336 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
6248a546f23e7ffa84c171dc364b922e28467275 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VMOV/VMVN/VORR/VBIC.i32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142321 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
ea46110f57b293844a314aec3b8092adf21ff63f 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VMOV/VMVN/VORR/VBIC.i16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142303 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
3a7572ff61dbd659121b20791d67469a70e9324d 18-Oct-2011 Chad Rosier <mcrosier@apple.com> Add a few FIXME comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142299 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fa1ee880520d8da1168278c65575241487f871df 18-Oct-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142297 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
0e387b2877e4eebeedfcb26b08253f9c1b946035 18-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM NEON "vmov.i8" immediate assembly parsing and encoding.

NEON immediates are "interesting". Start of the work to handle parsing them
in an 'as' compatible manner. Getting the matcher to play nicely with
these and the floating point immediates from VFP is an extra fun wrinkle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142293 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smParser/ARMAsmParser.cpp
a48ed4fc8fddc819460e7ea0646709a7fd701e67 17-Oct-2011 Bill Wendling <isanbard@gmail.com> Don't renumber the blocks here. This could cause problems later on if another
pass renumbers the blocks again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142258 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
698f3b068fabe42bc775ebf6a964b7de9dcd2b75 17-Oct-2011 Jim Grosbach <grosbach@apple.com> Tidy up organization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142248 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5bc85286ff8940e52edc7be1c8df120f98343ee1 17-Oct-2011 Bill Wendling <isanbard@gmail.com> Add a call to EmitSjLjDispatchBlock.

Once the intrinsics are marked as having a custom inserter, it will call this
method to emit the dispatch table into the machine function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142245 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c378015d1cc073e5e8027491514f50e2c7413f9e 17-Oct-2011 Chad Rosier <mcrosier@apple.com> Removed set, but unused variables.

Patch by Joe Abbey <jabbey@arxan.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142223 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
9904056a7061f6e42d38dd565c23990f0a56e9e1 17-Oct-2011 Michael J. Spencer <bigcheesegs@gmail.com> Fix CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142204 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
827454e6e28cfed93db990b03b720ef7c23e6917 17-Oct-2011 Devang Patel <dpatel@apple.com> svn mv Target/ARM/ARMGlobalMerge.cpp Transforms/Scalar/GlobalMerge.cpp

There is no reason to have simple IR level pass in lib/Target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142200 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
RMTargetMachine.cpp
24bb92556614434a5c5c2246b19e71d85426cab3 17-Oct-2011 Bill Wendling <isanbard@gmail.com> Add comment explaining that the order of processing doesn't matter here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142176 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
004a24b44ce79746a5333b7bf841b4234a936b51 15-Oct-2011 Nadav Rotem <nadav.rotem@intel.com> ARM cannot select a pattern for trunc-store v4i8; /ARM/vrev.ll fails when promoting elements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142080 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
534849687c8cc0e4b538d64be71670e2a028a1be 15-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Mark tADDrSPi as having side effects again.

It really doesn't, but when r141929 removed the hasSideEffects flag from
this instruction, it caused miscompilations. I am guessing that it got
moved across a stack pointer update.

Also clear isRematerializable after checking that this instruction is
in fact never rematerialized in the nightly test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142030 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d73462a1c9e9abae6d404c7830224814ef293f0d 15-Oct-2011 Chad Rosier <mcrosier@apple.com> Thumb1 does not support dynamic stack realignment.
rdar://10288916 is tracking this fix.

In the past, instcombine and other passes were promoting alloca alignment past
the natural alignment, resulting in dynamic stack realignment. Lang's work now
prevents this from happening (LLVM commit r141599). Now that this really
shouldn't happen report a fatal error rather than silently generate bad code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142028 91177308-0d34-0410-b5e6-96231b3b80d8
humb1FrameLowering.cpp
918f2155e90613bcf222ac5499f845d231bdfd57 15-Oct-2011 Bill Wendling <isanbard@gmail.com> Mark registers as DEAD because they're really just clobbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142027 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
46995fa7e2eead5759d13ddc64ef073c1d527f12 15-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Add missing correctness check to ARMTargetLowering::ReconstructShuffle. Fixes PR11129.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142022 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5d79859f66fa1540d5a1c1e9e4f4e080e6e956f1 15-Oct-2011 Bill Wendling <isanbard@gmail.com> Make sure that the register is in the register class before adding it as a machine op.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142021 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
969c9ef0dd271905136f21a6c51dd0839ef01cce 15-Oct-2011 Bill Wendling <isanbard@gmail.com> Mark the invoke call instruction as implicitly defining the callee-saved registers.

The callee-saved registers cannot be live across an invoke call because the
control flow may continue along the exceptional edge. When this happens, all of
the callee-saved registers are no longer valid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142018 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8223e45dff0f368ee40242f9e81f09b40e081756 14-Oct-2011 Richard Trieu <rtrieu@google.com> Fix a non-firing assert. Change:
assert("bad SymbolicOp.VariantKind");
To:
assert(0 && "bad SymbolicOp.VariantKind");


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142000 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
ccbe603869681aa71b4140e3bf4b4459caf60622 14-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ban rematerializable instructions with side effects.

TableGen infers unmodeled side effects on instructions without a
pattern. Fix some instruction definitions where that was overlooked.

Also raise an error if a rematerializable instruction has unmodeled side
effects. That doen't make any sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141929 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
ecb830e45c216209f4a8b95d687f1ef4e9185bee 14-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Fix undefined shift. Patch by Ahmed Charles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141914 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
8e4d0429de3d44a4c5b02b3d27cb0b78520609ba 14-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Simplify and avoid undefined shift. Based on patch by Ahmed Charles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141903 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c18e940c5a1c050701594ee2b356cd40249505a3 13-Oct-2011 Owen Anderson <resistor@mac.com> SETEND is not allowed in an IT block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141874 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
81b2928d80047cb6c8ae0048185742abae1d9dfa 12-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM addrmode5 represents the 'U' bit of the encoding backwards.

The disassembler needs to use the AM5 factory methods instead of just
building up the immediate directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141819 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
b0786b33fa9090adee9a30796ead7969f948f4cd 12-Oct-2011 Jim Grosbach <grosbach@apple.com> addrmode2 is gone from these, so no need for the reg0 operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141794 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
9b8f2a0b365ea62a5fef80bbaab3cf0252db2fcf 12-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM parsing and encoding for the <option> form of LDC/STC instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141786 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
01208d56e8341c17bb7dbeaf6c081fdffe523786 12-Oct-2011 Jim Grosbach <grosbach@apple.com> 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141781 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
bc9c80240bc922cffb02cae390181bf42ad231e5 12-Oct-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141780 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
1c062c24aba08962b4687f56b274f182e5b7a8e5 12-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix -widen-vmovs liveness issues.

When widening a copy, we are reading a larger register that may not be
live. Use an <undef> flag to tell the register scavenger and machine
code verifier that we know the value isn't defined.

We now widen:

%S6<def> = COPY %S4<kill>, %D3<imp-def>

into:

%D3<def> = VMOVD %D2<undef>, pred:14, pred:%noreg, %S4<imp-use,kill>

This also keeps the <kill> flag on %S4 so we don't inadvertently kill a
live value in %S5.

Finally, ensure that ARMBaseInstrInfo::setExecutionDomain() preserves
the <undef> flag when converting VMOVD to VORR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141746 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2bd0118472de352745a2e038245fab4974f7c87e 11-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for LDC{2}{L}/STC{2}{L} instructions.

Fill out the rest of the encoding information, update to properly mark
the LDC/STC instructions as predicable while the LDC2/STC2 instructions are
not, and adjust the parser accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141721 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
e575499d830008784b11499dae290ad0480c8f9d 11-Oct-2011 Bill Wendling <isanbard@gmail.com> Revert r141529. This is causing failures in the test-suite, like bigstack and ReedSolomon. Boo...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141716 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
2cf8dd384e69593475e4e5e6cf98b5b15c778ab8 11-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM addressing mode cleanup for LDC/STC.

We parse at least some forms of the instructions now. Encoding is
pretty screwed up, still, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141704 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
57dcb85a30133a9bc008f0b9ead81be03a23521e 11-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM parse alignment specifier for NEON load/store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141682 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
e53c87b302b3ae07c781405572170b0b6641b524 11-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM Rename operand sub-structure 'Mem' to 'Memory' for a bit more clarity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141671 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
142bd1a54e93f3f66d420717ecba53539a556035 11-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Move -widen-vmovs to ARMBaseInstrInfo::expandPostRAPseudo().

The VMOVS widening needs to look at the implicit COPY operands. Trying
to dig out the COPY instruction from an iterator in copyPhysReg() is the
wrong approach.

The expandPostRAPseudo() hook gets to look at COPY instructions before
they are converted to copyPhysReg() calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141619 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
3f56d4b957b04aaaf3ad27900713ea4d67f3189e 11-Oct-2011 Bill Wendling <isanbard@gmail.com> Simplify check that optional def is there and is CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141602 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
bb5b3f33594cfa40e9f53bf9a71af359b080a697 11-Oct-2011 Lang Hames <lhames@gmail.com> Add a natural stack alignment field to TargetData, and prevent InstCombine from
promoting allocas to preferred alignments that exceed the natural
alignment. This avoids some potentially expensive dynamic stack realignments.

The natural stack alignment is set in target data strings via the "S<size>"
option. Size is in bits and must be a multiple of 8. The natural stack alignment
defaults to "unspecified" (represented by a zero value), and the "unspecified"
value does not prevent any alignment promotions. Target maintainers that care
about avoiding promotions should explicitly add the "S<size>" option to their
target data strings.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141599 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
f6c35c59f515505fa2e9b74b3d0f4ab06f8266d8 11-Oct-2011 Jim Grosbach <grosbach@apple.com> Simplify operand Kind checks a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141592 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
38fbe323157a712e0b4334b7d73bcde6735c53a1 11-Oct-2011 Jim Grosbach <grosbach@apple.com> Add a name to sub-operand for clarity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141590 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
721e1d266902f4d906645b130d1b2a905d75fa31 11-Oct-2011 Bill Wendling <isanbard@gmail.com> If the CPSR is defined by a copy, then we don't want to merge it into an IT
block. E.g., if we have:

movs r1, r1
rsb r1, 0
movs r2, r2
rsb r2, 0

we don't want this to be converted to:

movs r1, r1
movs r2, r2
itt mi
rsb r1, 0
rsb r2, 0

PR11107 & <rdar://problem/10259534>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141589 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
8129d213960bac2c9d01053922866fc0f552462e 10-Oct-2011 Bill Wendling <isanbard@gmail.com> When getting the number of bits necessary for addressing mode
ARMII::AddrModeT1_s, we need to take into account that if the frame register is
ARM::SP, then the number of bits is 8. If it's not ARM::SP, then the number of
bits is 5.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141529 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
29b9d7e4ea7521be25bccdb66ecd9c9df5ed8b4b 10-Oct-2011 Chad Rosier <mcrosier@apple.com> Fix a regression from r138445. If we're loading from the frame/base pointer
the tADDrSPi instruction can't be used. Make sure we're updating the opcode
to tADDi3 in all cases.
rdar://10254707

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141523 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
2d4b60f3a40d4a1d60d43f5bb94c3c3dd19a6fc5 08-Oct-2011 Anton Korobeynikov <asl@math.spbu.ru> Disable ABS optimization for Thumb1 target, we don't have necessary instructions there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141481 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
460a90540b045c102012da2492999557e6840526 08-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM NEON assembly parsing and encoding for VDUP(scalar).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141446 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
21ff17ce1b57ad68ae01d6eee0ecc36b5dd318cf 08-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM prefix asmparser operand kind enums for readability.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141438 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2acf638216d98a4dcfed41828a4764cf9e68b4d4 08-Oct-2011 Bill Wendling <isanbard@gmail.com> Take all of the invoke basic blocks and make the dispatch basic block their new
successor. Remove the old landing pad from their successor list, because it's
now the successor of the dispatch block. Now that the landing pad blocks are no
longer the destination of invokes, we can mark them as normal basic blocks
instead of landing pads.

This more closely resembles what the CFG is actually doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141436 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f1083d4139720b41457528f81919d9587e442862 08-Oct-2011 Bill Wendling <isanbard@gmail.com> Take the code that was emitted for the llvm.eh.dispatch.setup intrinsic and emit
it with the new SjLj emitter stuff. This way there's no need to emit that
kind-of-hacky intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141419 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ce370cfd891386d613d4bd0d28449d2705705d16 07-Oct-2011 Bill Wendling <isanbard@gmail.com> Thread the chain through the eh.sjlj.setjmp intrinsic, like it's documented to
do. This will be useful later on with the new SJLJ stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141416 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
186ffac4d35c9ea669b03ac75f5e21bff1f01a7f 07-Oct-2011 Jim Grosbach <grosbach@apple.com> Improve ARM assembly parser diagnostic for unexpected tokens.

Consider:
mov r8, r11 fred

Previously, we issued the not very informative:
x.s:6:1: error: unexpected token in argument list

^

Now we generate:
x.s:5:14: error: unexpected token in argument list
mov r8, r11 fred
^


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141380 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6d2f9cec715c50bca44816d9bdea97f8b63bf2a0 07-Oct-2011 Bob Wilson <bob.wilson@apple.com> Reenable tail calls for iOS 5.0 and later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141370 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
2fef4573df6fd645f4401302d21c16e72418e3a8 07-Oct-2011 Bob Wilson <bob.wilson@apple.com> Reenable use of divmod compiler_rt functions for iOS 5.0 and later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141368 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
217f0e9ca494a1752c591f50f04b4143eb1763c5 07-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the correct vreg here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141342 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
083a8eb063657866ff595980fc03a16b791d08df 07-Oct-2011 Bill Wendling <isanbard@gmail.com> Generate the dispatch code for a 'thumb' function. This is very similar to the
others. They take the call site value. Determine if it's a proper value. And
then jumps to the correct call site via a jump table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141341 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7011eee9b509f3a0f95a75f68787384f31ea3e01 07-Oct-2011 Owen Anderson <resistor@mac.com> Fix the check for nested IT instructions in the disassembler. We need to perform the check before adding the Thumb predicate, which pops on entry off the ITBlock queue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141339 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
95ce2e9c52ea220f5090d9e8bacabf8e62f88d06 07-Oct-2011 Bill Wendling <isanbard@gmail.com> Generate the dispatch table for ARM mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141327 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e29fa1df55584b6f07290a91e33bf742f1c549e4 07-Oct-2011 Bill Wendling <isanbard@gmail.com> Refactor some of the code that sets up the entry block for SjLj EH. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141323 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
5e2cbc11337fca72ec962c8d8c29661d0e7c69ac 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Use a thumb ORR instead of thumb2 ORR when in thumb-only mode. (Picky! Picky!)
Place the immediate to OR into a register so that it works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141319 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
04f15b4f2f38fb0dd8315676e6cff599cdbd6f0f 06-Oct-2011 Bill Wendling <isanbard@gmail.com> * Set the low bit of the return address when we are in thumb mode.
* Some code cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141317 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
de8f33c199f3bf2049b0b732169f2bd8717469c6 06-Oct-2011 Peter Collingbourne <peter@pcc.me.uk> Build system infrastructure for multiple tblgens.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141266 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
930193cb5544bd010a0a2bc795c9006913e2c595 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Add the MBBs before inserting the instructions. Doing it afterwards could lead
to an infinite loop because of the def-use chains.

Also use a frame load instead of store for the LD instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141263 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8f8aa815b46143e2e84a62dadf6f57daf25a4e24 06-Oct-2011 Cameron Zwarich <zwarich@apple.com> Always merge profitable shifts on A9, not just when they have a single use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141248 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d78ebe1e12a9aae01cb11d4d10a3d0600407e5ca 06-Oct-2011 Cameron Zwarich <zwarich@apple.com> Remove a check from ARM shifted operand isel helper methods, which were blocking
merging an lsl #2 that has multiple uses on A9. This shift is free, so there is
no problem merging it in multiple places. Other unprofitable shifts will not be
merged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141247 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5cbef19a1d9860534a573f446970f5c65758fb66 06-Oct-2011 Bill Wendling <isanbard@gmail.com> Get the proper call site numbers for the landing pads. Also remove a magic
number (18) for the proper addressing mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141245 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2dbb46a0a09d4a16a6752cfcbe1d55d51e7d2a31 05-Oct-2011 Owen Anderson <resistor@mac.com> Support a valid, but not very useful, encoding of CPSIE where none of the AIF bits are set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141190 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
fb77752253717bc9c26cd2f6915925dc19edb8a3 05-Oct-2011 Cameron Zwarich <zwarich@apple.com> Add braces around something that throws me for a loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141173 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5ee02620146bda648a191da6323c34887b987a8a 05-Oct-2011 Cameron Zwarich <zwarich@apple.com> There is no point in setting out-parameters for a ComplexPattern function when
it returns false, at least as far as I could tell by reading the code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141172 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bb73468e2bfb21160266691e9cdc4c4ea4256b22 05-Oct-2011 Bill Wendling <isanbard@gmail.com> Look at the number of entries in the jump table and jump to a 'trap' block if
the value exceeds that number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141143 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2a85015313b585c2a6d2a59d5bfc99a5ebe88f30 05-Oct-2011 Bill Wendling <isanbard@gmail.com> Checkpoint for SJLJ EH code.

This is a first pass at generating the jump table for the sjlj dispatch. It
currently generates something plausible, but hasn't been tested thoroughly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141140 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2fec6c5ff153786744ba7d0d302b73179731c5e9 05-Oct-2011 Owen Anderson <resistor@mac.com> Teach the MC to output code/data region marker labels in MachO and ELF modes. These are used by disassemblers to provide better disassembly, particularly on targets like ARM Thumb that like to intermingle data in the TEXT segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141135 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
9d39036f62674606565217a10db28171b9594bc7 04-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VMOV immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141046 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smParser/ARMAsmParser.cpp
2a3f19d7e3f77d4d2f8e2b030d6ec1fa11b2abea 04-Oct-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141043 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAddressingModes.h
ff4216a68a5a142259c631b1370bff270bfd7e49 04-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the PC label ID rather than '1'. Add support for thumb-2, because I heard that some people use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141042 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
68259145d9ac1f8d4e2cc9fc73626254fcc5cf08 04-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM parsing/encoding for VCMP/VCMPE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141038 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f7e4aefd0f78441bef3b9eb683ecccbed9582b8a 03-Oct-2011 Bill Wendling <isanbard@gmail.com> Check-pointing the new SjLj EH lowering.

This code will replace the version in ARMAsmPrinter.cpp. It creates a new
machine basic block, which is the dispatch for the return from a longjmp
call. It then shoves the address of that machine basic block into the correct
place in the function context so that the EH runtime will jump to it directly
instead of having to go through a compare-and-jump-to-the-dispatch bit. This
should be more efficient in the common case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141031 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
5cd5ac6ad455880395e34ac647f1e962a83763a0 03-Oct-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for VMRS/FMSTAT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141025 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
2bfaf521aed6d486b2d80dbf12b84b456100cb47 01-Oct-2011 Chad Rosier <mcrosier@apple.com> Revert r140924 "Attempt to fix dynamic stack realignment for thumb1 functions."
to appease nightly testers. Not quite there yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140953 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1FrameLowering.cpp
2e6b97bbf86d0825a060e190189fae7f884c79c9 01-Oct-2011 Bill Wendling <isanbard@gmail.com> No one should be using the method directly. Assert if they do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140947 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
405ca137a1bf5b08fbda3ba086fb013537ce8662 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Add a convenience method to tell if two things are equal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140946 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
3320f2a3bfd4daec23ba7ceb50525140cc6316da 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the ARMConstantPoolMBB class to handle the MBB values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140943 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
9c18f51daaf89b9c706aa0557bede2cbb0debb69 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Add ARMConstantPoolMBB to hold an MBB value in the constant pool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140942 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
14a1a6b018c87bcf75cf5b430623d573fbed8905 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140941 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
9aca75c4f8249abf8ba2e558bbd1ae7cdfc6b81f 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Remove now dead methods and ivar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140940 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
fe31e673506ef9a1080eaa684b43b34178c6f447 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Use the new ARMConstantPoolSymbol class to handle external symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140939 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
ff4a8023ecf328047c8f98c7f42bf5e8b46b2f11 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Add an ARMConstantPool class for external symbols. This will split out the support for external symbols from the base class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140938 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
3f4e4592c3da4d69478ca37d17cb1d6c7024ec50 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Remove now dead methods and ivar from ARMConstantPoolValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140937 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
5bb779976a7d8e48408051ec2289fe69206dc072 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Switch over to using ARMConstantPoolConstant for global variables, functions,
and block addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140936 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMFastISel.cpp
RMISelLowering.cpp
3e944e38ea2d7585d2ccbf1557746d6cf7132b23 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Some more refactoring.

* Add a couple of Create methods to the ARMConstantPoolConstant class,
* Add its own version of getExistingMachineCPValue, and
* Modify hasSameValue to return false if the object isn't an ARMConstantPoolConstant.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140935 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
029e93888d2ce07f4a81d2a927fd2e3cfe673afd 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Add a Create method that accepts 'kind' and 'pcadj' arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140934 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
f2b76aae2beec4780c271984070ad15a07bd2d50 01-Oct-2011 Bill Wendling <isanbard@gmail.com> Refactoring: Separate out the ARM constant pool Constant from the ARM constant
pool value.

It's not used right now, but will be soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140933 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
52490411259ccc34b8c59f3532e78442a46fffd7 01-Oct-2011 Chad Rosier <mcrosier@apple.com> Attempt to fix dynamic stack realignment for thumb1 functions. It is in fact
useful if an optimization assumes the stack has been realigned. Credit to
Eli for his assistance.
rdar://10043857

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140924 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameLowering.cpp
humb1FrameLowering.cpp
c8e2bb68bbc4a71cc10084c8f89565b9f05e12ef 01-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Store sub-class lists as a bit vector.

This uses less memory and it reduces the complexity of sub-class
operations:

- hasSubClassEq() and friends become O(1) instead of O(N).

- getCommonSubClass() becomes O(N) instead of O(N^2).

In the future, TableGen will infer register classes. This makes it
cheap to add them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140898 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f391e9f696183a8dfb6b0d1e791687a520552f85 01-Oct-2011 Jim Grosbach <grosbach@apple.com> Correct for my over-eager delete finger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140892 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
d98f838284b7c539f274bb21820b2df3588a295e 30-Sep-2011 Bill Wendling <isanbard@gmail.com> Constify 'isLSDA' and move a method out-of-line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140868 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
6f09fcf5dae14d68ec9f8731b8c91c04868532e2 30-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM Darwin default relocation model is PIC.

This matches clang, so default options in llc and friends are now closer to
clang's defaults.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140863 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
98602ac9a99c5243a9e1abdb0e72dd326ec4958d 30-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM Fixup valus for movt/movw are for the whole value.

Remove an assert that was expecting only the relevant 16bit portion for
the fixup being handled. Also kill some dead code in the T2 portion.

rdar://9653509


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140861 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
4ebbf7b8a8e80532bd2ddf7209e62689c1698a96 30-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM fix encoding of VMOV.f32 and VMOV.f64 immediates.

Encode the immediate into its 8-bit form as part of isel rather than later,
which simplifies things for mapping the encoding bits, allows the removal
of the custom disassembler decoding hook, makes the operand printer trivial,
and prepares things more cleanly for handling these in the asm parser.

rdar://10211428



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140834 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMAddressingModes.h
e00897c5a91febe90ba21082fc636be892bf9bf1 30-Sep-2011 Bill Wendling <isanbard@gmail.com> Create a machine basic block in the constant pool and retrieve the symbol for an MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140824 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
4dd9b091cceaa62f72ed8370f8a946fbe474d8a2 30-Sep-2011 Bill Wendling <isanbard@gmail.com> Support creating a constant pool value for a machine basic block.

This is used when we want to take the address of a machine basic block, but it's
not associated with a BB in LLVM IR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140823 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
13f4a6c940d00f0d0545ed309a4566279f20dccb 29-Sep-2011 NAKAMURA Takumi <geek4civic@gmail.com> Target/ARM: Unbreak! CMake! Build!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140774 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
adcb634d85b1372f66dbafe24c026645bc3d447a 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete NEONMoveFix, now unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140773 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
MakeLists.txt
EONMoveFix.cpp
8bb3d3cb30df06bdcb3ef5a208e3e59f4eeb4868 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use ExecutionDepsFix instead of NEONMoveFix.

This enables NEON domain tracking across basic blocks, but should
otherwise do the same thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140772 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMTargetMachine.cpp
3511cedf36d0473292b8e8dca0b4eb7576e1064c 29-Sep-2011 Bill Wendling <isanbard@gmail.com> Move to ISelLowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140754 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMSjLjLoweringPass.cpp
RMTargetMachine.cpp
9b88d2d7827d19ef05d3f11faf56e4f28aaa7072 29-Sep-2011 Evan Cheng <evan.cheng@apple.com> Tighten a ARM dag combine condition to avoid an identity transformation, which
ends up introducing a cycle in the DAG.

rdar://10196296


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140733 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b18abd077e168f38acb1633c4101fbe3c8a18e41 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Perform the lowering only if there are invokes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140719 91177308-0d34-0410-b5e6-96231b3b80d8
RMSjLjLoweringPass.cpp
39689c81542df0f40bec72464429b21012708efa 28-Sep-2011 Bill Wendling <isanbard@gmail.com> Ahem...actually *add* the ARMSjLjLowering pass to the pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140718 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMMCTargetDesc.cpp
833217bfb97486b621dfc6c39cbd629622bb1e87 28-Sep-2011 Ted Kremenek <kremenek@apple.com> Unbreak CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140655 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
CTargetDesc/CMakeLists.txt
13fd601e0f1c6d8558c4c2b027dacd148f19e6af 28-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement TII::get/setExecutionDomain() for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140653 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
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
RMInstrThumb2.td
0481d29d49cc26a944d0d502360f044cb493a4b5 28-Sep-2011 Bill Wendling <isanbard@gmail.com> This is the start of the new SjLj EH preparation pass, which will replace the
current IR-level pass.

The old SjLj EH pass has some problems, especially with the new EH model. Most
significantly, it violates some of the new restrictions the new model has. For
instance, the 'dispatch' table wants to jump to the landing pad, but we cannot
allow that because only an invoke's unwind edge can jump to a landing pad. This
requires us to mangle the code something awful. In addition, we need to keep the
now dead landingpad instructions around instead of CSE'ing them because the
DWARF emitter uses that information (they are dead because no control flow edge
will execute them - the control flow edge from an invoke's unwind is superceded
by the edge coming from the dispatch).

Basically, this pass belongs not at the IR level where SSA is king, but at the
code-gen level, where we have more flexibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140646 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMSjLjLoweringPass.cpp
RMTargetMachine.cpp
5405d58e21402a8ba3aaaa580ca65155bee00443 27-Sep-2011 Jim Grosbach <grosbach@apple.com> Rename AddSelectionDAGCSEId() to addSelectionDAGCSEId().

Naming conventions consistency. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140636 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
8e695eb5fa8ad9d62f92ec8ca8a542ffe5fd1ab5 27-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use existing function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140615 91177308-0d34-0410-b5e6-96231b3b80d8
EONMoveFix.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
8f418b11d23c05850c37d2f2c1933fefcae25719 26-Sep-2011 David Meyer <pdox@google.com> PR11004: Inline memcpy to avoid generating nested call sequence. Un-XFAIL 2011-06-09-TailCallByVal and 2010-11-04-BigByval

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140516 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4d2a00147d19b17d382644de0d6a1f0d3230e0e4 24-Sep-2011 Owen Anderson <resistor@mac.com> Teach the Thumb2 AsmParser to accept pre-indexed loads/stores with an offset of #-0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140426 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
11ebe3d7c11521b2f092165ac712c9ea0f4c462f 24-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Also match negative offsets for addrmode3 and addrmode5.

Math is hard, and isScaledConstantInRange() always returned false for
negative constants. It was doing unsigned division of negative numbers
before casting back to signed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140425 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
31d485ec9a2afcf83c5354061568b4280d61b574 23-Sep-2011 Owen Anderson <resistor@mac.com> Reapply r140412 (Thumb2 reg-reg loads cannot target SP or PC), with invalid testcases updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140415 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
df0caeb6eca5c3424b4ccef5f489708392450982 23-Sep-2011 Owen Anderson <resistor@mac.com> Revert r140412. This affects more instructions than intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140413 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
d2560565810d40afea87f2dfbe51e125d0dc80ab 23-Sep-2011 Owen Anderson <resistor@mac.com> Thumb2 register-shifted-register loads cannot target the PC or the SP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140412 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
519020adf1cf57e2e93cc4fd49c385c47f7ff0f7 21-Sep-2011 Owen Anderson <resistor@mac.com> These do not need to be conditional on the presence of CommentStream, as they have a fallback path now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140267 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
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
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
e23dc9c0ef50b0a1934c04c1786f3a0478d62f41 21-Sep-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140227 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
317eaf19937813d630166bfec7b933a98ea89aa5 21-Sep-2011 Owen Anderson <resistor@mac.com> In the disassembler C API, be careful not to confuse the comment streamer that the disassembler outputs annotations on with the streamer that the InstPrinter will print them on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140217 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
0d18174f0f138e98fcb8348b735a90add45428b8 20-Sep-2011 Evan Cheng <evan.cheng@apple.com> Fix a bug introduced during refactoring a couple of months ago. Cortex-M3 does not support Thumb2 dsp instructions. rdar://10152911.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140181 91177308-0d34-0410-b5e6-96231b3b80d8
RM.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
RMInstrInfo.td
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
3af7a67629292840f0dbae8fad4e333b009e69dd 20-Sep-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140133 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
6053cd956fa6c781a4ee05cbc99ab15db3cf3d13 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for USAX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140119 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
ab3bf97fe029e3ce6834b54c4c5a647c0b665546 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for UQASX/UQSAX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140111 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
abb8aacef279a468c4ee9e111a5a95064f3de4ff 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb1 convenience aliases for disassembler round-trip testing. CPS instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140108 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
26215425da200a7b4695b78521a7677397849ad1 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb CPS definition is not disassembler only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140106 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
d9346fbb06d64266c2fe46edef7a15cb9af7e7e8 20-Sep-2011 Owen Anderson <resistor@mac.com> tMOVSr is not allowed in an IT block either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140104 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
9f666b5f2e4a5e94cd667e5be0c5d513dd64ea67 20-Sep-2011 Owen Anderson <resistor@mac.com> CPS instructions are UNPREDICTABLE inside IT blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140102 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
d5d0e81a4bec76a56a1e7b2326ed12bfcbcab9b9 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for UMAAL/UMLAL/UMULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140095 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6729c48b940df5c141eec6375d14544cdbb2ed3f 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for UHASX/UHSAX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140088 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4032eaf98c63b0fb1f2418a1cdc56b72bc76c329 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for UASX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140085 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
04c7877894492d6e8aa45567988cd7de100589d8 20-Sep-2011 Owen Anderson <resistor@mac.com> Thumb2 TBB and TBH instructions are only allowed at the end of IT blocks, not in the middle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140079 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrThumb2.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
fb12f35545481e8b42bd547bc37d220ffee77f86 19-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM asm parsing should handle pre-indexed writeback w/o immediate.

For example, 'ldrb r9, [sp]!' is odd, but valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140035 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ecd1c557904815e568258fc5420de479589b0a93 19-Sep-2011 Owen Anderson <resistor@mac.com> Handle STRT (and friends) like LDRT (and friends) for decoding purposes. Port over additional encoding tests to decoding tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140032 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
cb775519279cd1471c490eb5bf4e3ce663fcdc7d 17-Sep-2011 Owen Anderson <resistor@mac.com> Bitfield mask instructions are unpredictable if the encoded LSB is higher than the encoded MSB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139972 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
8b22778431cdeb112366ed5dc6283b3a7af19018 17-Sep-2011 Owen Anderson <resistor@mac.com> Fix bitfield decoding based on Eli's feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139969 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
e4f2df945a69e70f8e045baea3a14f3cdc076554 17-Sep-2011 Owen Anderson <resistor@mac.com> Thumb2 pre-indexed loads/stores use the restricted GPR set for Rt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139965 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
89db0f690c3238544e59ea3bf2b7a0d6bc8a6544 17-Sep-2011 Owen Anderson <resistor@mac.com> Fix disassembly of Thumb2 BFI instructions with bit range of [0, 32).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139964 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
705b48ff860e7484f0adee88362dbe1936ae936b 16-Sep-2011 Owen Anderson <resistor@mac.com> Fix disassembly of Thumb2 LDRSH with a #-0 offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139943 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
50bd470d85c63860f887b7c3e5724c9fd43ef3a2 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SSAX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139929 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.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
RMInstrThumb2.td
3443ed525a3bce98bacabb5aa8e67bee6def3b09 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SMMULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139921 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
db7e2e59dde94cfab4246ae694dd13295940fd62 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Kill some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139904 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fb9cffea4a650d7f60d2c24741656c52c2185945 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139903 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
837fc5e9d5138ed48a74a672dc4c1525e5975ce8 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SMLAL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139902 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
98c5ddabca1debf935a07d14d0cbc9732374bdb8 16-Sep-2011 Owen Anderson <resistor@mac.com> Don't attach annotations to MCInst's. Instead, have the disassembler return, and the printer accept, an annotation string which can be passed through if the client cares about annotations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139876 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
c075d45364190dfe06eda8aa93b6856d4f55f107 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SHASX/SHSAX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139870 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
74bf18cceaa4d83c816ffda04592c00a16de60c4 16-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Minor cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139869 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7cc156647ff448f03898b3d80ecdc22d46430b57 16-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Use a more efficient lowering for Unordered/Monotonic atomic load/store on Thumb1.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139865 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrThumb.td
e4e4a93e9ec6040b6466bf067d5e02533471f093 15-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SASX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139843 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.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
RMInstrThumb2.td
ede042dc8d59ff48a48ef8e2271f2a7ee8324ba5 15-Sep-2011 Owen Anderson <resistor@mac.com> Add support for stored annotations to MCInst, and provide facilities for MC-based InstPrinters to print them out. Enhance the ARM and X86 InstPrinter's to do so in verbose mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139820 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.td
b6e9a83349474d348b401f02c58f4a1754181127 15-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM support the pre-UAL mnemonic 'qsubaddx' for 'qsax.'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139796 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.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
RMInstrThumb2.td
21a05e7017fa4056f3241f9c31afa4664c389c8e 15-Sep-2011 Jim Grosbach <grosbach@apple.com> ARMv7a has the PKH instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139753 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
e1d58a6556fe8b00d119373aeefbbecc9b86a1c5 15-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM tighten up the register classes for the PKH instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139748 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8adf62034a874adacff158e8adc9438cb3e67c01 15-Sep-2011 Owen Anderson <resistor@mac.com> Fix a crasher in Thumb2 MOV-immediate encoding for certain inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139747 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
34626acf7fb042c3a831e2f7dfb653ea79c7adec 14-Sep-2011 Owen Anderson <resistor@mac.com> Nested IT blocks are UNPREDICTABLE. Mark them as such when disassembling them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139736 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
64944f48a1164c02c15ca423a53919682a89074c 14-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for MUL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139735 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
c2d3164ab467bdfa8508b93177e69b99626cd8e2 14-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing for MOV in IT block.

Select the right 16 vs. 32 bit encoding in an IT block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139714 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d0588e2a2ed1f7570f13b78c2042855dc4afae10 14-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM fix assembly parser handling of ranges in register lists.

Clean up register list handling in general a bit to explicitly check things
like all the registers being from the same register class.

rdar://8883573


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139707 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d300b94e51cf8c91928a66478c387c1c3d76faab 14-Sep-2011 Jim Grosbach <grosbach@apple.com> Remove unnecessary scope resolution operator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139656 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
d7a2b3bea8e8e4965cd7654f3a7537aba6ad7870 13-Sep-2011 Jim Grosbach <grosbach@apple.com> There's only 16 regs legal in a register list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139637 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b04546ff5b1a7a03eec1076900c945223bf494cc 13-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up a few 80 column violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139636 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
humb1FrameLowering.cpp
8f310d978681b08e2e134a1d7b0433e43aa909f2 13-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139635 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b6b7f515e2b90c9f9b6cdd5b9648121f6ad2b3a1 13-Sep-2011 Owen Anderson <resistor@mac.com> Teach the Thumb ASM parser that BKPT is allowed in IT blocks, even though it is always executed unconditionally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139610 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
12c7e90d369b4605aac0ddbd252231beacb2aabb 13-Sep-2011 Owen Anderson <resistor@mac.com> Fix encoding of Thumb2 shifted register operands with RRX shifts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139606 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
CTargetDesc/ARMMCCodeEmitter.cpp
2d539691a1e4b9d61853aa99d1a5580dc88595db 13-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139559 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
fd92d2e106acfbf13ed29b5d15f3a690cd8699b2 12-Sep-2011 Owen Anderson <resistor@mac.com> Fix encoding of PC-relative LDRSHW with an immediate offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139537 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
a0737950233acc271e444b270498d4986b4d2d00 12-Sep-2011 Owen Anderson <resistor@mac.com> There's no need to add additional predicate operands when converting a tB to a tBfar now. Fixes nightly test failures on armv6 Thumb. <rdar://problem/10110404>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139531 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a3157b402695ef9d5f6a03e8e3afc5bddf3a3df7 12-Sep-2011 Owen Anderson <resistor@mac.com> Port more encoding tests to decoding tests, and correct an improper Thumb2 pre-indexed load decoding this uncovered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139522 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
921d01ae1ff4e1dad2daeed22f8259a7a520412f 10-Sep-2011 Owen Anderson <resistor@mac.com> LDM writeback is not allowed if Rn is in the target register list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139432 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
112fb73502d54dd7dd61ae2de24c92d4df181294 10-Sep-2011 Owen Anderson <resistor@mac.com> Fix an ambiguously nested if.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139431 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
cd4338fff5cc9427003766519bebcfa213b32d61 10-Sep-2011 Owen Anderson <resistor@mac.com> Fix buildbot breakage caused by r139415. I missed one instance of a manually create ARM::tB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139429 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMFrameLowering.cpp
RMISelLowering.cpp
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
468709e43dfff52f48af9ff411d461e22b6e2015 09-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for MLA and MLS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139399 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMCodeEmitter.cpp
RMISelLowering.cpp
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCCodeEmitter.cpp
441462f9328cc7fb86af74c9568a7f70b7bd1fbc 09-Sep-2011 Owen Anderson <resistor@mac.com> All conditional branches are disallowed in IT blocks, not just CBZ/CBNZ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139329 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
d2fc31b3f75700dc89305cb161f3bca7f1a39bef 09-Sep-2011 Owen Anderson <resistor@mac.com> Soft fail CBZ/CBNZ in the disassembler if they appear inside an IT block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139328 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMInstrFormats.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
170580e8f413271f665d78f349237c4bcaf9d8c4 08-Sep-2011 Owen Anderson <resistor@mac.com> Remove the "common" set of instructions shared between ARM and Thumb2 modes. This is no longer needed now that Thumb2 has its own copy of the STC/LDC instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139268 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
94f914e3fd4b040edd81abb5f455ed2b99e2572a 07-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for LDMDB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139251 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a5d585685493d85d5cb72b831a68ec747ae55a86 07-Sep-2011 James Molloy <james.molloy@arm.com> Second of a three-patch series aiming to fix MSR/MRS on Cortex-M. This adds predicate checking to the Disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139250 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
76ecc3d35b4d16afb016bb14e29e12802b968716 07-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for LDMIA.

Choose 32-bit vs. 16-bit encoding when there's no .w suffix in post-processing
as match classes are insufficient to handle the context-sensitiveness of
the writeback operand's legality for the 16-bit encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139242 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6de3c6f1a926f49cca2fd207ab4eeb6c35e0e068 07-Sep-2011 Owen Anderson <resistor@mac.com> Port more assembler tests over to disassembler tests, and fix a minor logic error that exposed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139240 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
b950585cc5a0d665e9accfe5ce490cd269756f2e 07-Sep-2011 James Molloy <james.molloy@arm.com> Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCTargetDesc.cpp
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
RMInstrThumb2.td
81d2e3901eed4bd70f551df8935c9ff224ccef6f 07-Sep-2011 Jim Grosbach <grosbach@apple.com> Better diagnostic location information for mnemonic suffices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139232 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.td
34c4485b7479a12b5ef1cb15d27e96277e8a499a 06-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Add mayLoad/mayStore markings to ARM 64-bit atomic pseudo-instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139179 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
28b77e968d2b01fc9da724762bd8ddcd80650e32 06-Sep-2011 Duncan Sands <baldrick@free.fr> Add codegen support for vector select (in the IR this means a select
with a vector condition); such selects become VSELECT codegen nodes.
This patch also removes VSETCC codegen nodes, unifying them with SETCC
nodes (codegen was actually often using SETCC for vector SETCC already).
This ensures that various DAG combiner optimizations kick in for vector
comparisons. Passes dragonegg bootstrap with no testsuite regressions
(nightly testsuite as well as "make check-all"). Patch mostly by
Nadav Rotem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139159 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
98447daa9559d5bf7816f084581b5ca073d316f6 06-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM .code directive should always go to the streamer.

Even if there's no mode switch performed, the .code directive should still
be sent to the output streamer. Otherwise, for example, an output asm stream
is not equivalent to the input stream which generated it (a dependency on
the input target triple arm vs. thumb is introduced which was not originally
there).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139155 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9b0e1e7a5b5a51fca3a86315a72d2bd49334436b 06-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Atomic pseudos don't use (as in read) CPSR. They clobber it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139148 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1fac6b50ea720d75fc2bf01a288e99f239869e90 05-Sep-2011 Nick Lewycky <nicholas@mxc.ca> Add a new MC bit for NaCl (Native Client) mode. NaCl requires that certain
instructions are more aligned than the CPU requires, and adds some additional
directives, to follow in future patches. Patch by David Meyer!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139125 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrInfo.td
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
7442a03dcc2ac7850a77ec7c639973d8dc6034ae 05-Sep-2011 Nick Lewycky <nicholas@mxc.ca> Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139122 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
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
RMInstrThumb2.td
a110988b391652e3f4f85cb709a3eeb81c8cdd84 03-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding of B instruction.

Tweak handling of IT blocks a bit to enable this. The differentiation between
B and Bcc needs special sauce.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139049 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4136d23c4805c5403a3521bf03fbfeee75b9216b 03-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Don't fast-isel for atomic load/store; some cases require extra handling missing from fast-isel.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139044 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrThumb2.td
8e0c7697fd9b9354856074efc06eea9f6d80015c 02-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139024 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMExpandPseudoInsts.cpp
RMFrameLowering.cpp
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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.td
a1c110045a284190955f28b8f308ffb365cc2eda 02-Sep-2011 Owen Anderson <resistor@mac.com> Merge the ARM disassembler header into the implementation file, since it is not externally exposed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138982 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
a6804444e874b27aee5921d4c6049df573c5e249 02-Sep-2011 Owen Anderson <resistor@mac.com> Fix 80 columns violations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138980 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
36a16015ac108e2f0dd2d6d96a6d364bc74c50d7 02-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't drop alignment info on local common symbols.

- On COFF the .lcomm directive has an alignment argument.
- On ELF we fall back to .local + .comm

Based on a patch by NAKAMURA Takumi.

Fixes PR9337, PR9483 and PR10128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138976 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCAsmInfo.cpp
7df496d2ad1ecbc86d454a5cea2ae3e0928197ee 02-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Null-initialize to shut up -Wuninitialized warnings.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138974 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2f25d9b9334662e846460e98a8fe2dae4f233068 01-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM 'rscs' mnemonic is carry-setting 'rsc', not 'rs' with a 'cs' condition code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138952 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c047dcade506a5acaccb1548cb83a3f85f52d71d 01-Sep-2011 James Molloy <james.molloy@arm.com> Fix up r137380 based on post-commit review by Jim Grosbach.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138948 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
7f17b5a483ea358f2b9e3958f16cf34d75d5b4da 01-Sep-2011 Owen Anderson <resistor@mac.com> t2Bcc is allowed to have a predicate without a preceding IT instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138946 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
dd1e7517b5bdda245c907f7e36350ef862be2571 01-Sep-2011 Chad Rosier <mcrosier@apple.com> Fixup for functions that return a bool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138918 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
de98273189700c1c66f06bcfbcc481cf481a8dee 01-Sep-2011 Jim Grosbach <grosbach@apple.com> Static relocation model Thumb jump table interworking.

Make sure the low bit of the PC is set when loading an address directly
for jump tables in static relocation model.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138912 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
c075510e43f768e79f0d66374f4d60529c4d3d85 31-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 t2Bcc should encode as t2B when condition is 'always'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138898 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
721cb1fde07423fd1905338d443172a8028ad634 31-Aug-2011 Owen Anderson <resistor@mac.com> Fix encoding for tBcc with immediate offset operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138889 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
d84192fe4f6495e43ee0ff2ac591c14ba36e1e9d 31-Aug-2011 Owen Anderson <resistor@mac.com> When performing instruction selection for LDR_PRE_IMM/LDRB_PRE_IMM, we still need to preserve the sign of the index. This fixes miscompilations of Quicksort in the nightly testsuite, and hopefully others as well.
<rdar://problem/10046188>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138885 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b80ab8e369d13673c7fec81f07d1c9718c6eec7b 31-Aug-2011 Jim Grosbach <grosbach@apple.com> Remove FIXME. Thumb2 MOV instruction will use separate custom tricks.

When we want encoding T3 (the wide encoding), we can explicitly check for
that and twiddle the CanAcceptCarrySet accordingly. For now, just correctly
handle encodings T1 and T2 when in Thumb2 mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138879 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
559c277aa9242dd5b32d2f2ccc353d938f886ee9 31-Aug-2011 Owen Anderson <resistor@mac.com> Fix roundtripping of Thumb BL/BLX instructions with immediate offsets instead of labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138874 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
c9a9b442853ee086492d6ad1384a2de2fea9b43b 31-Aug-2011 Jim Grosbach <grosbach@apple.com> tBcc is OK to be predicated in Thumb2 outside of IT blocks (obviously).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138873 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
4d3f3294535a3b622c715f2d9675d4f3e86c3378 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> 64-bit atomic cmpxchg for ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138868 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
0f3abd8d68cfb4a0705d0a8140d7f7dce32f6e77 31-Aug-2011 Jim Grosbach <grosbach@apple.com> Tweak Thumb1 ADD encoding selection a bit.

When the destination register of an add immediate instruction is
explicitly specified, encoding T1 is preferred, else encoding T2 is
preferred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138862 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
61545829832ba0375249c42c84843d0b62c8f55f 31-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Put VMOVS widening under a command line option, off by default.

It appears that our use of the imp-use and imp-def flags with
sub-registers is not yet robust enough to support this.

The failing test case is complicated, I am working on a reduction.

<rdar://problem/10044201>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138861 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
3d93861c23b1bafa8ae609de94edd5740ffbf6b9 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Some minor cleanups for r138845.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138846 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2bdffe488203a08a2ca98548a157e0eaf39d4b2d 31-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Some 64-bit atomic operations on ARM. 64-bit cmpxchg coming next.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138845 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
21df36c57afc588c8073a070a47e3ba45fa87270 31-Aug-2011 Owen Anderson <resistor@mac.com> Fix encoding of CBZ/CBNZ Thumb2 instructions with immediate offsets rather than labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138837 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
a7710edd98d71a81c43f8e3889cf0c790885d1b8 31-Aug-2011 Owen Anderson <resistor@mac.com> Fix encoding of PC-relative Thumb1 LDR's when using immediate offsets instead of labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138835 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
391ac65377f2ad5e48a796e75120959e22430605 31-Aug-2011 Owen Anderson <resistor@mac.com> Fix encoding of Thumb1 B instructions with immediate offsets, which is necessary for round-tripping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138834 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
10096dbdef22a10a6a4444437c935ab428545525 30-Aug-2011 Owen Anderson <resistor@mac.com> Clean up whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138833 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.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
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMRegisterInfo.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
RMInstrThumb2.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
RMInstrThumb2.td
694e0ffb8aa3a8651003e448135aba0e663782bd 30-Aug-2011 Owen Anderson <resistor@mac.com> Add missing encoding information for some of the GPR<->FP register moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138780 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
f8e1e3e729473b8b2b7ee6134b6417976af84d05 30-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138773 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
acb274baacbc104d7ef3b826b443847f11548760 29-Aug-2011 Owen Anderson <resistor@mac.com> Apply the same fix for the change in LDR_PRE_IMM/LDRB_PRE_IMM operand encodings to the load-store optimizer that I applied to the instruction selector in r138758. Fixes ary3 from the nightly test suite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138766 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
1f267585104ee283872caef2a3f7b1cccb9ec042 29-Aug-2011 Owen Anderson <resistor@mac.com> Specify an additional fixed bit in the PLD/PLDW/PLI register-register encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138760 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c4e16de7652128545c252affa357c3a105ed59a3 29-Aug-2011 Owen Anderson <resistor@mac.com> addrmode_imm12 and addrmode2_offset encode their immediate values differently. Update the manual instruction selection code that was encoding them the addrmode2 way even though LDR_PRE_IMM/LDRB_PRE_IMM had switched to addrmode_imm12. Should fix a number of nightly test failures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138758 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
0da10cf44d0f22111dae728bb535ade2283d976b 29-Aug-2011 Owen Anderson <resistor@mac.com> Improve handling of #-0 offsets for many more pre-indexed addressing modes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138754 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
4db5acaf48c119b2bb7ad93b10dfcfe8b58dcfdb 29-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Expand ATOMIC_LOAD and ATOMIC_STORE for architectures I don't know well enough to fix properly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138751 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
07700d486ec790327723d2a81fe9c66b2fb52016 29-Aug-2011 Owen Anderson <resistor@mac.com> Update the load-store optimizer for changes to the operands on LDR_PRE_IMM and LDRB_PRE_IMM in r138653.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138746 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
63553c77cd1cf3b204d955fb65350db087aaff1d 29-Aug-2011 Owen Anderson <resistor@mac.com> Add support for parsing #-0 on non-memory-operand immediate values, and add a testcase that necessitates it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138739 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2753ae314f656eab6d42c918469ce4ebf422cee5 27-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Silence GCC warnings and make an array const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138706 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f1eab597b2316c6cfcabfcee98895fedb2071722 27-Aug-2011 Owen Anderson <resistor@mac.com> Improve encoding support for BLX with immediat eoperands, and fix a BLX decoding bug this uncovered.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138675 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
d7568e1c355f5e364eddafc15c6d5553559f32a5 27-Aug-2011 Owen Anderson <resistor@mac.com> Correct encoding of BL with immediate offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138673 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
4af54a461fad6c98df72dd18e607bfb32bfc486f 27-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing tweak for pldw.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138669 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9f7e8319947c65d9aef2a0f0984557c3b3a20656 26-Aug-2011 Owen Anderson <resistor@mac.com> Spelling fail.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138667 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
2b568fb3ce0fa7a7ff3a01c83a0d04765214275c 26-Aug-2011 Owen Anderson <resistor@mac.com> Fix ARM codegen breakage caused by r138653.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138657 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9ab0f25fc194b4315db1b87d38d4024054120bf6 26-Aug-2011 Owen Anderson <resistor@mac.com> invalid-LDR_PRE-arm.txt was already passing, but for the wrong reasons. We were failing to specify enough fixed bits of LDR_PRE/LDRB_PRE, resulting in decoding conflicts. Separate them into immediate vs. register versions, allowing us to specify the necessary fixed bits. This in turn results in the test being decoded properly, and being rejected as UNPREDICTABLE rather than a hard failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138653 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
1af7f7291d0689e2d58f900c9b5ecaddec56caa1 26-Aug-2011 Owen Anderson <resistor@mac.com> Update for feedback from Jim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138642 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
86ce852a15f0c66601dcaf55644d8c4ec268906f 26-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> ARMDisassembler: Always return a size, even when disassembling fails.

This should fix PR10772.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138636 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
96425c846494c1c20a4c931f4783571295ab170c 26-Aug-2011 Owen Anderson <resistor@mac.com> Support an extension of ARM asm syntax to allow immediate operands to ADR instructions. This is helpful for disassembler testing, and indeed exposed a disassembler bug that is also fixed here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138635 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
9bd655dcde1cfa1b97014e2d8e4f9845f7d474bb 26-Aug-2011 Owen Anderson <resistor@mac.com> Fix PR10755 by checking for invalid predicate codes from UNPREDICTABLE t2IT instructions when decoding their successors.
This is the last disassembly crash detected by exhaustive Thumb2 instruction space. Major thanks to Chandler Carruth for making this kind of exhaustive testing possible.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138625 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
b210cbf692f9b5f862557f399e914059e4cb77ee 25-Aug-2011 Nick Lewycky <nicholas@mxc.ca> Remove stray fullstop.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138589 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
99906830e82cf70dbcbed22237c7bd24f9d9ffdb 25-Aug-2011 Owen Anderson <resistor@mac.com> Port over additional encoding tests to decoding tests, and fix an operand ordering bug this exposed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138575 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
b9ca5124f8a5d593f57cbd0566867578a51d7055 25-Aug-2011 Andrew Trick <atrick@apple.com> ARM fix for missing implicit operands on ldmia_ret.

rdar://10005094: miscompile of 176.gcc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138568 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
51972da57615d7d31372dd1fef120333ef2d799c 25-Aug-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138566 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
0c49ac05cd2374a99a3126ebe6c8370490a73ca5 25-Aug-2011 Jim Grosbach <grosbach@apple.com> Explicitly disallow predication in Thumb1 assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138562 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
77eaaf0a0c37a1b01d73e0b7828081b185997572 25-Aug-2011 Evan Cheng <evan.cheng@apple.com> Hide -global-merge option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138540 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
b8cfe4ff411d92b150ce7ec6ec3568ad187dd517 25-Aug-2011 Evan Cheng <evan.cheng@apple.com> Add a command line option to disable global merge pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138536 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
0f660260e69e9c6cb6662c14abfc67b8d7b39a40 25-Aug-2011 Evan Cheng <evan.cheng@apple.com> Remove a out-of-place comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138534 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
b9d3ff872908bcf648b826c1c48db2cacd813b95 25-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM asm backend initialize isThumbMode based on target triple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138501 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
4d23e99d2a272a4de06ee31eee6d8e501809a573 25-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb .n mnemonic qualifiers can be ignored for now.

We'll need to pay attention to them when we start getting more serious about
the details of parsing thumb2 assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138500 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f69c80403620ef38674e037ae2664f1bbe5a4f3c 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding for SUB (SP minu immediate).

Fix FiXME in test file. Remove FIXME for SUB (SP minus register) since that
form is Thumb2 only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138494 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
12a1e3bbcbd4e8f740c8304379001d1e6731561c 24-Aug-2011 Owen Anderson <resistor@mac.com> Be careful not to walk off the end of the operand info list while updating VFP predicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138492 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
72f39f8436848885176943b0ba985a7171145423 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding support for ADD SP instructions.

Fix the test FIXME and add parsing support for the ADD (SP plus immediate)
and ADD (SP plus register) instruction forms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138488 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
df9ce6bbc5b66c3c4d30c2f32b6f17c690cfa004 24-Aug-2011 Jim Grosbach <grosbach@apple.com> When printing Thumb1 NOP ('mov r8, r8'), make sure to print the predicate.

rdar://10015134

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138467 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
f95aaf951b628621c9c74bed6c450b8a52a1ae1e 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Add missing explicit writeback operand to tSTMIA_UPD.

rdar://10014745

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138457 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
3e74d6fdd248e20a280f1dff3da9a6c689c2c4c3 24-Aug-2011 Evan Cheng <evan.cheng@apple.com> Move TargetRegistry and TargetSelect from Target to Support where they belong.
These are strictly utilities for registering targets and components.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138450 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetMachine.cpp
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
CTargetDesc/ARMMCTargetDesc.cpp
argetInfo/ARMTargetInfo.cpp
c7e0bb2325fac6b41f46e8b383119cc0da64a45b 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb add SP assembly syntax fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138448 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
5b81584f7403ffdb9cc6babaaeb0411c080e0f81 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb1 ADD/SUB SP instructions are predicable in Thumb2 mode.

Add the predicate operand to the instructions. Update the back end
accordingly where the instructions are used. Restrict the SP operands
to actually only be SP, as otherwise these break assembly parsing for the
normal instruction variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138445 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMInstrThumb.td
RMRegisterInfo.td
humb1FrameLowering.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
humb2SizeReduction.cpp
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
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
5aa29a0cffc499331a2a24a03eb55643dace1d8d 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Move ARM frame-unwinding EHABI handling a touch earlier.

It should go before AsmPrinter MC pseudo expansion since it's based on
MachineInstr, not MCInst. Otherwise any frame related pseudo instructions
may be missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138386 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d04f6a581ce06ef1cd5fe376088347ad0246e07d 23-Aug-2011 Jim Grosbach <grosbach@apple.com> [SU]XT[BH] are only available on ARMv6 and up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138373 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7801136b95d1fbe515b9655b73ada39b05a33559 23-Aug-2011 Evan Cheng <evan.cheng@apple.com> Some refactoring so TargetRegistry.h no longer has to include any files
from MC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138367 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
ec8b866434d530dee5b885e9db8da86db053c9ff 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding for SVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138360 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
803b1aa8ef00698de62181b9205cfcc0ce6b0ceb 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding for tSTRspi.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138348 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
1e84f19337d44c04e74af4fb005550b525ef60e5 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding for STM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138345 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
aa875f8c6fdf3a7a26ccc381cf8ecd2b69678dad 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Factor low reg checking into a helper function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138344 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
82265a2c72b0f2d0daeab4985c9509d8405f51ef 23-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding of Thumb2 prefetch instructions, which account for all the remaining Thumb2 decoding failures found by randomized testing so far.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138341 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrFormats.td
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
cefe4c9c483d8a50ff13f36881090ab44ec67f13 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Clean up Thumb load/store multiple definitions.

There is no non-writeback store multiple instruction in Thumb1, so
don't define one. As a result load multiple is the only instantiation of
the multiclass, so refactor that away entirely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138338 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrThumb.td
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.td
04d55f1905748b0d66655e2332e1a232a3f665f4 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding for SBC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138311 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
934755ac040c516eac7fdd974e87590543acd16a 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding for RSB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138308 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8e1e60b5f8fd9c6233bdb8814ee40887555a0594 23-Aug-2011 Owen Anderson <resistor@mac.com> Reject invalid imod values in t2CPS instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138306 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
isassembler/ARMDisassembler.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
86b5d2b02d2a7c673792753ab64b6396bd4e2ffa 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Revert r138278 now that r138289 has fixed the root issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138299 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb2.td
6dcafc0d0b33bebcac28539257a9a5b250542f6a 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Improve error checking for tPUSH and tPOP register lists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138295 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
7260c6a4ea19f5eb94068296c1c8e01a99f17a01 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assemmbly parsing diagnostic improvements for LDM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138287 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5e8701002bc53672a4e6a902e385810abe2cf911 23-Aug-2011 Jim Grosbach <grosbach@apple.com> Temporarilly mark tMUL as not commutable.

It's not playing nicely in the coalescer with the tied operand. Disable
commutability for now while we figure out the deeper fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138278 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
838130e3b97c2fa77fb9b89eabbdf149d8e519f1 22-Aug-2011 Owen Anderson <resistor@mac.com> Provide operand encoding information for half-precision VCVT instructions. Found by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138273 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
357ec6850be0dff0038ea3a14f16066705284c0b 22-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding of VMOVSRR and VMOVRRS, which account for the overwhelming majority of decoder crashes detected by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138269 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
isassembler/ARMDisassembler.cpp
11e03e7c2d0c163e54b911ad1e665616dc0bcc8c 22-Aug-2011 Jim Grosbach <grosbach@apple.com> Tighten up ARM reglist validation a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138258 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2cbf2104507c855850b610ed910536058aa0c6ee 22-Aug-2011 Owen Anderson <resistor@mac.com> Fix another batch of VLD/VST decoding crashes discovered by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138255 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
f1c8e3e70e222365b84f4cb7e87396ee85820711 22-Aug-2011 Owen Anderson <resistor@mac.com> Correct writeback handling of duplicating VLD instructions. Discovered by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138251 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
b113ec55e897c85fda606409c1eedec4f89ec53f 22-Aug-2011 Owen Anderson <resistor@mac.com> Fix an incorrect shift when decoding SP-relative stores in Thumb1-mode. Add more tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138246 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
fea95c6bade86fcfa5bd07efdda9bd902f53be8c 20-Aug-2011 Chad Rosier <mcrosier@apple.com> Remove the VMOVQQ pseudo instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138177 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
bdc18572bef8408716b54d2a4956e6627fd5f40a 20-Aug-2011 Chad Rosier <mcrosier@apple.com> Remove VMOVQQQQ pseudo instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138174 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ac3656ed7a67eaacb8d2c62e1841ed4df799f72a 20-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add <imp-def> operands to QQ and QQQQ stack loads.

This pleases the register scavenger and brings
test/CodeGen/ARM/2011-08-12-vmovqqqq-pseudo.ll a little closer to
working with -verify-machineinstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138164 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
e5038e191db82d4d92fdeec1b5bce5cae21f6d8f 20-Aug-2011 Chad Rosier <mcrosier@apple.com> VMOVQQQQs pseudo instructions are only created by ARMBaseInstrInfo::copyPhysReg.
Therefore, rather then generate a pseudo instruction, which is later expanded,
generate the necessary instructions in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138163 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
0780b6303b99441fef04340b7a083006484f4743 20-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing and encoding support for NOP.

The irony is not lost that this is not a completely trivial patchset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138143 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
2c3f70e5d4b4f179f21ed1b2ba14674f9d65c9b0 20-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for NEG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138131 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3a244bd8b335a8747dd032ad1f6b187415ad6958 20-Aug-2011 Jim Grosbach <grosbach@apple.com> Fix NEG alias

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138125 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7a010694209ce46c4f415c0b42c3bc03dc094a5c 20-Aug-2011 Jim Grosbach <grosbach@apple.com> Be more lenient on tied operand matching for MUL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138124 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7a32fa1c7825285afb5e570bb9c7a4311e6d6d79 20-Aug-2011 Jim Grosbach <grosbach@apple.com> Update tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138116 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
88ae2bc6d53bbf58422ff74729da18a53e155b4a 20-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for MUL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138108 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
4ec6e888ec6d12b5255afd685b05c8fee1f7fc73 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for MOV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138076 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
smParser/ARMAsmParser.cpp
73a1c2cea181a4463effaab8612c78cf11b83336 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Tab character.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138072 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
b86e2dbf61425b195ac5c281e480d9f4414377af 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Tab characters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138066 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
1b7b68f08776dc9553399dc3b4e7ab54e5e596c0 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LSL(immediate).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138063 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
05b01567349dc6c98f9e68c1d4a639aca7ad5ac4 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDRSB and LDRSH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138061 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
38466309d5c8ce408f05567fa47aeaa3b5826080 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDRH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138060 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
48ff5ffe9e2a90f853ce3645b1b97ea7885eccf1 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDRB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138059 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
67b95f902a51b591b6178e370d23ffaca841275d 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDR(literal).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138052 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
ecd858968384be029574d845eb098d357049e02e 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDR(immediate) form T2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138050 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
2f7232efd5fdc72aaa5a446e11a868eea666a6bf 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Use helper function to check for low registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138048 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
60f91a3d9518617e29da18477ae433b8f0069304 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDR(immediate) form T1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138047 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
c6d7c653c9d4a54e62ac8da92518caa96d0a349c 19-Aug-2011 Jim Grosbach <grosbach@apple.com> Add explanatory comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138042 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
a67f14bf53737f9bb0afefa28e08c4aac6ec4804 19-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Make a bunch of symbols private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138025 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
78affc9ea1978d707b376180ec559b62fbf9ea05 19-Aug-2011 Owen Anderson <resistor@mac.com> STC2L_POST and STC2L_POST should be handled the same as STCL_POST/LDC_POST for the purposes of decoding all operands except the predicate.
Found by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138003 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
846dd95f87f62e2faa6092f99b521ecd9790121a 19-Aug-2011 Owen Anderson <resistor@mac.com> Fix the decoding of RFE instruction. RFEs have the load bit set, while SRSs have it unset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138000 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1dd56f05e1bc3e7f66f2b0de4b5ea3692136a77f 19-Aug-2011 Owen Anderson <resistor@mac.com> Remember to fill in some operands so we can print _something_ coherent even when decoding the CPS instruction soft-fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137997 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
14090bf2636edf5e46a2c12a312b1889f5335d7d 19-Aug-2011 Owen Anderson <resistor@mac.com> Improve handling of failure and unpredictable cases for CPS, STR, and SMLA instructions.
Fixes a large class of disassembler crashes found by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137995 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
93b3eff62322803a520e183fdc294bffd6d99bfa 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for LDM instruction.

Fix base register type and canonicallize to the "ldm" spelling rather than
"ldmia." Add diagnostics for incorrect writeback token and out-of-range
registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137986 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
0d1511c022e78e6d8769290b451b98a3b656de63 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for CMP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137963 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMInstrThumb.td
RMInstrThumb2.td
90b5a08e1ffc4a1c18f7fa964ca561fa4b03c314 18-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM Thumb blx instruction fixup has same data range as bl.

These fixups are handled poorly in general, and should have a single
contiguous range of bits per fixup type, but that's not how they're
currently organized, so for now in complex ones like for blx, we just tell the
emitter it's OK for the fixup to munge any bit it wants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137947 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
5f687decc84318b5997e38e7b2c540dde7af8141 18-Aug-2011 Jim Grosbach <grosbach@apple.com> 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137946 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
3ce23d3d87d1ca437acb65ac01fac1c486507280 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Add missing 'break'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137941 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2f815c0b50acc506a7bdcdfb63966c40a0d2e71b 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Remove extraneous newline from operand print method. PR10569.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137900 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
421993f428c01e264fdb0346a8bfcddd4d583f13 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Clean up patterns for Thumb1 system instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137897 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
395b453bed53a60c559b679eb92f75d0b140b307 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for B.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137891 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
00f5d982057574cf65a4a3f29548ff9fb0ecfbd0 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for ASR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137889 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c40578250d391069d2d81ecaab58a83f2667e96e 17-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137881 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMCodeEmitter.cpp
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCCodeEmitter.cpp
ef3bf64bf8f1e3147c78b772c6c57139403e4022 17-Aug-2011 Jim Grosbach <grosbach@apple.com> Fix predicate for imm1_32

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137865 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5a1cd045cd4220f84dae81ab2079e2272dfc51c1 17-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for ADR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137864 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
4372ca6fe4119d708d43d9c9ac3feafc7607952a 17-Aug-2011 Jim Grosbach <grosbach@apple.com> 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137857 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
8884148b8e8f19d5484e735618cf188cfa02c626 17-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137856 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
0aa38ab1fb53c457ce90390aed2659eb085709f0 17-Aug-2011 Owen Anderson <resistor@mac.com> Be more careful in the Thumb decoder hooks to avoid walking off the end of the OpInfo array.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137838 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
83e3f67fb68d497b600da83a62f000fcce7868a9 17-Aug-2011 Owen Anderson <resistor@mac.com> Allow the MCDisassembler to return a "soft fail" status code, indicating an instruction that is disassemblable, but invalid. Only used for ARM UNPREDICTABLE instructions at the moment.
Patch by James Molloy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137830 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
89e2aa6afd408f1b4c6b47c53bbf31d48463bcab 17-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb ADD(immediate) parsing support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137788 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smParser/ARMAsmParser.cpp
16280308ac6f20d9da06eafcc19e4a6777f49750 17-Aug-2011 Owen Anderson <resistor@mac.com> Separate out Thumb1 instructions that need an S bit operand from those that do not, for the purposes of decoding them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137787 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
isassembler/ARMDisassembler.cpp
194bd8982936c819a4b14335a4d08f28af8f3d42 17-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb parsing diagnostics for low-reg requirements on ADD and MOV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137779 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
smParser/ARMAsmParser.cpp
CTargetDesc/ARMBaseInfo.h
00c9a518886c4f2d1cd869c174c994c20a353906 16-Aug-2011 Jim Grosbach <grosbach@apple.com> Add missing exit for 'case'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137774 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3912b73c74dc9c928228504e9a23c577b57c4e12 16-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly parsing and encoding for ADD(register) instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137759 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d54b4e612aa5d2d76a62f4409f82bd409f9af297 16-Aug-2011 Jim Grosbach <grosbach@apple.com> Move some logic into a helper function and expand the commentary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137756 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
47a0d52b69056250a1edaca8b28f705993094542 16-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM thumb assembly parsing for arithmetic flag setting instructions.

Thumb one requires that many arithmetic instruction forms have an 'S'
suffix. For Thumb2, the whether the suffix is required or precluded depends
on whether the instruction is in an IT block. Use target parser predicates
to check for these sorts of context-sensitive constraints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137746 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
CTargetDesc/ARMBaseInfo.h
d0d3f7e01ff7f83575816f6e1d75aa2224ebc2cb 16-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM .align NOP padding uses different encoding pre-ARMv6.

Patch by Kristof Beyls and James Malloy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137723 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
ef2865a8eadffd7e346b9bc70c647578010b6afd 16-Aug-2011 Owen Anderson <resistor@mac.com> Specify a necessary fixed bit for VLD3DUP, and otherwise rearrange the Thumb2 NEON decoding hooks to bring us closer to correctness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137686 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
19cb7f491fbc7cb5d0bbd10e201f9d5093e6d4e5 16-Aug-2011 Jim Grosbach <grosbach@apple.com> MCTargetAsmParser target match predicate support.

Allow a target assembly parser to do context sensitive constraint checking
on a potential instruction match. This will be used, for example, to handle
Thumb2 IT block parsing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137675 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c537f3be0c4ff7030afcdcd9f55133ce68eef773 15-Aug-2011 Owen Anderson <resistor@mac.com> Enforce the constraint that Rt must be even on LDRD/STRD instructions in ARM mode. Update tests to reflect this fact.
Patch by James Molloy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137647 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
92be8ab6a410207a097a24dcbf2e2302f6634265 15-Aug-2011 Owen Anderson <resistor@mac.com> Remove dead classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137643 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
5df7ef6cdbdaaa6bf3bf12b959557a44fbf250a6 15-Aug-2011 Owen Anderson <resistor@mac.com> Fix incorrect encoding of UMAAL and friends. Patch by James Molloy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137641 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
305e046e539a2713190be6de5ffb3f57708ef45f 15-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding LDRSB and LDRSH in Thumb1 mode. Patch by James Molloy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137636 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7a2e1770ead7c2e3b7292ae466a41b560f3d272c 15-Aug-2011 Owen Anderson <resistor@mac.com> Fix problems decoding the to/from-lane NEON memory instructions, and add a comprehensive NEON decoding testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137635 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
isassembler/ARMDisassembler.cpp
8757a4c6aba86111bacc49879d1f1c260f4631d4 15-Aug-2011 Jim Grosbach <grosbach@apple.com> Update comment to reflect MC target machine refactor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137615 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
7dcd04abe0b0b1dbfb285faea2daece50f9aa502 13-Aug-2011 Bob Wilson <bob.wilson@apple.com> Expand VMOVQQQQ pseudo instructions.

Apparently we never added code to expand these pseudo instructions, and in
over a year, no one has noticed. Our register allocator must be awesome!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137551 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
10342123adec62151bf9060493dd13583c67ae52 13-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM STR_POST_IMM offset encoding fix in load/store optimizer.

Tidy up the code a bit and push the definition of the value next to the uses
to try to minimize this sort of issue from arising again while I'm at it.

rdar://9945172


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137525 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
4dfe220ad55e0f1e5edbf7cdd07f88497ddfdf25 12-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM expansion of pre-indexed store pseudos should maintain memoperands.

Partial fix for rdar://9945172.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137513 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0d09499cf3e2d927cdc53ec79895303ac12808ac 12-Aug-2011 Owen Anderson <resistor@mac.com> Fix some remaining issues with decoding ARM-mode memory instructions, and add another batch of tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137502 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
79628e92e1f903d50340d4cd3d1ea8c5fff63a87 12-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding of ARM-mode STRH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137499 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
6368119c251a0862b48fbafcd4d00430a7f6ea02 12-Aug-2011 Owen Anderson <resistor@mac.com> Specify fixed bit in the LDRBT encoding, which allows us to distinguish it from certain USAT16 encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137494 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7cdbf086e4676494fc6a5b26c169285ae0bb740b 12-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding of pre-indexed stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137487 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
3f3570a38be37ca18c545bd1b4c89604ecaf7e31 12-Aug-2011 Owen Anderson <resistor@mac.com> Separate decoding for STREXD and LDREXD to make each work better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137476 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
1f6a329f79b3568d379142f921f59c4143ddaa14 12-Aug-2011 Duncan Sands <baldrick@free.fr> Silence a bunch (but not all) "variable written but not read" warnings
when building with assertions disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137460 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
humb1RegisterInfo.cpp
857e1a7b3fcc848a6508f9205f22e8e0d293dcae 12-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM vector compare to zero instruction assembly parsing support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137389 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d30970fb6c269154176cb2ee09ed5b45b2bc6a2f 12-Aug-2011 Jim Grosbach <grosbach@apple.com> Remove no-longer-true comments. These are for the assembler, also.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137375 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
342ebd5f380637d965504dcc350f9d0d79bbe599 12-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM STRT assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137372 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
41ff834e91a7f56dab18fbd7cdc03895197a923f 12-Aug-2011 Owen Anderson <resistor@mac.com> Make the USAT16 operand decoder auto-generate-able.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137371 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
adf2b094cb66e6b3ca318cf5b92d0b5232a7d420 12-Aug-2011 Owen Anderson <resistor@mac.com> Add another accidentally omitted predicate operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137370 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
1fb6673bc2f0a404f4f914bf381c627402ac7c6b 12-Aug-2011 Owen Anderson <resistor@mac.com> Add missing predicate operand on SMLA and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137368 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
dd32ba337aab88c215108ca8bf4a0267fce1e773 12-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM load shifted register pre-index fix shift value asm parser encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137367 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
796d6b7602f0279b52ff5c105fb73fbdf444f030 11-Aug-2011 Owen Anderson <resistor@mac.com> Handle new register classes in Thumb2 mode. Should fix the ARM buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137364 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
05b0c9f41e7c6a091bacdfc1472f99ef204ee00e 11-Aug-2011 Owen Anderson <resistor@mac.com> Making SEL decodings auto-generate-able.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137363 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
89958d50c38022b367ca3367e6694b7cdf3ac483 11-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137359 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cbfc044acd722d14d0687c9cf099f3dca45e26d5 11-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding support for STREXD and LDREXD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137356 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
7b8f46cf9e31d730acc25be771462e2a6a1a1dfb 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM STRH assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137353 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
smParser/ARMAsmParser.cpp
508e1d3db536b736063385eb1f885b446a1385ca 11-Aug-2011 Owen Anderson <resistor@mac.com> Fix decoding for indexed STRB and LDRB. Fixes <rdar://problem/9926161>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137347 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
45251b370733b167d1d0640a027365f7208f7d10 11-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Remove unused template parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137345 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.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
RMInstrThumb2.td
14605d1a679d55ff25875656e100ff455194ee17 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM STRD assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137342 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
26d2f0ac919f6ae868fe901fd4ad64af6f92da4d 11-Aug-2011 Owen Anderson <resistor@mac.com> Continue to tighten decoding by performing more operand validation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137340 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
ade7d00f5afce5f79ca5c1eb1a854b777c8e0194 11-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137339 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
10348e70d567fb61f6c762d99e91e215c720ebd1 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM STRBT assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137337 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
548340c4bfa596b602f286dfd3a8782817859d95 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM STR(immediate) assembly parsing and encoding.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137331 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
71156a6e00d3dc4c531a421a76b3b6ee0ae7d0ab 11-Aug-2011 Owen Anderson <resistor@mac.com> Tighten decoding of addrmode2 instructions to reject more UNPREDICTABLE cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137325 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
2b7b238e843cbbe0682a3cc001fe514f4270a984 11-Aug-2011 Owen Anderson <resistor@mac.com> Tighten operand decoding of addrmode2 instruction. The offset register cannot be PC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137323 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
3dac0bec7e7874ffb378385b6160bd2117184ca9 11-Aug-2011 Owen Anderson <resistor@mac.com> Correct immediate range for shifter operands. Patch by James Molloy, with additional encoding fixes added by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137322 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
ae0bc5deaa30f1e20a6189e42ca412ba27ec7153 11-Aug-2011 Owen Anderson <resistor@mac.com> Improve error checking in the new ARM disassembler. Patch by James Molloy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137320 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
f6713916fb4504aab617f0e317689acd878cc37f 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM push of a single register encodes as pre-indexed STR.

Per the ARM ARM, a 'push' of a single register encodes as an STR,
not an STM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137318 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
f8fce711e8b756adca63044f7d122648c960ab96 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM pop of a single register encodes as post-indexed LDR.

Per the ARM ARM, a 'pop' of a single register encodes as an LDR,
not an LDM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137316 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
59999264e6cfc7f5d59c9a92c8cd9baaa53434f4 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM LDRT assembly parsing and encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137282 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
e15defc56c4a29c59256415db63d49e6b6379415 11-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137277 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
623a454b0f5c300e69a19984d7855a1e976c3d09 11-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM LDRH(immediate) assembly parsing and encoding support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137260 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
251bf25e7ee9702fed2a66deeb404ce473f7bac1 10-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM LDRD(register) assembly parsing and encoding.

Add support for literal encoding of #-0 along the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137254 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
53642c533564c41d9a85ad28efe19b12fc2305ce 10-Aug-2011 Jim Grosbach <grosbach@apple.com> Fix typo. Not quite sure how that slipped in there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137245 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2fd2b87ded53f6b87eb240c17d62a23fb4964ba0 10-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM LDRD(immediate) assembly parsing and encoding support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
8533ebad6f6e407215497ca50771f323058f5576 10-Aug-2011 Owen Anderson <resistor@mac.com> Add initial support for decoding NEON instructions in Thumb2 mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137236 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
isassembler/ARMDisassembler.cpp
fd9085dca374f9f67a5c416be8056eb5bb4cb831 10-Aug-2011 Owen Anderson <resistor@mac.com> Tabs --> spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137225 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
10cbaab7b774e187c99790292dc1ed64dee2b0f3 10-Aug-2011 Owen Anderson <resistor@mac.com> Cleanups based on Nick Lewycky's feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137224 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
e66ef2d5f54391e53d2c0febb1ef854d060716f0 10-Aug-2011 Owen Anderson <resistor@mac.com> Rewrite some ARM InstrInfo functions to be most accepting of arbitrary register subclasses. Hopefully this fixes some buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137223 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f5ade5d39abe5cb12a8202c604321d5992e4a168 10-Aug-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for the R and Q constraints.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137217 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
33e57515b173baf572398fafeffcf4644c2a7381 10-Aug-2011 Owen Anderson <resistor@mac.com> Push GPRnopc through a large number of instruction definitions to tighten operand decoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137189 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
c70c2cafe19d90ee0230cc4257772fe68567f06e 10-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Promote VMOVS to VMOVD when possible.

On Cortex-A8, we use the NEON v2f32 instructions for f32 arithmetic. For
better latency, we also send D-register copies down the NEON pipeline by
translating them to vorr instructions.

This patch promotes even S-register copies to D-register copies when
possible so they can also go down the NEON pipeline. Example:

vldr.32 s0, LCPI0_0
loop:
vorr d1, d0, d0
loop2:
...
vadd.f32 d1, d1, d16

The vorr instruction looked like this after regalloc:

%S2<def> = COPY %S0, %D1<imp-def>

Copies involving odd S-registers, and copies that don't define the full
D-register are left alone.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137182 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
de317f40f7a9962372adea162a12ec35a628efa1 10-Aug-2011 Owen Anderson <resistor@mac.com> Tighten operand checking of register-shifted-register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137180 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
c36481c4744cdbddec91dc3eca9245acaf2982da 10-Aug-2011 Owen Anderson <resistor@mac.com> Tighten operand checking on memory barrier instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137176 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
35008c2f8dcfe55960fe4efea3a26e526d437ad6 10-Aug-2011 Owen Anderson <resistor@mac.com> Tighten operand checking on CPS instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137172 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassembler.cpp
51c9805c4bcca635bc6a854e4a246ebd4258f512 10-Aug-2011 Owen Anderson <resistor@mac.com> Create a new register class for the set of all GPRs except the PC. Use it to tighten our decoding of BFI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137168 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.td
isassembler/ARMDisassembler.cpp
793b811c5057365d847b7f9ae326358e76facfe2 10-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> ARM Disassembler: sign extend branch immediates.

Not sure about BLXi, but this is what the old disassembler did.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137156 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
51157d22348fdbd4b7975877d5b58e53a6d5d3a2 09-Aug-2011 Owen Anderson <resistor@mac.com> Silence an false-positive warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137154 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
65e95d950d9a1344f0f59aae47f2b0c3490b6514 09-Aug-2011 Owen Anderson <resistor@mac.com> Don't generate the old-style disassembler in CMake builds either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137153 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
9bd7c2836eea4ba6484a1eabb38cd084f45fed94 09-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> The new ARM disassembler disassembles "bx lr" as a special BX_ret instruction so target specific analysis isn't needed anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137151 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
ad0d36b79ff6b13d0acb29d316517f55aab45f4d 09-Aug-2011 Owen Anderson <resistor@mac.com> Don't continue generating the old-style decoder file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137150 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
6cd5716f611b1acb8f4ce02f6953fc68a29fc237 09-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM fix typo in pre-indexed store lowering.

rdar://9915869


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137148 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e6afbabb637de11dd53b2983cdb3676db283565b 09-Aug-2011 Owen Anderson <resistor@mac.com> Attempt to fix CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137147 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
bd9091c18d85d6649763165c4951d7b5ff2e31a9 09-Aug-2011 Owen Anderson <resistor@mac.com> Tighten Thumb1 branch predicate decoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137146 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/CMakeLists.txt
isassembler/ThumbDisassemblerCore.h
akefile
719927a68f5b8ca34bacbeb7c970f281e27cbf63 09-Aug-2011 Renato Golin <renato.golin@arm.com> Emitting ARM build attributes and values as ULEB, rather than char.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137115 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
3148a654909e55e8511a1c23991bf0ae8d3f9204 09-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM parsing and encoding for LDRBT instruction.

Fix the instruction representation to correctly only allow post-indexed form.
Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137074 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
648f9a75fdbba228e89389c34a2b3f1ceecd06be 09-Aug-2011 Owen Anderson <resistor@mac.com> Thumb1 BL instructions encoding 22 bits of displacement, not 21.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137073 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
36ee0e640554b8cc6ad1658fc3049e05d9967160 08-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement isLoadFromStackSlotPostFE and isStoreToStackSlotPostFE for ARM.

They improve the verbose assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137069 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
09176e10dbe575b0f4c68803695c47ccb4b81f81 08-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM load/store label parsing.

Allow labels for load/store instructions when parsing. There's encoding
issues, still, so this doesn't work all the way through, yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137064 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMCodeEmitter.cpp
RMInstrThumb.td
RMInstrThumb2.td
CTargetDesc/ARMMCCodeEmitter.cpp
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
RMInstrThumb2.td
41ab14b725c8f2bb3e54553d0d7d96ff184786b1 08-Aug-2011 Benjamin Kramer <benny.kra@googlemail.com> Add MCInstrAnalysis class. This allows the targets to specify own versions of MCInstrDescs functions.

- Add overrides for ARM.
- Teach llvm-objdump to use this instead of plain MCInstrDesc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137059 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
0d6fac36eda6b65f0e396b24c5bce582f89f7992 06-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM load instruction shifted register index operands.

Parsing and encoding for shifted index operands for load instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136986 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f4fa3d6e463e88743983ccfa027a7555a8720917 05-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM indexed load assembly parsing and encoding.

More parsing support for indexed loads. Fix pre-indexed with writeback
parsing for register offsets and handle basic post-indexed offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136982 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
19dec207fcc0f04902b7f097b7771ba7abba43fb 05-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM refactor indexed store instructions.

Refactor STR[B] pre and post indexed instructions to use addressing modes for
memory operands, which is necessary for assembly parsing and is more consistent
with the rest of the memory instruction definitions. Make some incremental
progress on refactoring away the mega-operand addrmode2 along the way, which
is nice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136978 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
16578b50889329eb62774148091ba0f38b681a09 05-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM simplify the postidx_reg operand encoding.

The immediate portion of the operand is just a boolean (the 'U' bit indicating
add vs. subtract). Treat it as such.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136969 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
ca8c70b9536bf351ee92395dae6f99a59c011a3d 05-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM use a dedicated printer for postidx_reg operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136968 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
9a45008e917b8c1aef01ab717f0df254cdf1af44 05-Aug-2011 Bob Wilson <bob.wilson@apple.com> Add missing register constraint for some VLD3/VLD4 pseudo instructions.
<rdar://problem/9878189>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136962 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrFormats.td
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
039c2e19c4237fb484315a62e95222ac28640bb7 05-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for LDR instructions.

Enhance support for LDR instruction assembly parsing for post-indexed
addressing with immediate values. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136940 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
154c41dbbc06284efd56782a8bc137a25148918e 04-Aug-2011 Owen Anderson <resistor@mac.com> LDCL_POST and STCL_POST need one's-complement offsets, rather than two's complement offsets. Add an appropriate immediate type for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136896 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMAddressingModes.h
CTargetDesc/ARMMCCodeEmitter.cpp
0bc8bbb58dbab40396df064667d7061e16f442a8 04-Aug-2011 Owen Anderson <resistor@mac.com> Fix broken encoding of tCBNZ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136837 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
26689ac37ebec3b358588089415509285e558de9 03-Aug-2011 Eli Friedman <eli.friedman@gmail.com> New approach to r136737: insert the necessary fences for atomic ops in platform-independent code, since a bunch of platforms (ARM, Mips, PPC, Alpha are the relevant targets here) need to do essentially the same thing.

I think this completes the basic CodeGen for atomicrmw and cmpxchg.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136813 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
989f61e6c03b4717838b73aeaac7a38e2d8bb06a 03-Aug-2011 Eli Friedman <eli.friedman@gmail.com> ARM backend support for atomicrmw and cmpxchg with non-monotonic ordering. Not especially pretty, but seems to work well enough. If this looks okay, I'll put together similar patches for Mips, PPC, and Alpha.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136737 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
96279d0eff03f18eb5e21de285148be654171005 02-Aug-2011 Owen Anderson <resistor@mac.com> Fix the broken encodings for the VFP vmov.f32 and vmov.f64 instructions, as well as the comments that explain them incorrectly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136707 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
b93509d38274cc27425748070894c2971eb8842b 02-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136705 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e39389a58d54208fe005aba1709c601ef78b3ec1 02-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM: rename addrmode7 to addr_offset_none.

Use a more descriptive name so the code is more self-documenting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136704 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
02c8460a7428b9721d8784bc320f045d022ce699 02-Aug-2011 Jim Grosbach <grosbach@apple.com> Move imm0_255 to ARMInstrInfo.td with the other immediate predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136656 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
b2756afa273b548d950b612f4e936b46e82c1f13 01-Aug-2011 Jim Grosbach <grosbach@apple.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136655 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
32ab312e3f1987eeb8dbfe0917d980497e88a61c 01-Aug-2011 Douglas Gregor <dgregor@apple.com> Update CMake target names for tablegen-generated data in the X86 and ARM targets. This should fix the CMake build with MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136621 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/CMakeLists.txt
ef7f1e71f722fcca863c7d354f408e72181ff891 29-Jul-2011 Eric Christopher <echristo@apple.com> Add support for the 'Q' constraint.

Fixes rdar://9866494


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136523 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e1cf5902ec832cecdd5a94b9701930253d410741 29-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM SRS instruction parsing, diassembly and encoding support.

Fix the instruction encoding for operands. Refactor mode to use explicit
instruction definitions per FIXME to be more consistent with loads/stores.
Fix disassembler accordingly. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136509 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
33768dba54ebd6ba4315345316cf426af7a78639 29-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM CPS mode immediate is 5 bits, not 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136505 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2c6363a62df95b74468d9a561bbcb9edddeb3507 29-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for RFE instruction.

Fill in the missing fixed bits and the register operand bits of the instruction
encoding. Refactor the definition to make the mode explicit, which is
consistent with how loads and stores are normally represented and makes
parsing much easier. Add parsing aliases for pseudo-instruction variants.
Update the disassembler for the new representations. Add tests for parsing and
encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136479 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
5a287483607773f74ac77ac0ce4ca2201d2a8bbd 29-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM SRS and RFE instructions are not code-gen only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136475 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b48ce900f9c8d9c7706b82b346cf9c2212bb3be2 29-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM range checking for mode on CPS instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136473 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
96e24fa8929974a28b9c3adb023b006264cf7f36 29-Jul-2011 Jim Grosbach <grosbach@apple.com> Update FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136470 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bd4562e1638ea6dae205525b0ed84955b9a004af 29-Jul-2011 Jim Grosbach <grosbach@apple.com> Tweak comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136468 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fe42808f44a91421d46e68e85e7486a22a5a26ee 29-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Transfer implicit operands in NEONMoveFixPass.

Later passes /are/ using this information when running the register
scavenger.

This fixes the second problem in PR10520.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136440 91177308-0d34-0410-b5e6-96231b3b80d8
EONMoveFix.cpp
e69438fb87623dd6fdeeb99b647a46e877eb6183 29-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add -verify-arm-pseudo-expand.

This hidden llc option runs the machine code verifier after expanding
ARM pseudo-instructions, but before if-conversion.

The machine code verifier is much better at pointing out liveness errors
that can trip up the register scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136439 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
ac03e736c77bcf7e8deb515fc16a7e55d343dc8d 29-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Rewrite the CMake build to use explicit dependencies between libraries,
specified in the same file that the library itself is created. This is
more idiomatic for CMake builds, and also allows us to correctly specify
dependencies that are missed due to bugs in the GenLibDeps perl script,
or change from compiler to compiler. On Linux, this returns CMake to
a place where it can relably rebuild several targets of LLVM.

I have tried not to change the dependencies from the ones in the current
auto-generated file. The only places I've really diverged are in places
where I was seeing link failures, and added a dependency. The goal of
this patch is not to start changing the dependencies, merely to move
them into the correct location, and an explicit form that we can control
and change when necessary.

This also removes a serialization point in the build because we don't
have to scan all the libraries before we begin building various tools.
We no longer have a step of the build that regenerates a file inside the
source tree. A few other associated cleanups fall out of this.

This isn't really finished yet though. After talking to dgregor he urged
switching to a single CMake macro to construct libraries with both
sources and dependencies in the arguments. Migrating from the two macros
to that style will be a follow-up patch.

Also, llvm-config is still generated with GenLibDeps.pl, which means it
still has slightly buggy dependencies. The internal CMake
'llvm-config-like' macro uses the correct explicitly specified
dependencies however. A future patch will switch llvm-config generation
(when using CMake) to be based on these deps as well.

This may well break Windows. I'm getting a machine set up now to dig
into any failures there. If anyone can chime in with problems they see
or ideas of how to solve them for Windows, much appreciated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136433 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
MakeLists.txt
isassembler/CMakeLists.txt
nstPrinter/CMakeLists.txt
CTargetDesc/CMakeLists.txt
argetInfo/CMakeLists.txt
48c693ff564c422153733424ab845106161430ac 29-Jul-2011 Jim Grosbach <grosbach@apple.com> PLD and PLI are not predicable in ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136427 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cf121c35c484ee17210fde1cecbd896348cd654a 28-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for BLX (immediate).

Add parsing support for BLX (immediate). Since the register operand version is
predicated and the label operand version is not, we have to use some special
handling to get the operand list right for matching.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136406 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
293a2ee3063953bb6f5bc828831f985f054782a3 28-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for BFC and BFI.

Add parsing support that handles converting the lsb+width source into the
odd way we represent the instruction (an inverted bitfield mask).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136399 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
c29769b0e875013a594f47305a1e4ea3c19bcb75 28-Jul-2011 Jim Grosbach <grosbach@apple.com> Add fixme.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136375 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
354712c5a506449676e6fcac6b623af4092e7100 28-Jul-2011 Owen Anderson <resistor@mac.com> Update comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136367 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCCodeEmitter.cpp
8313b48bbe23caefa46c5825f5ecd6c3f527bd99 28-Jul-2011 Owen Anderson <resistor@mac.com> Fill in some encoding information for STRD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136366 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
aa3402e2800e85107a8f803be2942633b1c8c384 28-Jul-2011 Owen Anderson <resistor@mac.com> Revert r136295. It broke nightly testers because some parts of codegen weren't aware of the changes to operand ordering. I hope to revive this sometime in the future, but it's not strictly necessary for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136362 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
70a0915cd135b48c557a5bc81b37e33f54fe150e 28-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM parsing and encoding for ADR.

The label does not have a '#' prefix. Add parsing and encoding tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136360 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4ebc5916e9b3a43af8aff8e1b8744b1644457a4b 28-Jul-2011 Oscar Fuentes <ofv@wanadoo.es> Explicitly declare a library dependency of LLVM*Desc to
LLVM*AsmPrinter.

GenLibDeps.pl fails to detect vtable references. As this is the only
referenced symbol from LLVM*Desc to LLVM*AsmPrinter on optimized
builds, the algorithm that creates the list of libraries to be linked
into tools doesn't know about the dependency and sometimes places the
libraries on the wrong order, yielding error messages like this:

../../lib/libLLVMARMDesc.a(ARMMCTargetDesc.cpp.o): In function
`llvm::ARMInstPrinter::ARMInstPrinter(llvm::MCAsmInfo const&)':
ARMMCTargetDesc.cpp:(.text._ZN4llvm14ARMInstPrinterC1ERKNS_9MCAsmInfoE
[llvm::ARMInstPrinter::ARMInstPrinter(llvm::MCAsmInfo
const&)]+0x2a): undefined reference to `vtable for
llvm::ARMInstPrinter'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136328 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/CMakeLists.txt
7b2958392c2be221ff1f0d2ffd45d453dec515dd 28-Jul-2011 Owen Anderson <resistor@mac.com> Refactor and improve the encodings/decodings for addrmode3 loads, and make the writeback operand always the first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136295 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
5de728cfe1a922ac9b13546dca94526b2fa693b6 28-Jul-2011 Evan Cheng <evan.cheng@apple.com> Emit an error is asm parser parsed X86_64 only registers, e.g. %rax, %sil.
This can happen in cases where TableGen generated asm matcher cannot check
whether a register operand is in the right register class. e.g. mem operands.

rdar://8204588


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136292 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCCodeEmitter.cpp
addec77b54fd77e99fd01f462a3fb8c3c89066fa 28-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding support for USAT and USAT16.

Use range checked immediate operands for instructions. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136285 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
14648468011c92a4210f8118721d58c25043daf8 28-Jul-2011 Eli Friedman <eli.friedman@gmail.com> Code generation for 'fence' instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136283 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
49f2ceddd25c75373f8a39fa25e8b9db33bcdacc 28-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for UMULL.

Fix parsing of the 's' suffix for the mnemonic. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136277 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
71725a099e6d0cba24a63f9c9063f6efee3bf76e 27-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for UMLAL.

Fix parsing of the 's' suffix for the mnemonic. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136274 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
CTargetDesc/ARMMCCodeEmitter.cpp
06470311c574da4f83f91400234a1e1fc4c9ea1b 27-Jul-2011 Owen Anderson <resistor@mac.com> Refactor the STRT and STRBT instructions to distinguish between the register-addend and immediate-addend versions. Temporarily XFAIL the asm parsing tests for these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136255 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7e1547ebf726a40e7ed3dbe89a77e1b946a8e2d0 27-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for extend instructions.

Assembly parser handling for extend instruction rotate operands. Add tests
for the sign extend instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136252 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
766c63e78b6c14b7967790dcc2c613971a72e132 27-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing aliases for extend instructions w/o rotate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136229 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrInfo.td
RMInstrThumb2.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
RMFastISel.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
humb2SizeReduction.cpp
bd27f5adbd8f3b8ab8def5aa43fbc406ac9b8cbe 27-Jul-2011 Evan Cheng <evan.cheng@apple.com> Support .code32 and .code64 in X86 assembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136197 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCAsmInfo.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
CTargetDesc/ARMMCCodeEmitter.cpp
793e79601f0fd68ba082fa2016018f80b2379460 26-Jul-2011 Owen Anderson <resistor@mac.com> Split am2offset into register addend and immediate addend forms, necessary for allowing the fixed-length disassembler to distinguish between SBFX and STR_PRE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136141 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFrameLowering.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
0d87ec21d79c8622733b8367aa41067169602480 26-Jul-2011 Jim Grosbach <grosbach@apple.com> Fix over-zealous rename from r136095.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136132 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
189610f9466686a91fb7d847b572e1645c785323 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM diagnostics for ldrexd/stredx out of order paired register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136110 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
dfdf02dbada1ff9f87fe6efef0fc182a754f13f7 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM fix for LDREX source register encoding.

rdar://9842203


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136102 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
4f6f13db1a8a491ecab6af64549fbdc23cb5ba56 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for SWP[B] instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136098 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
1ef91417bd9677f04c34235dae24771eea321874 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM SWP instructions store, too, not just load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136096 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1355cf1f76abe9699cd1c2838da132ff8b25b76b 26-Jul-2011 Jim Grosbach <grosbach@apple.com> Clean up the ARM asm parser a bit.

No intendeded functional change. Just cleaning up a bit to make things more
self-consistent in layout and style.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136095 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
3d5ab367b663324dbe889f19ef9e39f3f0bcefcc 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM fix asm parsing range check for [0,31] immediates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136091 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ed8384806e56952c44f8a717c1ef54a8468d2c8d 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM parsing and encoding for SVC instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136090 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
smParser/ARMAsmParser.cpp
28c85a81a17dd719a254dc00cbeb484774893197 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename createCodeEmitter to createMCCodeEmitter; createObjectStreamer to createMCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136031 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
94b9550a32d189704a8eae55505edf62662c0534 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetAsmParser to MCTargetAsmParser and TargetAsmLexer to MCTargetAsmLexer; rename createAsmLexer to createMCAsmLexer and createAsmParser to createMCAsmParser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136027 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
b35552d440581265a982d7523c33e7466437bfb0 26-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Clean up a pile of hacks in our CMake build relating to TableGen.

The first problem to fix is to stop creating synthetic *Table_gen
targets next to all of the LLVM libraries. These had no real effect as
CMake specifies that add_custom_command(OUTPUT ...) directives (what the
'tablegen(...)' stuff expands to) are implicitly added as dependencies
to all the rules in that CMakeLists.txt.

These synthetic rules started to cause problems as we started more and
more heavily using tablegen files from *subdirectories* of the one where
they were generated. Within those directories, the set of tablegen
outputs was still available and so these synthetic rules added them as
dependencies of those subdirectories. However, they were no longer
properly associated with the custom command to generate them. Most of
the time this "just worked" because something would get to the parent
directory first, and run tablegen there. Once run, the files existed and
the build proceeded happily. However, as more and more subdirectories
have started using this, the probability of this failing to happen has
increased. Recently with the MC refactorings, it became quite common for
me when touching a large enough number of targets.

To add insult to injury, several of the backends *tried* to fix this by
adding explicit dependencies back to the parent directory's tablegen
rules, but those dependencies didn't work as expected -- they weren't
forming a linear chain, they were adding another thread in the race.

This patch removes these synthetic rules completely, and adds a much
simpler function to declare explicitly that a collection of tablegen'ed
files are referenced by other libraries. From that, we can add explicit
dependencies from the smaller libraries (such as every architectures
Desc library) on this and correctly form a linear sequence. All of the
backends are updated to use it, sometimes replacing the existing attempt
at adding a dependency, sometimes adding a previously missing dependency
edge.

Please let me know if this causes any problems, but it fixes a rather
persistent and problematic source of build flakiness on our end.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136023 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
MakeLists.txt
isassembler/CMakeLists.txt
nstPrinter/CMakeLists.txt
CTargetDesc/CMakeLists.txt
78c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5c 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetAsmBackend to MCAsmBackend; rename createAsmBackend to createMCAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136010 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/ARMMachObjectWriter.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
275944afb55086d0b4b20d4d831de7c1c7507925 25-Jul-2011 Evan Cheng <evan.cheng@apple.com> Fix more MC layering violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135979 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4b64e8a9e13ba782da2034e1dee52f077bdb759c 25-Jul-2011 Evan Cheng <evan.cheng@apple.com> Separate MCInstPrinter registration from AsmPrinter registration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135974 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
CTargetDesc/ARMMCTargetDesc.cpp
e4616ace025fcf5316fffdf7f7007e3e5e2d7a05 25-Jul-2011 Jim Grosbach <grosbach@apple.com> Simply ARM so_reg MIOperandInfo definitions.

The shift immediate encoding, printing, etc. is handled directly by the
enclosing operand definition, so it should be a vanilla immediate, not a
nested complex operand (shift_imm).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135968 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1b0fc9b4182d6bd0703cdfb3b0b91d1e093c946c 25-Jul-2011 Evan Cheng <evan.cheng@apple.com> Fix last bits of MC layer issues. llvm-mc doesn't need to initialize TargetMachine's anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135963 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
af6981f2f59f0d825ad973e0bed8fff5d302196f 25-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM asm operand renaming. Make things a bit more explicit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135959 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
5f6c133d7d4451a78ffc39248fc69a8870b57c6a 25-Jul-2011 Jim Grosbach <grosbach@apple.com> More simple cleanup of ARM asm operand definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135958 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
54134708f5debe1631f9ea9b232f78758a2151e4 25-Jul-2011 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135954 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
CTargetDesc/ARMBaseInfo.h
43904299b05bdf579415749041f77c4490fe5f5b 25-Jul-2011 Jim Grosbach <grosbach@apple.com> Make assembly parser method names more consistent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135950 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
1610a709651d4844984212f61f04022a016a315e 25-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up formatting.

Remove some inititalizers that are the same as the default, move defs next to
their (singular) uses and generally simplify some formatting of asm operand
definitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135946 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1e93b242461fcb01249d5f925e90f3eb3c2344ad 25-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135945 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
883d99f70ba41d334adc9fef321804a2f88c4468 23-Jul-2011 NAKAMURA Takumi <geek4civic@gmail.com> ARMMCTargetDesc.h: Fixup to add DataTypes.h, or uint32_t would be unavailable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135837 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.h
a7cfc08ebe737062917b442830eb5321b0f79e89 23-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move TargetAsmParser.h TargetAsmBackend.h and TargetAsmLexer.h to MC where they belong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135833 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMMachObjectWriter.cpp
be74029f44c32efc09274a16cbff588ad10dc5ea 23-Jul-2011 Evan Cheng <evan.cheng@apple.com> Sink ARM mc routines into MCTargetDesc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135825 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmBackend.cpp
RMBaseInfo.h
RMFixupKinds.h
RMMCCodeEmitter.cpp
RMMachObjectWriter.cpp
RMTargetMachine.cpp
MakeLists.txt
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAsmBackend.cpp
CTargetDesc/ARMBaseInfo.h
CTargetDesc/ARMFixupKinds.h
CTargetDesc/ARMMCCodeEmitter.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/ARMMachObjectWriter.cpp
CTargetDesc/CMakeLists.txt
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
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
bf2845c0d8a77d24e9971871badeba8cee7b2648 23-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding updates.

Tests for SMULBB, SMLALBT, SMLALTB, SMLALTT, and SMULL. Fix parsing of SMULLS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135817 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e78085a3c03de648a481e9751c3094c517bd7123 22-Jul-2011 Evan Cheng <evan.cheng@apple.com> Combine all MC initialization routines into one. e.g. InitializeX86MCAsmInfo,
InitializeX86MCInstrInfo, etc. are combined into InitializeX86TargetMC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135812 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
b544f68b70475f06a8ec39c874297549edc0f695 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding of SMLAL instruction.

Fix parsing of carry-setting variant SMLALS and add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135797 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b206daaec1a2ec25e99fbdc413cd0866cec160b2 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM encoding and assembly parsing of SMLAD{X} instructions.

Fix encoding of destination register. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135796 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e0a03143df398c17a435c136b14316fd43f27fb7 22-Jul-2011 Owen Anderson <resistor@mac.com> Fix test failures caused by my so_reg refactoring.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135785 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
7931df3d74117d423f67f0406be5ef02f0557c57 22-Jul-2011 Jim Grosbach <grosbach@apple.com> Clean up a few more comments.

These instruction definitions are for the assembler, too, not just the
disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135781 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0fdf6ccf17479a4fc383a1c54eb7dc816c0b5838 22-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135779 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
063224781808eaf4d41d73f57759101dd899b523 22-Jul-2011 Jim Grosbach <grosbach@apple.com> Thumb assembly support for SETEND instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135778 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
53a89d6f38fc8a0758436038ed10a8aada48122c 22-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135777 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c27d4f9ea0cb9064d3e2cadb384d73e95e9de449 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for SETEND instruction.

Add parsing and diagnostics for malformed inputs. Tests for diagnostics and
for correct encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135776 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
6c1bb77992ddc1b22c14268720c05c222255533c 22-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135771 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
152d4a4bb6b75de740b4b8a9f48abb9069d50c17 22-Jul-2011 Owen Anderson <resistor@mac.com> Get rid of the extraneous GPR operand on so_reg_imm operands, which in turn necessitates a lot of changes to related bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135722 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
7c6e42e9273168ba9b1273a1580d569e1bac0e91 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM Asm parser range checking for [0,31] immediates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135719 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
f790193aec11747bb35206d2c79e0c5ffbc6dc7f 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing support for RSC instruction.

Add two-operand instruction aliases. Add parsing and encoding tests for
variants of the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135713 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
86fdff0fa79b2c00cb68a2961cca0466eb50d666 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing support for RSB instruction.

Add two-operand instruction aliases. Add parsing and encoding tests for
variants of the instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135712 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
43d3b31cda187c5fab6fca53eb60739e03a20481 21-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135706 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
10c7d70a4e843b3006db9f5f583d6f6f56cc245e 21-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing POP/PUSH mnemonics.

Aliases for LDM/STM. The single-register versions should encode to LDR/STR
with writeback, but we don't (yet) get that correct. Neither does Darwin's
system assembler, though, so that's not a deal-breaker of a limitation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135702 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
92a202213bb4c20301abf6ab64e46df3695e60bf 21-Jul-2011 Owen Anderson <resistor@mac.com> Split up the ARM so_reg ComplexPattern into so_reg_reg and so_reg_imm, allowing us to distinguish the encodings that use shifted registers from those that use shifted immediates. This is necessary to allow the fixed-length decoder to distinguish things like BICS vs LDRH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135693 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
smParser/ARMAsmParser.cpp
f6c0525d421cb48119423a96e23289b473eddbd7 21-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for PKHBT and PKHTB instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135682 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
dab3d29605a5c83db41b28176273ef55961120c1 21-Jul-2011 Jay Foad <jay.foad@gmail.com> Convert ConstantExpr::getGetElementPtr and
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135673 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
ee04a6d3a40c3017124e3fd89a0db473a2824498 21-Jul-2011 Evan Cheng <evan.cheng@apple.com> Sink ARMMCExpr and ARMAddressingModes into MC layer. First step to separate ARM MC code from target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135636 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMBaseInfo.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMFrameLowering.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMMCCodeEmitter.cpp
RMMCExpr.cpp
RMMCExpr.h
RMMCInstLower.cpp
RMSelectionDAGInfo.h
smParser/ARMAsmParser.cpp
MakeLists.txt
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
CTargetDesc/ARMAddressingModes.h
CTargetDesc/ARMMCExpr.cpp
CTargetDesc/ARMMCExpr.h
CTargetDesc/CMakeLists.txt
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
humb2SizeReduction.cpp
dde038af59506c631ce181aff66e315a0c477f4d 20-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM PKH shift ammount operand printing tweaks.

Move the shift operator and special value (32 encoded as 0 for PKHTB) handling
into the instruction printer. This cleans up a bit of the disassembler
special casing for these instructions, more easily handles not printing the
operand at all for "lsl #0" and prepares for correct asm parsing of these
operands.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
ab40f4b737b0a87c4048a9ad2f0c02be735e3770 20-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing of MUL instruction.

Correctly handle 's' bit and predication suffices. Add parsing and encoding
tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135596 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
34ad6db8b958fdc0d38e122edf753b5326e69b03 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Move CodeModel from a TargetMachine global option to MCCodeGenInfo.
- Introduce JITDefault code model. This tells targets to set different default
code model for JIT. This eliminates the ugly hack in TargetMachine where
code model is changed after construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135580 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
CTargetDesc/ARMMCTargetDesc.cpp
ebf5f0962932032481ae306b42c96c68c3a0be95 20-Jul-2011 Logan Chien <loganchien@google.com> Merge with LLVM upstream r135568 (Jul 20th 2011)

Conflicts:
lib/Bitcode/Reader/BitcodeReader.cpp

Change-Id: Iebed76d2f7d281e742947e31d9a0b78174daf2d6
e76a33b9567d78a5744dc52fcec3a6056d6fb576 20-Jul-2011 Evan Cheng <evan.cheng@apple.com> Add MCObjectFileInfo and sink the MCSections initialization code from
TargetLoweringObjectFileImpl down to MCObjectFileInfo.

TargetAsmInfo is done to one last method. It's *almost* gone!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135569 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
b29b4dd988c50d5c4a15cd196e7910bf46f30b83 20-Jul-2011 Jim Grosbach <grosbach@apple.com> Tweak ARM assembly parsing and printing of MSR instruction.

The system register spec should be case insensitive. The preferred form for
output with mask values of 4, 8, and 12 references APSR rather than CPSR.
Update and tidy up tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135532 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
80d01dd3d19a84621324ac444c6749602df7a513 19-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing of MRS instruction.

Teach the parser to recognize the APSR and SPSR system register names. Add
and update tests accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.td
f1a009007374d8ae1c1565f34d9cea3b83665e5f 19-Jul-2011 Owen Anderson <resistor@mac.com> Enhance the FixedLengthDecoder to be able to generate plausible-looking decoders for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135524 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.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
RMInstrInfo.td
RMInstrThumb2.td
5f16057d1e4b711d492091bc555693a03d4a1b6e 19-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for MOV (register).

Correct the handling of the 's' suffix when parsing ARM mode. It's only a
truly separate opcode in Thumb. Add test cases to make sure we handle
the s and condition suffices correctly, including diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135513 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
558b66d3cd536cfba11e295816a15ea6476fcd16 19-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135507 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
731f2097944bfdf5b58ff1f19560a25ed15c9b2b 19-Jul-2011 Jim Grosbach <grosbach@apple.com> Tighten conditional for 'mov' cc_out.

Make sure we only clobber the cc_out operand if it is indeed a default
non-setting operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135506 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
5a18700470f0831b9b2af78862672561dd980345 19-Jul-2011 Jim Grosbach <grosbach@apple.com> Remove unused code.

cc_out and pred operands are added during parsing via custom C++ now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135497 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6bc1dbc37695bcfc5ae23a1a9e17550ee50fe02f 19-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM range checking for so_imm operands in assembly parsing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135489 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
439661395fd2a2a832dba01c65bc88718528313c 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Introduce MCCodeGenInfo, which keeps information that can affect codegen
(including compilation, assembly). Move relocation model Reloc::Model from
TargetMachine to MCCodeGenInfo so it's accessible even without TargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135468 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
smParser/ARMAsmLexer.cpp
CTargetDesc/ARMMCTargetDesc.cpp
565a0366974d82c3efe8a31e0ecc0609c67cad3e 19-Jul-2011 Owen Anderson <resistor@mac.com> Revamp our handling of tLDMIA[_UPD] and tSTMIA[_UPD] to avoid having multiple instructions with the same encoding. This resolves another conflict when bringing up the new-style disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135442 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
2d28617de2b0b731c08d1af9e830f31e14ac75b4 19-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for
better location welcome).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135438 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
91614aec48ae01452422faf0cf6a6770d6b2166c 19-Jul-2011 Owen Anderson <resistor@mac.com> Mark the Darwin assembler workout as isCodeGenOnly, so that it doesn't cause decoding conflicts in the new-style disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135434 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0e6a052331f674dd70e28af41f654a7874405eab 18-Jul-2011 Evan Cheng <evan.cheng@apple.com> Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down
to MCRegisterInfo. Also initialize the mapping at construction time.

This patch eliminate TargetRegisterInfo from TargetAsmInfo. It's another step
towards fixing the layering violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135424 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
CTargetDesc/ARMMCTargetDesc.cpp
0af0dc8ac6d084bb04cf0188e48eecd6c98903ba 18-Jul-2011 Owen Anderson <resistor@mac.com> Re-apply r135319 with a fix for the constant island pass.
Original Log: Get rid of the separate opcodes for the Darwin versions of tBL, tBLXi, and tBLXr, using pseudo-instructions to lower to the single final opcode. Update the ARM disassembler for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135414 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
39b5abf507b43da6b92f68b86406e0015ead18e9 18-Jul-2011 Frits van Bommel <fvbommel@gmail.com> Migrate LLVM and Clang to use the new makeArrayRef(...) functions where previously explicit non-default constructors were used.
Mostly mechanical with some manual reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135390 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e 18-Jul-2011 Chris Lattner <sabre@nondot.org> land David Blaikie's patch to de-constify Type, with a few tweaks.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMFastISel.cpp
RMGlobalMerge.cpp
RMISelLowering.cpp
RMISelLowering.h
RMSelectionDAGInfo.cpp
72fdeda08aedc76f6d04c484d83058e96c8af3a9 16-Jul-2011 Nowar Gu <nowar100@gmail.com> Fix Android.mk.
ndroid.mk
isassembler/Android.mk
nstPrinter/Android.mk
CTargetDesc/Android.mk
argetInfo/Android.mk
a71642b2a4944eaa269d881cf71b02b8e8fe5638 16-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r135343 at Sat. 16th July 2011.
91ddfc4723f5857e0124192d71e625a7926cbc70 16-Jul-2011 Owen Anderson <resistor@mac.com> Revert r135319 in an attempt to get to unbreak testers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135343 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
49e163b6c749a6118939fbba19664b96c2089cfc 16-Jul-2011 Owen Anderson <resistor@mac.com> Get rid of the separate opcodes for the Darwin versions of tBL, tBLXi, and tBLXr, using pseudo-instructions to lower to the single final opcode. Update the ARM disassembler for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135319 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
43967a97cf9a296623e1cf5ed643e2f40b7e5766 15-Jul-2011 Owen Anderson <resistor@mac.com> Remove VMOVDneon and VMOVQ, which are just aliases for VORR. This continues to simplify the path towards an auto-generated disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135290 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
isassembler/ARMDisassemblerCore.cpp
EONMoveFix.cpp
167eb1f90392f196a62293bdee68b0d662546e7d 15-Jul-2011 Owen Anderson <resistor@mac.com> Remove unnecessary duplicate instruction definitions that simply overloaded the type of VEXT. This can be achieved with a Pat definition, and is much more disassembler friendly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135283 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
20722b6cda6a8857a00e84133c8d8516400aca4d 15-Jul-2011 NAKAMURA Takumi <geek4civic@gmail.com> Eliminate "const" from extern const to fix breakeage since r135184 on msvc.

MSVC decorates (and distinguishes) "const" in mangler. It brought linkage error between "extern const" declarations and definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135269 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
1be0e271a07925b928ba89848934f1ea6f1854e2 15-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move some parts of TargetAsmInfo down to MCAsmInfo. This is not the greatest
solution but it is a small step towards removing the horror that is
TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135237 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/ARMMCTargetDesc.cpp
4afa2b842b8ecc61c2023832c7cbbf6b6116837a 15-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Major update to CMake build to reflect changes in r135219 in the
backend. Moved some MCAsmInfo files down into the MCTargetDesc
sublibraries, removed some (i suspect long) dead files from other parts
of the CMake build, etc. Also copied the include directory hack from the
Makefile.

Finally, updated the lib deps. I spot checked this, and think its
correct, but review appreciated there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135234 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
CTargetDesc/CMakeLists.txt
1abf2cb59b8d63415780a03329307c0997b2670c 15-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename createAsmInfo to createMCAsmInfo and move registration code to MCTargetDesc to prepare for next round of changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135219 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
RMMCAsmInfo.h
RMTargetMachine.cpp
CTargetDesc/ARMMCAsmInfo.cpp
CTargetDesc/ARMMCAsmInfo.h
CTargetDesc/ARMMCTargetDesc.cpp
33c16a27370939de39679245c3dff72383c210bd 15-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM diagnostic when 's' suffix on mnemonic that can't set flags.

For example, "mlss r0, r1, r2, r3".

The MLS instruction does not have a flag-setting variant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135203 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
151bd17a8fb540c84c3c297d27cedf0512ce02d3 14-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Add OperandTypes for Thumb branch targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135199 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
3be41b748e4be387eeb751531b7876a044afcc6e 14-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Port operand types for ARM and X86 over from EDIS to the .td files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135198 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
c60f9b752381baa6c4b80c0739034660f1748c84 14-Jul-2011 Evan Cheng <evan.cheng@apple.com> Next round of MC refactoring. This patch factor MC table instantiations, MC
registeration and creation code into XXXMCDesc libraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135184 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMMCCodeEmitter.cpp
RMSubtarget.cpp
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
c83d504085c17697f2a24d0a9fbad4503105ec41 14-Jul-2011 Jim Grosbach <grosbach@apple.com> Reorganize ARM assembler aliases.

Consolidate the individual declarations together for ease of reference. This
mirrors the organization in X86, as well, so is good for consistency. No
functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135179 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
eac0796542d098caa371856d545faa6cdab5aad3 14-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't leak operands when putting them into a shift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135169 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3b14a5c5469176effb921d91d4494f0aa2919fd0 14-Jul-2011 Jim Grosbach <grosbach@apple.com> Update ARM Assembly of LDM/STM.

ldm/stm are the cannonical spellings for ldmia/stmia, so use them as such.
Update the parsing/encoding tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135168 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9dec507ecb212a7c94659e9b5a9da66cb4b39ea3 14-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM ISB instruction assembly parsing.

The ISB instruction takes an optional operand, just like DMB/DSB. Typically
only 'sy' is meaningful.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135156 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
e77494e3e3da59afaa51d1bbcf732fa2851d865d 14-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM Assembler support for DSB instruction.

Add instalias for default 'sy' option. Add tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135116 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
77f379e2a100e2fe778145cc3f28c6837adee33e 14-Jul-2011 Jim Grosbach <grosbach@apple.com> DMB instalias needs the same predicate as the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135112 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
032434d622b6cd030a60bb9045a520c93b0d7d68 14-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM Assembler support for DMB instruction.

Flesh out the options supported for the instruction. Shuffle tests a bit and
add entries for the rest of the options. Add an alias to handle the default
operand of "sy".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135109 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
20fcaffaf778169e669359ffb3938fab4814cc95 14-Jul-2011 Jim Grosbach <grosbach@apple.com> Update comments. These are for assembler, too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135107 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMMCCodeEmitter.cpp
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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
898e7e26a531d0ed8d3b31cb1976e7744a4e3bcb 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Fix encoding for ARM BXJ instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135077 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d447ac6c8c962e62712cfe9dc1c0b940a5619163 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Fix encoding of predicate bits on ARM BX_pred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135076 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fff76ee7ef007b2bb74804f165fee475e30ead0d 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Range checking for 16-bit immediates in ARM assembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135071 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
619e0d6d95879a08ede97c171e1c8712554c7951 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Give the ARM BKPT instruction the right operand type.

The immediate is of limited range and the operand type should reflect that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135066 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
21101d60ce94f51651f71eeb61ceb8264eccac83 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Add tests for ARM parsing of 'BKPT' instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135063 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
19906729a490744ce3071d20e3d514cadc12e6c5 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Improve ARM assembly parsing diagnostics a bit.

Catch potential cascading errors on a malformed so_reg operand and bail after
the first error.

Add some tests for the diagnostics we do want.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135055 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
37ee464ea98544d3ed84cec6dde5f769ce003d5f 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Destination register operand is optional for ADC and SBC ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135052 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e8606dc7c878d4562da5e3e5609b9d7d734d498c 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Flesh out ARM Parser support for shifted-register operands.

Now works for parsing register shifted register and register shifted
immediate arithmetic instructions, including the 'rrx' rotate with extend.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135049 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
aa4cc1a6d75f621cbc5eb1db692068db072fbecc 13-Jul-2011 Jim Grosbach <grosbach@apple.com> 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135047 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
b7f689bab98777236a2bf600f299d232d246bb61 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Update MCParsedAsmOperand debug methods.

Update the debug output interface for MCParsedAsmOperand to have a print()
method which takes an output stream argument, an << operator which invokes
the print method using the given stream, and a dump() method which prints
the operand to the dbgs() stream. This makes the interface more consistent
with the rest of LLVM, and more convenient to use at the debugger command
line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135043 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3b737081e49ef7d640d50285b6cb5f686c75f63d 13-Jul-2011 Evan Cheng <evan.cheng@apple.com> Add an entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135024 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
e721f5c8d3ea2cc2cc8c3c308ce8bdd8a3fc3b32 13-Jul-2011 Evan Cheng <evan.cheng@apple.com> Improve codegen for select's:
if (x != 0) x = 1
if (x == 1) x = 1

Previous codegen looks like this:
mov r1, r0
cmp r1, #1
mov r0, #0
moveq r0, #1

The naive lowering select between two different values. It should recognize the
test is equality test so it's more a conditional move rather than a select:
cmp r0, #1
movne r0, #0

rdar://9758317


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135017 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
5fdd6c8793462549e3593890ec61573da06e3346 12-Jul-2011 Jay Foad <jay.foad@gmail.com> Second attempt at de-constifying LLVM Types in FunctionType::get(),
StructType::get() and TargetData::getIntPtrType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134982 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
2280ebd61416b73d0b6137f275b25af82e268d1f 12-Jul-2011 Bill Wendling <isanbard@gmail.com> Revert r134893 and r134888 (and related patches in other trees). It was causing
an assert on Darwin llvm-gcc builds.

Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.llvm-gcc-i386-darwin9-RA/llvm.src/lib/VMCore/Instructions.cpp, li\
ne 2067.
etc.

http://smooshlab.apple.com:8013/builders/llvm-gcc-i386-darwin9-RA/builds/2354

--- Reverse-merging r134893 into '.':
U include/llvm/Target/TargetData.h
U include/llvm/DerivedTypes.h
U tools/bugpoint/ExtractFunction.cpp
U unittests/Support/TypeBuilderTest.cpp
U lib/Target/ARM/ARMGlobalMerge.cpp
U lib/Target/TargetData.cpp
U lib/VMCore/Constants.cpp
U lib/VMCore/Type.cpp
U lib/VMCore/Core.cpp
U lib/Transforms/Utils/CodeExtractor.cpp
U lib/Transforms/Instrumentation/ProfilingUtils.cpp
U lib/Transforms/IPO/DeadArgumentElimination.cpp
U lib/CodeGen/SjLjEHPrepare.cpp
--- Reverse-merging r134888 into '.':
G include/llvm/DerivedTypes.h
U include/llvm/Support/TypeBuilder.h
U include/llvm/Intrinsics.h
U unittests/Analysis/ScalarEvolutionTest.cpp
U unittests/ExecutionEngine/JIT/JITTest.cpp
U unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
U unittests/VMCore/PassManagerTest.cpp
G unittests/Support/TypeBuilderTest.cpp
U lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp
U lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp
U lib/VMCore/IRBuilder.cpp
G lib/VMCore/Type.cpp
U lib/VMCore/Function.cpp
G lib/VMCore/Core.cpp
U lib/VMCore/Module.cpp
U lib/AsmParser/LLParser.cpp
U lib/Transforms/Utils/CloneFunction.cpp
G lib/Transforms/Utils/CodeExtractor.cpp
U lib/Transforms/Utils/InlineFunction.cpp
U lib/Transforms/Instrumentation/GCOVProfiling.cpp
U lib/Transforms/Scalar/ObjCARC.cpp
U lib/Transforms/Scalar/SimplifyLibCalls.cpp
U lib/Transforms/Scalar/MemCpyOptimizer.cpp
G lib/Transforms/IPO/DeadArgumentElimination.cpp
U lib/Transforms/IPO/ArgumentPromotion.cpp
U lib/Transforms/InstCombine/InstCombineCompares.cpp
U lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
U lib/Transforms/InstCombine/InstCombineCalls.cpp
U lib/CodeGen/DwarfEHPrepare.cpp
U lib/CodeGen/IntrinsicLowering.cpp
U lib/Bitcode/Reader/BitcodeReader.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134949 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
af0a2e6730ffb59405352269e1500b6e83e42d6a 11-Jul-2011 Evan Cheng <evan.cheng@apple.com> Most MCCodeEmitter's don't meed MCContext.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134922 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
3f00e317064560ad11168d22030416d853829f6e 11-Jul-2011 Jim Grosbach <grosbach@apple.com> Fix recognition of ARM 'adcs' mnemonic.

The 'CS' is not a predication suffix in this case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134903 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
589130fac11bc8c186736161600575c3ed6acc5b 11-Jul-2011 Jim Grosbach <grosbach@apple.com> Simplify printing of ARM shifted immediates.

Print shifted immediate values directly rather than as a payload+shifter
value pair. This makes for more readable output assembly code, simplifies
the instruction printer, and is consistent with how Thumb immediates are
displayed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134902 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
eeb64ae6e52ac2a7980884fe89c01508014af6a9 11-Jul-2011 Jay Foad <jay.foad@gmail.com> De-constify Types in StructType::get() and TargetData::getIntPtrType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134893 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
59ee62d2418df8db499eca1ae17f5900dc2dcbba 11-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Eliminate MCCodeEmitter's dependency on TargetMachine. It now uses MCInstrInfo
and MCSubtargetInfo.
- Added methods to update subtarget features (used when targets automatically
detect subtarget features or switch modes).
- Teach X86Subtarget to update MCSubtargetInfo features bits since the
MCSubtargetInfo layer can be shared with other modules.
- These fixes .code 16 / .code 32 support since mode switch is updated in
MCSubtargetInfo so MC code emitter can do the right thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134884 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMMCCodeEmitter.cpp
CTargetDesc/ARMMCTargetDesc.cpp
f75ae4c977b8877bb8988109dc081d512874fb37 11-Jul-2011 Cameron Zwarich <zwarich@apple.com> Fix <rdar://problem/9751331>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134882 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
f81b7f6069b27c0a515070dcb392f6828437412f 10-Jul-2011 Jakub Staszak <jstaszak@apple.com> Use BranchProbability instead of floating points in IfConverter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134858 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
ffc0e73046f737d75e0a62b3a83ef19bcef111e3 09-Jul-2011 Evan Cheng <evan.cheng@apple.com> Change createAsmParser to take a MCSubtargetInfo instead of triple,
CPU, and feature string. Parsing some asm directives can change
subtarget state (e.g. .code 16) and it must be reflected in other
modules (e.g. MCCodeEmitter). That is, the MCSubtargetInfo instance
must be shared.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134795 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
eb0caa115491019f7f7fe45fc70ad47682244187 09-Jul-2011 Evan Cheng <evan.cheng@apple.com> Fix indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134764 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
32869205052430f45d598fba25ab878d8b29da2d 09-Jul-2011 Evan Cheng <evan.cheng@apple.com> Add support for ARM / Thumb mode switching with .code 16 and .code 32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134760 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7e61a3120d70f743825e96e461368ade3bebd7d5 09-Jul-2011 Jim Grosbach <grosbach@apple.com> Mark tBRIND as predicable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134758 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
aa8d1b80ff35a4370a75b9d08a3e94f19e0d3dae 09-Jul-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize tBRIND.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134755 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
25e6d48220330d17875d0ae0ad6a45597d5ac36c 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Make tBX_RET and tBX_RET_vararg predicable.

The normal tBX instruction is predicable, so there's no reason the
pseudos for using it as a return shouldn't be. Gives us some nice code-gen
improvements as can be seen by the test changes. In particular, several
tests now have to disable if-conversion because it works too well and defeats
the test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134746 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
humb1FrameLowering.cpp
33390848a7eca75301d04a59b89b516d83e19ee0 08-Jul-2011 Cameron Zwarich <zwarich@apple.com> Add an intrinsic and codegen support for fused multiply-accumulate. The intent
is to use this for architectures that have a native FMA instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134742 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d28ec08eddf4cf8dc5ffe94c6cf72df32e257166 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize tBX_RET and tBX_RET_vararg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134739 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
75ca4b94bd9dcd3952fdc237429342a2154ba142 08-Jul-2011 Benjamin Kramer <benny.kra@googlemail.com> Plug a leak by giving the AsmParser ownership of the MCSubtargetInfo.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134738 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ead77cd6789041bb5c7e0ac2442f1205ab23fbc0 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Shuffle productions around a bit.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134737 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0b44aea7b564c5c28ac0acaaba8805ce7c625fd3 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Use tPseudoExpand for tTAILJMPrND and tTAILJMPr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134734 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrThumb.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
RMAsmPrinter.cpp
RMInstrThumb.td
RMInstrThumb2.td
8dc41f33f7ff668f7dd56f37bd33fbd4ed82889d 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Add more info to FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134729 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e36e21e83097c7d1ec6704cb0d17d71336b2218e 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Move Thumb tail call pseudos to Thumb.td file.

Fix a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134727 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
480cee5d4396a380ada6ffd03551b5700d041fe0 08-Jul-2011 Evan Cheng <evan.cheng@apple.com> TargetAsmParser doesn't need reference to Target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134721 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
245f5e8e2ae2edc9053f72035ca6e1c9596d00c2 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Use ARMPseudoExpand for ARM tail calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134719 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
9ca2a778b65b8926e24ca235bb1eeb0b769086be 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Shuffle productions around a bit.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134714 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4559a7bcfd8ecee28e6c1426d321c15ddc58b92f 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Use ARMPseudoExpand for BLr9, BLr9_pred, BXr9, and BXr9_pred.

TableGen'erated MC lowering pseudo-expansion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134712 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
549a85138c4f83ef6292424d86ebe21661efa517 08-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Add CMake support for the new TableGen file introduced in r134705.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134707 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
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
RMAsmPrinter.cpp
RMAsmPrinter.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMMCInstLower.cpp
akefile
ebdeeab812beec0385b445f3d4c41a114e0d972f 08-Jul-2011 Evan Cheng <evan.cheng@apple.com> Eliminate asm parser's dependency on TargetMachine:
- Each target asm parser now creates its own MCSubtatgetInfo (if needed).
- Changed AssemblerPredicate to take subtarget features which tablegen uses
to generate asm matcher subtarget feature queries. e.g.
"ModeThumb,FeatureThumb2" is translated to
"(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134678 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSubtarget.cpp
RMTargetMachine.cpp
smParser/ARMAsmParser.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
4761a8d6549125e21d84371a9783bd41de2f55fa 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rewrite comment in English.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134627 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
963b03c1a9f6a9742671459f103ee9a566c6de58 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename attribute 'thumb' to a more descriptive 'thumb-mode'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134626 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
a8504111f6902e613a89352866843c00f58a007b 07-Jul-2011 Oscar Fuentes <ofv@wanadoo.es> Update CMake library dependencies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134616 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
7f358da70faaac5f8ca7b05c8c44a5ab418e8d16 07-Jul-2011 Douglas Gregor <dgregor@apple.com> Fix CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134614 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
375db7f39af8da118f3947d24ea91967c4a6b526 07-Jul-2011 Cameron Zwarich <zwarich@apple.com> The VMLA instruction and its friends are not actually fused; they're plain old
multiply-accumulate instructions with separate rounding steps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134609 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrVFP.td
db068738e806753bc5735434cab9b9f930840c7a 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Sink feature IsThumb into MC layer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134608 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
0ddff1b5359433faf2eb1c4ff5320ddcbd42f52f 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Compute feature bits at time of MCSubtargetInfo initialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134606 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
39dfb0ff848be6b380ca81ff95d4ca4e0ae09c76 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Change some ARM subtarget features to be single bit yes/no in order to sink them down to MC layer. Also fix tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134590 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
CTargetDesc/ARMMCTargetDesc.cpp
94ca42ff0407d71bacc41de4032d8dbe6358d33d 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Factor ARM triple parsing out of ARMSubtarget. Another step towards making ARM subtarget info available to MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134569 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
78a9f138ae95458bf6d922f38706eed045691d5a 07-Jul-2011 Evan Cheng <evan.cheng@apple.com> Add ARM MC registry routines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134547 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
MakeLists.txt
CTargetDesc/ARMMCTargetDesc.cpp
CTargetDesc/ARMMCTargetDesc.h
CTargetDesc/CMakeLists.txt
CTargetDesc/Makefile
akefile
d1689ae4b1ae5af191f71dcb9c59640a6dca7ebc 06-Jul-2011 Jim Grosbach <grosbach@apple.com> Mark ARM pseudo-instructions as isPseudo.

This allows us to remove the (bogus and unneeded) encoding information from
the pseudo-instruction class definitions. All of the pseudos that haven't
been converted yet and still need encoding information instance from the normal
instruction classes and explicitly set isCodeGenOnly, and so are distinct
from this change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134540 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
d378b323826613f57a973c5eb6373f3fd8b012f0 06-Jul-2011 Jim Grosbach <grosbach@apple.com> Remove un-used encoding info from Pseudo MLAv5.

Pseudo-instructions don't have encoding information, as they're lowered
to real instructions by the time we're doing binary encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134533 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b262799d49891b036daa00eddf51947487346c98 06-Jul-2011 Evan Cheng <evan.cheng@apple.com> createMCInstPrinter doesn't need TargetMachine anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134525 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
nstPrinter/ARMInstPrinter.h
bc20e4f2dc11e346505f11efea22d9a1d3919eca 05-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM estimateStackSize() needs to account for simplified call frames.

If the function allocates reserved stack space for callee argument frames,
estimateStackSize() needs to account for that, as it doesn't show up as
ordinary frame objects. Otherwise, a callee with a large argument list will
throw off the calculations for whether to allocate an emergency spill slot
and we get assert() failures in the register scavenger.

rdar://9715469


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134415 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
7c328f3347b42249c4178432bc29ca66271617a9 02-Jul-2011 Nowar Gu <nowar100@gmail.com> Fix Android.mk.
ndroid.mk
smParser/Android.mk
1ffcf07d9fb7a7db5737ca7307ae8e0aa713f278 02-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r134306 at Sat. 2nd July 2011.
f899bd4a462884aa91b9d0c93ab2dbc605dac116 02-Jul-2011 Nowar Gu <nowar100@gmail.com> Fix Android.mk.
RMCodeEmitter.cpp
ndroid.mk
smParser/Android.mk
isassembler/Android.mk
nstPrinter/Android.mk
argetInfo/Android.mk
385e930d55f3ecd3c9538823dfa5896a12461845 02-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename XXXGenSubtarget.inc to XXXGenSubtargetInfo.inc for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134281 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
MakeLists.txt
akefile
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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
5b1b4489cf3a0f56f8be0673fc5cc380a32d277b 01-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetSubtarget to TargetSubtargetInfo for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134259 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
94214703d97d8d9dfca88174ffc7e94820a85e62 01-Jul-2011 Evan Cheng <evan.cheng@apple.com> - Added MCSubtargetInfo to capture subtarget features and scheduling
itineraries.
- Refactor TargetSubtarget to be based on MCSubtargetInfo.
- Change tablegen generated subtarget info to initialize MCSubtargetInfo
and hide more details from targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134257 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
eb03c3b22861e5fb6459aa055378e852df29b621 01-Jul-2011 Jim Grosbach <grosbach@apple.com> Fix off-by-one error.

(low two bits always zero, so off by one bit of encoded value).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134247 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
4db3cffe94a5285239cc0056f939c6b74a5ca0b6 01-Jul-2011 Evan Cheng <evan.cheng@apple.com> Hide the call to InitMCInstrInfo into tblgen generated ctor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134244 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
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
RMExpandPseudoInsts.cpp
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
53d48080e55bf0c99cb7ca9de5b15a084d7324b5 01-Jul-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r134237 at Fri. 1st July 2011.

Conflicts:
lib/Target/ARM/ARMCodeEmitter.cpp
5e653c925c7da969c3fb5fa9a46263ffb160b81e 01-Jul-2011 Eric Christopher <echristo@apple.com> Add support for the 'j' immediate constraint. This is conditionalized on
supporting the instruction that the constraint is for 'movw'.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134222 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d5dc9eca2beece0faa85e7cbf17182fe7fcd0b36 01-Jul-2011 Eric Christopher <echristo@apple.com> Add support for the ARM 't' register constraint. And another testcase
for the 'x' register constraint.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134220 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1070f82569be2602640e15e3a0a3eda55228b8aa 01-Jul-2011 Eric Christopher <echristo@apple.com> We'll return a null RC by default if we can't match.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134217 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
89bd71fc53fc95f2526e07ec338a8c998e9ead8d 01-Jul-2011 Eric Christopher <echristo@apple.com> Add support for the 'x' constraint.

Part of rdar://9307836 and rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134215 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
09b4467ac556e82ba5ff368b035d38697d8459da 01-Jul-2011 Eric Christopher <echristo@apple.com> Capitalize the unsigned part of the initializer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134211 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
35e6d4d6b6f975157beb1ff8c939fac6699d710c 01-Jul-2011 Eric Christopher <echristo@apple.com> Rename Pair to RCPair lacking any better naming ideas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134210 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2a7b41ba4d3eb3c6003f6768dc20b28d83eac265 01-Jul-2011 Jim Grosbach <grosbach@apple.com> Refact ARM Thumb1 tMOVr instruction family.

Merge the tMOVr, tMOVgpr2tgpr, tMOVtgpr2gpr, and tMOVgpr2gpr instructions
into tMOVr. There's no need to keep them separate. Giving the tMOVr
instruction the proper GPR register class for its operands is sufficient
to give the register allocator enough information to do the right thing
directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134204 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFrameLowering.cpp
RMInstrThumb.td
humb1FrameLowering.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2SizeReduction.cpp
73744df0c467895bac9e25d5c62f34a0a8fcc4f9 01-Jul-2011 Eric Christopher <echristo@apple.com> Add support for the 'h' constraint.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134203 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMRegisterInfo.td
a8cca80d4ac9ad94223b31e1c2203a30825529ed 01-Jul-2011 Eric Christopher <echristo@apple.com> Add a convenience typedef for std::pair<unsigned, const TargetRegisterClass*>.

No functional change.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134198 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
63b46faeb8acae9b7e5f865b7417dc00b9b9dad3 01-Jul-2011 Jim Grosbach <grosbach@apple.com> Thumb1 register to register MOV instruction is predicable.

Fix a FIXME and allow predication (in Thumb2) for the T1 register to
register MOV instructions. This allows some better codegen with
if-conversion (as seen in the test updates), plus it lays the groundwork
for pseudo-izing the tMOVCC instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134197 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFrameLowering.cpp
RMInstrThumb.td
smParser/ARMAsmParser.cpp
humb1FrameLowering.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
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
RMExpandPseudoInsts.cpp
RMInstrThumb.td
RMInstrThumb2.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
RMAsmPrinter.cpp
RMInstrThumb2.td
4629d505011d6d88ce181985005761df0dd3cbef 30-Jun-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize the Thumb tPOP_RET instruction.

It's just a tPOP instruction with additional code-gen properties, so it
doesn't need encoding information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134172 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrThumb.td
dafc17e2c2a13697f7f80f5965104290e2912464 30-Jun-2011 Jim Grosbach <grosbach@apple.com> Kill dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134131 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
41ca4b7b62fc40b3207eff0526171653605efa19 30-Jun-2011 Jim Grosbach <grosbach@apple.com> Size reducing SP adjusting t2ADDri needs to check predication.

tADDrSPi is not predicable, so we can't size-reduce a t2ADDri to it if the
predicate is anything other than "always."



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134130 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
4cc446bc400b2ff58af81c91f5e145b81d6beb26 30-Jun-2011 Evan Cheng <evan.cheng@apple.com> Fix ARMSubtarget feature parsing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134129 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
276365dd4bc0c2160f91fd8062ae1fc90c86c324 30-Jun-2011 Evan Cheng <evan.cheng@apple.com> Fix the ridiculous SubtargetFeatures API where it implicitly expects CPU name to
be the first encoded as the first feature. It then uses the CPU name to look up
features / scheduling itineray even though clients know full well the CPU name
being used to query these properties.

The fix is to just have the clients explictly pass the CPU name!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134127 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
smParser/ARMAsmLexer.cpp
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
RMAsmPrinter.cpp
RMBaseRegisterInfo.cpp
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
humb2InstrInfo.cpp
humb2SizeReduction.cpp
faff12731968c2d3f1ff56a43749d27e1696aafa 30-Jun-2011 Cameron Zwarich <zwarich@apple.com> In the ARM global merging pass, allow extraneous alignment specifiers. This pass
already makes the assumption, which is correct on ARM, that a type's alignment is
less than its alloc size. This improves codegen with Clang (which inserts a lot of
extraneous alignment specifiers) and fixes <rdar://problem/9695089>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134106 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
fa6f5917af0ee34e6a8d6d6eaffe89024d5d7a04 29-Jun-2011 Eric Christopher <echristo@apple.com> Remove getRegClassForInlineAsmConstraint from the ARM port.

Part of rdar://9643582


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134095 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
74472b4bf963c424da04f42dffdb94c85ef964bc 29-Jun-2011 Jim Grosbach <grosbach@apple.com> Refactor away tSpill and tRestore pseudos in ARM backend.

The tSpill and tRestore instructions are just copies of the tSTRspi and
tLDRspi instructions, respectively. Just use those directly instead.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134092 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrThumb.td
humb1FrameLowering.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
ab8be96fd30ca9396e6b84fdddf1ac6208984cad 29-Jun-2011 Evan Cheng <evan.cheng@apple.com> Sink SubtargetFeature and TargetInstrItineraries (renamed MCInstrItineraries) into MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134049 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
d5b03f252c0db6b49a242abab63d7c5a260fceae 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> Move CallFrameSetupOpcode and CallFrameDestroyOpcode to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134030 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFastISel.cpp
6844f7bcdec8c2691c8d1067d90e4a02cf658c27 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> Hide more details in tablegen generated MCRegisterInfo ctor function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134027 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
22fee2dff4c43b551aefa44a96ca74fcade6bfac 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> Merge XXXGenRegisterNames.inc into XXXGenRegisterInfo.inc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134024 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMBaseInstrInfo.cpp
RMInstrInfo.cpp
MakeLists.txt
isassembler/ARMDisassemblerCore.cpp
akefile
humb1InstrInfo.cpp
humb2InstrInfo.cpp
e837dead3c8dc3445ef6a0e2322179c57e264a13 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134021 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMHazardRecognizer.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
RMMCCodeEmitter.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
LxExpansionPass.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
humb2SizeReduction.cpp
118c9a0c494c97fe23c43f3e2aca553aea3a4f16 28-Jun-2011 Chad Rosier <mcrosier@apple.com> Remove warning: 'c0' may be used uninitialized in this function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134014 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
df8fe9901df829a02d1257121f35a78a434aca0d 27-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM Asm parsing of Thumb2 move immediate.

Thumb2 MOV mnemonic can accept both cc_out and predication. We don't (yet)
encode the instruction properly, but this gets the parsing part.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133945 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
15993f83a419950f06d2879d6701530ae6449317 27-Jun-2011 Evan Cheng <evan.cheng@apple.com> More refactoring. Move getRegClass from TargetOperandInfo to TargetInstrInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133944 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMLoadStoreOptimizer.cpp
LxExpansionPass.cpp
d1f0bbee189ea7cd18d03c4f9f55d0a33b070814 27-Jun-2011 Jim Grosbach <grosbach@apple.com> Add exception necessitated by 133938.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133939 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
660a9ec4aa08b42a1379e5caa3935d301b1e27b7 27-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM assembly carry set/clear condition code aliases for 'hi/lo'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133938 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fbd01783a67dd2bedd8197308ef00d4ad767fcd3 27-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM assembler support for ldmfd/stmfd mnemonics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133936 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0d06bb954881dc7ff0e2333d5a3e249b7bb304d0 27-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM assembler support for vpush/vpop.

Add aliases for the vpush/vpop mnemonics to the VFP load/store multiple
writeback instructions w/ SP as the base pointer.

rdar://9683231



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133932 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
0ff9220ccb6ef419ba4d3a4daf98f4658a9e5134 27-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM Assembly syntax support for arithmetic implied dest operand.

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:
sub r2, r2, #6
sub r2, #6

rdar://9682597



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133925 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
73f50d9bc3bd46cc0abeba9bb0d46977ba1aea42 27-Jun-2011 Evan Cheng <evan.cheng@apple.com> Merge XXXGenRegisterDesc.inc XXXGenRegisterNames.inc XXXGenRegisterInfo.h.inc
into XXXGenRegisterInfo.inc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133922 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
MakeLists.txt
akefile
ba8297ec08cdf7ae0c1e0c18ce07922e1f822643 25-Jun-2011 Jim Grosbach <grosbach@apple.com> Refactor MachO relocation generaration into the Target directories.

Move the target-specific RecordRelocation logic out of the generic MC
MachObjectWriter and into the target-specific object writers. This allows
nuking quite a bit of target knowledge from the supposedly target-independent
bits in lib/MC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133844 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachObjectWriter.cpp
8b45456700f1e156b0a14000124f274dfac86f14 24-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM movw/movt fixups need to mask the high bits.

The fixup value comes in as the whole 32-bit value, so for the lo16 fixup,
the upper bits need to be masked off. Previously we assumed the masking had
already been done and asserted.

rdar://9635991

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133818 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
ef01edf1e938ef89e598ec558c50ceb2681c5ac4 24-Jun-2011 Chad Rosier <mcrosier@apple.com> The Neon VCVT (between floating-point and fixed-point, Advanced SIMD)
instructions can be used to match combinations of multiply/divide and VCVT
(between floating-point and integer, Advanced SIMD). Basically the VCVT
immediate operand that specifies the number of fraction bits corresponds to a
floating-point multiply or divide by the corresponding power of 2.

For example, VCVT (floating-point to fixed-point, Advanced SIMD) can replace a
combination of VMUL and VCVT (floating-point to integer) as follows:

Example (assume d17 = <float 8.000000e+00, float 8.000000e+00>):
vmul.f32 d16, d17, d16
vcvt.s32.f32 d16, d16
becomes:
vcvt.s32.f32 d16, d16, #3

Similarly, VCVT (fixed-point to floating-point, Advanced SIMD) can replace a
combinations of VCVT (integer to floating-point) and VDIV as follows:

Example (assume d17 = <float 8.000000e+00, float 8.000000e+00>):
vcvt.f32.s32 d16, d16
vdiv.f32 d16, d17, d16
becomes:
vcvt.f32.s32 d16, d16, #3

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133813 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a347f85dbeee37a7f2bb68df1a7d4cdfbb7b576d 24-Jun-2011 Evan Cheng <evan.cheng@apple.com> Starting to refactor Target to separate out code that's needed to fully describe
target machine from those that are only needed by codegen. The goal is to
sink the essential target description into MC layer so we can start building
MC based tools without needing to link in the entire codegen.

First step is to refactor TargetRegisterInfo. This patch added a base class
MCRegisterInfo which TargetRegisterInfo is derived from. Changed TableGen to
separate register description from the rest of the stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133782 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
MakeLists.txt
akefile
df214fa51715896d0cd5a407e8e4c57454619fc2 23-Jun-2011 Evan Cheng <evan.cheng@apple.com> Remove TargetOptions.h dependency from ARMSubtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133738 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMTargetMachine.cpp
d095764b07f2e8f8c555ee2d4c3cdb8d42ad4a27 23-Jun-2011 Nowar Gu <nowar100@gmail.com> Fix source list of Android.mk.
ndroid.mk
bb5c18c80e7ae4ce49eb9067b664f0559ec50965 23-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133679 at Thu. 23th Jun 2011.
d7d71a18597e7f3b88055e3f3dde09d8648233ee 22-Jun-2011 Jim Grosbach <grosbach@apple.com> Add missing header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133640 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
2fc689888623743502b62e979767dd5c71e692bb 22-Jun-2011 Jim Grosbach <grosbach@apple.com> Move ARMMachObjectWriter to its own file.

Just tidy up a bit. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133638 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmBackend.cpp
RMMachObjectWriter.cpp
MakeLists.txt
1312ca8be679b332bb712328085e50121d4b94ec 22-Jun-2011 Eric Christopher <echristo@apple.com> Handle the memory-ness of all U+ ARM constraints.

Noticed on inspection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133553 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
907af0f20f58f2ea26da7ea64e1f094cd6880db7 17-Jun-2011 Nowar Gu <nowar100@gmail.com> Merge upstream to r133240 at Fri. 17th Jun 2011.

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/ARM/ARMCodeEmitter.cpp
1d4f9a57447faa0142a1d0301e5ce550cfe60c4f 17-Jun-2011 Nowar Gu <nowar100@gmail.com> Suppress un-initialize warning.

We should do bitwise operation on un-initialized variable.
Maybe this stub lose some information, but I don't know.
Anyway, I clear it to 0.
RMCodeEmitter.cpp
1396c403897e3d3e04fbf59f6c5fe77cbbab74a6 18-Jun-2011 Benjamin Kramer <benny.kra@googlemail.com> Remove unused but set variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133347 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0a074ed3ef7c87512d8562ff216e2ad4a29b6566 18-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch ARM to using AltOrders instead of MethodBodies.

This slightly changes the GPR allocation order on Darwin where R9 is not
a callee-saved register:

Before: %R0 %R1 %R2 %R3 %R12 %R9 %LR %R4 %R5 %R6 %R8 %R10 %R11
After: %R0 %R1 %R2 %R3 %R9 %R12 %LR %R4 %R5 %R6 %R8 %R10 %R11

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133326 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
3b6434e360315849a65b1ac85e16d160131a77a4 18-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Reserve D16-D13 on subtargets that don't support them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133321 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
7982b43e731a17981eb2399bce20169933d52c3a 17-Jun-2011 Shih-wei Liao <sliao@google.com> Optimizing away Binary &= ~(0x80000000 >> 12) and Binary |= (Imm & 0x80000000) >> 12

The key is that the classical JIT does: unsigned Binary = getBinaryCodeForInstr(MI);
As a result, it will get information from ARMInstrVFP.td. Because regardless of my
previous CLs I20394c2c and I9a8e7177, the old td and the new td will result in
the same immed{31}.

See Line 1080 of ARMInstrVFP.td: let Inst{19} = imm{31};

In short, we only need to fix the difference between old td and the new td.

Change-Id: I02695ece0f15e77f7bd712961db1a24bd3c487d7
RMCodeEmitter.cpp
aa9bc19930f66ade30857fa50617f1e70952f8db 17-Jun-2011 Shih-wei Liao <sliao@google.com> The reason for the Change is because LLVM upstream did this commit last year:

commit a4776de44edaa3c84035632c60247b97eab08ff2
Author: Bill Wendling <isanbard@gmail.com>
Date: Thu Oct 14 02:33:26 2010 +0000

Add support for vmov.f64/.f32 encoding. There's a bit of a hack going on
here. The f32 in FCONSTS is handled as a double instead of a float in the
code. So the encoding of the immediate into the instruction isn't exactly in
line with the documentation in that regard. But given that we know it's handled
as a double, it doesn't cause any harm.

Wendling's Change caused USE_OLD_JIT to break, so, when merging a while ago, we only
took part of commit a4776de. Now when we switch to USE_MCJIT, we have to take the
entirety of commit a4776de.

However, the entirety of a4776de implies that we have to fix ARMCodeEmitter.cpp here,
to make sure that classical JIT and MC JIT work at the same time.
This should have been done upstream, but LLVM upstream obviously deprecates
classical JIT (USE_OLD_JIT) during Q3 last year. But we are now just in the
process of switching to USE_MCJIT. Anyway, LLVM has the right to deprecate things
that are not ToT. When we stay close to ToT, we can avoid such mess next time.

Change-Id: I20394c2c6f2c3943b2afd64ca418891e9361ebe7
RMCodeEmitter.cpp
cd4e0b593db6dfdb5cedbde47ea6603058b8ac6c 17-Jun-2011 Cameron Zwarich <zwarich@apple.com> Update an insertion point iterator after replacing a return instruction with a
tail call pseudoinstruction. This fixes <rdar://problem/9624333>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133227 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
e1fd84af7affc08cda70a4c8261f52ac83195bc4 17-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Explicitly invoke ArrayRef constructor to keep gcc happy.

Patch by Richard Smith!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133220 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
dd5a8471526ceadf9bceb1a1221299b3db49c33a 17-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename TRI::getAllocationOrder() to getRawAllocationOrder().

Also switch the return type to ArrayRef<unsigned> which works out nicely
for ARM's implementation of this function because of the clever ArrayRef
constructors.

The name change indicates that the returned allocation order may contain
reserved registers as has been the case for a while.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133216 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
1300f3019e5d590231bbc3d907626708515d3212 16-Jun-2011 Owen Anderson <resistor@mac.com> Change the REG_SEQUENCE SDNode to take an explict register class ID as its first operand. This operand is lowered away by the time we reach MachineInstrs, so the actual register-allocation handling of them doesn't need to change.
This is intended to support using REG_SEQUENCE SDNode's with type MVT::untyped, and is part of the long road to eliminating some of the hacks we currently use to support register pairs and other strange constraints, particularly on ARM NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133178 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c75448c74051200602a8006bab45d747e61a5c3c 16-Jun-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Mark ldrexd/strexd w/ volatile memory by default

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133175 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
689edc8b2845f7a6cf9403722de2000598f68489 16-Jun-2011 Chad Rosier <mcrosier@apple.com> Revision r128665 added an optimization to make use of NEON multiplier
accumulator forwarding. Specifically (from SVN log entry):

Distribute (A + B) * C to (A * C) + (B * C) to make use of NEON multiplier
accumulator forwarding:
vadd d3, d0, d1
vmul d3, d3, d2
=>
vmul d3, d0, d2
vmla d3, d1, d2

Make sure it catches cases where operand 1 is add/fadd/sub/fsub, which was
intended in the original revision.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133127 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f28987b76e758b5f2fcc2c5d2c8e073df54ca91e 16-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use set operations instead of plain lists to enumerate register classes.

This simplifies many of the target description files since it is common
for register classes to be related or contain sequences of numbered
registers.

I have verified that this doesn't change the files generated by TableGen
for ARM and X86. It alters the allocation order of MBlaze GPR and Mips
FGR32 registers, but I believe the change is benign.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133105 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
b460d4ba2d88c13480c2a6a8495de9d07a2c9f66 15-Jun-2011 Shih-wei Liao <sliao@google.com> Fix the wrong encoding of vmov.32's immed8 value in LLVM's ARMInstrVFP.td.

Taking Renderscript Balls as example,
fc: eeb00a03 vmov.f32 s0, #3
120: edd00a02 vldr s1, [r0, #8]
128: ee600a80 vmul.f32 s1, s1, s0

VFPexpand in ARM's hardware will expand #3 above to 0x4e180000. This corresponds
to floating point value of 2.375. However, in the original Balls code it is 6.0.
As a result, Balls got smaller recently.

Note that 6.0 in F32 is 0x40c00000 and 6.0 in F64 is 0x4018000000000000! This leads
to how I fixed the bug.

Change-Id: I9a8e71771884dc27d5b9392abe7dfa541b45f357
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb2.td
7a10ab7d6f50b59580cc8ab1eb52d562e81f28d8 15-Jun-2011 Bob Wilson <bob.wilson@apple.com> A minor simplification: no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133047 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bf188aeae7a579fb71480be7d32a2edc4d56d827 15-Jun-2011 Evan Cheng <evan.cheng@apple.com> PerformBFICombine - (bfi A, (and B, Mask1), Mask2) -> (bfi A, B, Mask2) iff
the bits being cleared by the AND are not demanded by the BFI.

The previous BFI dag combine rule was actually incorrect (or used to be
correct until BFI representation changed).

rdar://9609030


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133034 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
189531f317d0b3a082f78cc2da44128e4ff8e17d 15-Jun-2011 Tanya Lattner <tonic@nondot.org> Add an optimization that looks for a specific pair-wise add pattern and generates a vpaddl instruction instead of scalarizing the add.
Includes a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133027 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a6eb2562b62fc293295f2fede2608753563e7005 14-Jun-2011 Evan Cheng <evan.cheng@apple.com> Also recognize ARM v4t and v5e variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133002 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
9a767330f555f21d6ef311d3a348d3a44f306d35 14-Jun-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add one more argument to the prefetch intrinsic to indicate whether it's a data
or instruction cache access. Update the targets to match it and also teach
autoupgrade.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132976 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.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
RMBaseInstrInfo.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
7980f61f5ff408b947474cd1c3715896d28ea578 13-Jun-2011 Jim Grosbach <grosbach@apple.com> Fix coordination for using R4 in Thumb1 as a scratch for SP restore.

The logic for reserving R4 for use as a scratch needs to match that for
actually using it. Also, it's not necessary for immediate <=508, so adjust
the value checked.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132934 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
humb1FrameLowering.cpp
a86686e643323762bf9383a0897a55257611aa74 10-Jun-2011 Cameron Zwarich <zwarich@apple.com> Provide an ARMCCState subclass of CCState so that ARM clients will always set
CallOrPrologue correctly and eliminate the existing setter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132856 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a2e979565b2704ccb76d8e8d384723702b770c53 10-Jun-2011 Cameron Zwarich <zwarich@apple.com> A CCState was being created without setting whether it is in the Call or Prologue state,
causing an assertion failure downstream. This fixes <rdar://problem/9562908>.

This really seems like it should always be set at CCState creation time, so mistakes like
this can never happen. I'll take a look at doing that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132811 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
471e4224809f51652c71f319532697a879a75a0d 09-Jun-2011 Eric Christopher <echristo@apple.com> Add a parameter to CCState so that it can access the MachineFunction.

No functional change.

Part of PR6965


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132763 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
cf714d44b89864cf92d9c73508154457d0c65d9c 03-Jun-2011 Eric Christopher <echristo@apple.com> Make the Uv constraint a memory operand. This doesn't solve the
addressing mode problem mentioned in r132559.

Backend part of rdar://9037836 and part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132561 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d6412c940ef863d02595f7be094d8cd3afc908a1 03-Jun-2011 Eli Friedman <eli.friedman@gmail.com> Add ARM fast-isel support for materializing the address of a global in cases where the global uses an indirect symbol.

rdar://9431157



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132522 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
100c83341676d8aae8fc34b5452563ed08b14f3e 03-Jun-2011 Eric Christopher <echristo@apple.com> Have LowerOperandForConstraint handle multiple character constraints.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132510 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
4f3fb6d08be511a277f92279e803ae6e95b00126 03-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Flag unallocatable register classes instead of giving them empty
allocation orders.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132509 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
201cfcd6de70f45174567572028b6e53f7e7d92b 02-Jun-2011 Tanya Lattner <tonic@nondot.org> Fix encoding for VEXTdf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132486 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
fa226bccaa90c520cac154df74069bbabb976eab 02-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use TRI::has{Sub,Super}ClassEq() where possible.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132455 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
cde4ce411b1ace4a80ea1dd38df97e8508aed0c9 02-Jun-2011 Rafael Espindola <rafael.espindola@gmail.com> Don't hardcode the %reg format in the streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132451 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
6e032942cf58d1c41f88609a1cec74eb74940ecd 30-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Use the dwarf->llvm mapping to print register names in the cfi
directives.

Fixes PR9826.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132317 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
5f8fd54f0891aa47f467498454f6a3df8ae62704 29-May-2011 John McCall <rjmccall@apple.com> On Darwin ARM, set the UNWIND_RESUME libcall to _Unwind_SjLj_Resume.
This is important for the correct lowering of unwind instructions
(which doesn't matter at all) and llvm.eh.resume calls (which does).

Take 2, now with more basic competence.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132295 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7eebab2a82cf13d0166299c7eb4f6234e16c8a5d 29-May-2011 John McCall <rjmccall@apple.com> I didn't mean to commit these residues of a personal project.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132293 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
832a9d1a76d30ffd295453e93e8eb52948e5813e 29-May-2011 John McCall <rjmccall@apple.com> On Darwin ARM, set the UNWIND_RESUME libcall to _Unwind_SjLj_Resume.
This is important for the correct lowering of unwind instructions
(which doesn't matter at all) and llvm.eh.resume calls (which does).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132291 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c152aa6c86f87be6f3ca9b6e2d57ee31b9258385 28-May-2011 Cameron Zwarich <zwarich@apple.com> Fix ARM fast isel to correctly flag memory operands to stores. This fixes
-verify-machineinstrs failures on several tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132268 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
fea51fc007598176d48fb7319a9bf471efb93127 28-May-2011 Eric Christopher <echristo@apple.com> This actually starts at offset 0, not 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132246 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
3c14f24c9da3f811d3530e984e692acf1a471b91 28-May-2011 Eric Christopher <echristo@apple.com> Implement the 'M' output modifier for arm inline asm. This is fairly
register allocation dependent and will occasionally break. WIP in the
register allocator to model paired/etc registers.

rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132242 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
de64aaf6c8ab3a170b2e5a5b0968595503b5aad4 28-May-2011 Cameron Zwarich <zwarich@apple.com> Fix the remaining atomic intrinsics to use the right register classes on Thumb2,
and add some basic tests for them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132235 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
be64b394317feb8d7bcb732bdfb35e0b286efd4c 28-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> ARM asm parser wasn't able to parse a "mov" instruction while in Thumb
mode (only the "mov.w" variant). Now, when parsing "mov" in thumb mode,
default to the Thumb 1 versions/encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132233 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5b23b7fe3150b2050d6fcd6981d64f30930fd3ef 28-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Make size computation less brittle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132222 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
4abce0c90b0c7c7c859951069baf0c0a70e085a9 27-May-2011 Evan Cheng <evan.cheng@apple.com> Don't use movw / movt for iOS static codegen for now to workaround some tools issues. rdar://9514789

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132211 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a4d487fc1e2f95f4b47ad472071bfdd484eb3b40 27-May-2011 Eli Friedman <eli.friedman@gmail.com> Fix a silly mistake (which trips over an assertion) in r132099. rdar://9515076



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132194 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
33281b23616bea25decc838cb8707a2861f9d767 27-May-2011 Eric Christopher <echristo@apple.com> Make the branch encoding for tBcc more obvious that it's a 4-byte opcode
followed by a conditional and imm8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132179 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
86bbcbf4b046761ff5bed71ac530a899af331a04 27-May-2011 Eric Christopher <echristo@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132178 91177308-0d34-0410-b5e6-96231b3b80d8
RMFixupKinds.h
32bfb2c513c4efdc1db9967ddfecce8c922dda4f 26-May-2011 Eric Christopher <echristo@apple.com> Reorganize these slightly according to operand type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132128 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
421b106872d9c8adb4f14d77a8c6a1afeaaa29f6 26-May-2011 Cameron Zwarich <zwarich@apple.com> Mark tBX as an indirect branch rather than a return.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132107 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrThumb.td
76927d7303046058c627691bd45d6bff608f49f4 26-May-2011 Eli Friedman <eli.friedman@gmail.com> Rewrite fast-isel integer cast handling to handle more cases, and to be simpler and more consistent.

The practical effects here are that x86-64 fast-isel can now handle trunc from i8 to i1, and ARM fast-isel can handle many more constructs involving integers narrower than 32 bits (including loads, stores, and many integer casts).

rdar://9437928 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132099 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ad70f6d2b1eacdc2c85e7cfec24e4c470325ef4e 25-May-2011 Cameron Zwarich <zwarich@apple.com> Convert tBX_CALL / tBXr9_CALL to actual pseudoinstructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132086 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrThumb.td
7bb1c4054986e51682ff89170c740cc16b921236 25-May-2011 Eric Christopher <echristo@apple.com> Clean up comment a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132083 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
8f8946389418ce3cdbf69bbf34443efe0c874b40 25-May-2011 Eric Christopher <echristo@apple.com> Implement the 'm' modifier. Note that it only works for memory operands.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132081 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
783c66414ae54ddc9879843b4bc878dc66a70478 25-May-2011 Eli Friedman <eli.friedman@gmail.com> Prepare ARMFastISel::SelectSIToFP for getRegForValue returning registers for i8 and i16 values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132073 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
da86a0828495948efd509262167a7f390cda3216 25-May-2011 Cameron Zwarich <zwarich@apple.com> Restore an accidentally removed comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132044 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
8e9bace414b9c6bc853849fe767637bf8b8a4c97 25-May-2011 Cameron Zwarich <zwarich@apple.com> Move some code to a more logical place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132043 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
106acd4158768ff1948accc654a1892caa9e010b 25-May-2011 Cameron Zwarich <zwarich@apple.com> Make tTAILJMPr/tTAILJMPrND emit a tBX without a preceding MOV of PC to LR. This
fixes <rdar://problem/9495913>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132042 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
328634598fb8dbb774709aebc61a97d63f7027b3 25-May-2011 Cameron Zwarich <zwarich@apple.com> Change the order of tBX's operands so that the predicate operands come after the
target register, matching BX. I filed this bug because I was confused at first:

PR10007 - ARM branch instructions have inconsistent predicate operand placement
<http://llvm.org/bugs/show_bug.cgi?id=10007>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132041 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
8f161c3a95d844746be41332c763fb308aae3c9c 25-May-2011 Cameron Zwarich <zwarich@apple.com> Rename tBX_Rm to tBX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132040 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
b36c1ae6d504168b496ac11031da4bdac0024f80 25-May-2011 Cameron Zwarich <zwarich@apple.com> Rename the existing tBX/tBXr9 instructions to tBX_CALL/tBXr9_CALL to better
reflect their actual meaning and match the ARM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132039 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrThumb.td
56926a39619bd644c83c4128f0b55189e52707d7 25-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix PR9762
Enable the parsing of the operand "cpsr_all" for the ARM msr instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132026 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4db7dec70b06a1d50a265c3666e126065e09f396 25-May-2011 Eric Christopher <echristo@apple.com> Implement the arm 'L' asm modifier.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132024 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
e1739d598d2c980822cc42bbf9821b91ebbc829f 25-May-2011 Eric Christopher <echristo@apple.com> Implement the immediate part of the 'B' modifier.

Part of rdar://9119939


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132023 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
fef50062eae28fc6d893cd3ef528f8ca85cd50b0 25-May-2011 Eric Christopher <echristo@apple.com> Add more unimplemented asm modifiers and some documentation of what they
do.

Part of rdar://9119939.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132015 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0628d38085b28a59a4b13d7e35760cce54f0af7a 25-May-2011 Eric Christopher <echristo@apple.com> Add support for the arm 'y' asm modifier.

Fixes part of rdar://9444657


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132011 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d34d429401187f4251c38323a1bc517bc96763b9 23-May-2011 Cameron Zwarich <zwarich@apple.com> Fix <rdar://problem/9476260> by having tail calls always generate 32-bit branches
in Darwin Thumb2 code. Tail calls are already disabled on Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131894 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
1ec11fb8b502971071a57b8b2de129f86bd41de0 22-May-2011 Renato Golin <renato.golin@arm.com> RTABI chapter 4.3.4 specifies __eabi_mem* calls. Specifically, __eabi_memset accepts parameters (ptr, size, value) in a different order than GNU's memset (ptr, value, size), therefore the special lowering in AAPCS mode. Implementation by Evzen Muller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131868 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
75f4296c7c96499f4d8cdf90d5159f7965f94fd8 22-May-2011 Johnny Chen <johnny.chen@apple.com> Fix Bug 9386 - ARM disassembler failed to disassemble conditional bx

Modified the patch to .td file supplied by Jyun-Yan You. Add a test case and
modified ARMDisassemblerCore.cpp a little bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131859 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
b8adb8af0fa9d1405fcf2edb95f4b1b8d1904716 20-May-2011 Rafael Espindola <rafael.espindola@gmail.com> adds some attributes to attribute section when cpu is "xscale"
(this is what used in Android NDK, when architecture is ARMv5)

patch by Koan-Sin Tan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131751 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
298c8e12ea063f7522c59d2a297b47a879b6ed55 20-May-2011 Rafael Espindola <rafael.espindola@gmail.com> fixes target address tBL and tBLX and sets relocation type
of tBL/tBLX to R_ARM_THM_CALL (ARM ELF 4.7.1.6)

Patch by koan-sin tan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131748 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
0b65599015f0b51304d941ba4a14aaf0d1734341 20-May-2011 Evan Cheng <evan.cheng@apple.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131739 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
2e6496026f41d2c05ff038d14df9972f8a27fb94 20-May-2011 Evan Cheng <evan.cheng@apple.com> Revert r131664 and fix it in instcombine instead. rdar://9467055

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131708 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
861b9c6a397f2ed4b5601cacbc9121d0b07d1f65 19-May-2011 Jason W Kim <jason.w.kim.2009@gmail.com> This fixes one divergence between LLVM and binutils for ARM in the
text section.

Assume the following bit of annotated assembly:

.section .data.rel.ro,"aw",%progbits
.align 2
.LAlpha:
.long startval(GOTOFF)

.text
.align 2
.type main,%function
.align 4

main: ;;; assume "main" starts at offset 0x20
0x0 push {r11, lr}
0x4 movw r0, :lower16:(.LAlpha-(.LBeta+8))
;;; ==> (.AddrOf(.LAlpha) - ((.AddrOf(.LBeta) - .AddrOf(".")) + 8)
;;; ==> (??? - ((16-4) + 8) = -20
0x8 movt r0, :upper16:(.LAlpha-(.LBeta+8))
;;; ==> (.AddrOf(.LAlpha) - ((.AddrOf(.LBeta) - .AddrOf(".")) + 8)
;;; ==> (??? - ((16-8) + 8) = -16
0xc ... blah

.LBeta:
0x10 add r0, pc, r0
0x14 ... blah

.LGamma:
0x18 add r1, pc, r1

Above snippet results in the following relocs in the .o file for the
first pair of movw/movt instructions

00000024 R_ARM_MOVW_PREL_NC .LAlpha
00000028 R_ARM_MOVT_PREL .LAlpha

And the encoded instructions in the .o file for main: must be

00000020 <main>:
20: e92d4800 push {fp, lr}
24: e30f0fec movw r0, #65516 ; 0xffec i.e. -20
28: e34f0ff0 movt r0, #65520 ; 0xfff0 i.e. -16

However, llc (prior to this commit) generates the following sequence

00000020 <main>:
20: e92d4800 push {fp, lr}
24: e30f0fec movw r0, #65516 ; 0xffec - i.e. -20
28: e34f0fff movt r0, #65535 ; 0xffff - i.e. -1

What has to happen in the ArmAsmBackend is that if the relocation is PC
relative, the 16 bits encoded as part of movw and movt must be both addends,
not addresses. It makes sense to encode addresses by right shifting the value
by 16, but the result is incorrect for PIC.
i.e., the right shift by 16 for movt is ONLY valid for the NON-PCRel case.

This change agrees with what GNU as does, and makes the PIC code run.

MC/ARM/elf-movt.s covers this case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131674 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
6635b04a4357caf6544cd0a7dbc4c107e7907a88 19-May-2011 Jim Grosbach <grosbach@apple.com> 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131649 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
28e2b1d29ad409479f0c6a3aa3f663c847b5994a 19-May-2011 Mon P Wang <wangmp@apple.com> Fixed sdiv and udiv for <4 x i16>. The test from r125402 still applies for this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131630 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
462b6dc6bfd95b82eb8a0d2bd8f15a76e7b15957 19-May-2011 Cameron Zwarich <zwarich@apple.com> Reuse the TargetInstrDesc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131625 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
21803721d538255e4d223c29b6c8d3c9e93d4d86 19-May-2011 Cameron Zwarich <zwarich@apple.com> Correctly constrain a register class when computing frame offsets, as the Thumb2
add instruction takes an rGPR. This fixes the last of PR8825.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131619 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
db28247522af0a6190c9cab8dc32e7d4df9f5509 18-May-2011 Tanya Lattner <tonic@nondot.org> Handle perfect shuffle case that generates a vrev for vectors of floats.
Add test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131582 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
955db42568ae61c9f381a5af3e354d4270d06d92 18-May-2011 Cameron Zwarich <zwarich@apple.com> Fix more of PR8825. Now all of CodeGen/ARM passes with VerifyCoalescing turned on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131578 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
a96581f4f70fa305e4d0726f20b0ec687fca7b7c 18-May-2011 Johnny Chen <johnny.chen@apple.com> Disassembly of tBcc was wrongly adding 4 to the SignExtend'ed imm8:'0' immediate operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131565 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
b936e3006f04f60aca4c4de4a3604ec141ab0a45 18-May-2011 Evan Cheng <evan.cheng@apple.com> Revise r131553. Just use the type of the input node and forgo the bitcast. rdar://9449159.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131555 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d48fda46f5b65f87e92a2bb94a722417bd5cc758 18-May-2011 Evan Cheng <evan.cheng@apple.com> Fix an ARMTargetLowering::LowerSELECT bug: legalized result must have same type as input. Sorry test cases only trigger when dag combine is disabled. rdar://9449178

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131553 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2a8eb722c7bb0fac2fe09a876f3471dcb25f465e 18-May-2011 Tanya Lattner <tonic@nondot.org> In r131488 I misunderstood how VREV works. It splits the vector in half and splits each half. Therefore, the real problem was that we were using a VREV64 for a 4xi16, when we should have been using a VREV32.
Updated test case and reverted change to the PerfectShuffle Table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131529 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMPerfectShuffle.h
141ec63962b6fca66ab0007ffc6e50de46a22b6f 18-May-2011 Cameron Zwarich <zwarich@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131519 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7d336c0c68f00f18c214fe5e689628f099a0f6d7 18-May-2011 Cameron Zwarich <zwarich@apple.com> Fix more of PR8825 by correctly using rGPR registers when lowering atomic
compare-and-swap intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131518 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
c81c9709ef219809b0d04c55a80a8d18c7194f6a 17-May-2011 Tanya Lattner <tonic@nondot.org> vrev is incorrectly defined in the perfect shuffle table. The ordering is backwards (should be 0x3210 versus 0x1032) which exposed a bug when doing a shuffle on a 4xi16. I've attached a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131488 91177308-0d34-0410-b5e6-96231b3b80d8
RMPerfectShuffle.h
0c720761903394c4dd232b9fe49da7d5fb40172b 17-May-2011 Jim Grosbach <grosbach@apple.com> Kill some dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131431 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6469540adf63d94a876c2b623cb4ca70479647f7 16-May-2011 Rafael Espindola <rafael.espindola@gmail.com> sets bit 0 of the function address of thumb function in .symtab
("T is 1 if the target symbol S has type STT_FUNC and the
symbol addresses a Thumb instruction ;it is 0 otherwise."
from "ELF for the ARM Architecture" 4.7.1.2)

Patch by Koan-Sin Tan!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131406 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smParser/ARMAsmParser.cpp
18901d63bf0deb117bd7a1ad69b25faa422ce378 11-May-2011 Owen Anderson <resistor@mac.com> Fix encoding of Thumb BLX register instructions. Patch by Koan-Sin Tan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131189 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
61512ba251097888963a8f07a35605564bcfc537 11-May-2011 Bill Wendling <isanbard@gmail.com> Give the 'eh.sjlj.dispatchsetup' intrinsic call the value coming from the setjmp
intrinsic call. This prevents it from being reordered so that it appears
*before* the setjmp intrinsic (thus making it completely useless).
<rdar://problem/9409683>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131174 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
f4351ceb93e472e82e99d67d3e05405f3a3698fb 10-May-2011 Jason W Kim <jason.w.kim.2009@gmail.com> First cut at getting debugging support for ARM/MC/ELF/.o

DWARF stuff also gets fixed up by ELFARMAsmBackend::ApplyFixup(),
but the offset is not guaranteed to be mod 4 == 0 as in text/data.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131137 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
183c627d89be5d0e8f3255ab7f6d1204c2fabedf 09-May-2011 Mon P Wang <wangmp@apple.com> Fixed MC encoding for index_align for VLD1/VST1 (single element from one lane) for size 32


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131085 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
ca66226e7e8368719f5b9937ed6523c7117a9d63 07-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the ARM sub-register indexes that are not needed by the sources.

Tablegen will invent its own names for these indexes, and the register file is a
bit simpler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131059 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
33c110e602bbdfee23cfb58fddef246a262647ab 07-May-2011 Eric Christopher <echristo@apple.com> Fix the non-MC encoding of pkhbt and pkhtb.

Patch by Stephen Hines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131045 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
fc5d305597ea6336d75bd7f3b741e8d57d6a5105 06-May-2011 Eli Friedman <eli.friedman@gmail.com> Make the logic for determining function alignment more explicit. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131012 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
f2b04232006142eb7933972fb21d9ffb9b8c2646 06-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Dead code elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130984 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
64915dec2802714f80751291d9e8c86af5e65cc5 04-May-2011 Devang Patel <dpatel@apple.com> Do not emit location expression size twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130854 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
e1a56ae7478c7495a753229f4bbe27eb9a44442c 03-May-2011 Bob Wilson <bob.wilson@apple.com> Temporarily disable use of divmod compiler-rt functions for iOS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130766 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
cca82149adef8306a295abdc963213ae3b11bbb6 03-May-2011 Dan Gohman <gohman@apple.com> Add an unfolded offset field to LSR's Formula record. This is used to
model constants which can be added to base registers via add-immediate
instructions which don't require an additional register to materialize
the immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130743 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
52f6c03a450aeed93b97cad9e5373029ebcad5e7 02-May-2011 Eric Christopher <echristo@apple.com> Apparently the check for direct calls is unnecessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130716 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3983d243ad2386d7c2c835c798db141b176ef4e7 30-Apr-2011 Stephen Hines <srhines@google.com> Fix PKH encoding issue (predicate bits matter).

Change-Id: Ic4a982c49a8232f5a0942c185a21834966682cf4
RMCodeEmitter.cpp
5ac179ccd2a03996f7b5ae7f12b5f45b8d38d832 30-Apr-2011 Eric Christopher <echristo@apple.com> 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130558 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b451770b264f9ef58d9565fdcd13551a89606cd4 30-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Zap a couple now-unused functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130557 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
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
RMFastISel.cpp
RMInstrInfo.td
RMInstrThumb2.td
d94bc549fcc34f1d97d27221ce5bbf46df207557 30-Apr-2011 Eric Christopher <echristo@apple.com> Add FastEmitInst_ii for the arm fast isel generator. It doesn't use it, but
if it ever did it needs the def machinery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130549 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
632ae892e6517e27791ac9e51188ca697ccc6515 29-Apr-2011 Eric Christopher <echristo@apple.com> Some cleanup and optimize fallthrough more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130546 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9ebf57ae132369248c885a90bc3dd5e3cf589247 29-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Re-committing r130454, which does not in fact break anything.

Fix a rather obscure crash caused by ARM fast-isel generating code which redefines a register.
rdar://problem/9338332 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130539 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bcf26aee86b1ab15b3e1442483eaa7be9fa00a82 29-Apr-2011 Eric Christopher <echristo@apple.com> Add trunc->branch support, this won't help with clang's i8->i1 truncations
for bools, but is a start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130534 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0eab5c4d85b4c4bb161bcdd959aa58a6f54415cc 29-Apr-2011 Daniel Dunbar <daniel@zuster.org> MCExpr: Add FindAssociatedSection, which attempts to mirror the 'as' semantics
that associate sections with expressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130517 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCExpr.h
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
RMInstrThumb2.td
d7d030a44796adc73a6eaa939cd17e52047734c1 29-Apr-2011 Chris Lattner <sabre@nondot.org> use the MachineInstrBuilder operator-> to simplify some code.
There are probably more instances of this floating around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130474 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMLoadStoreOptimizer.cpp
humb2SizeReduction.cpp
6344a5f1464dade7735ac440d7a3d24bf009f298 29-Apr-2011 Eric Christopher <echristo@apple.com> Update comments and checks to match reality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130464 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
299bbb23a421fce79c63e9f879ff3baef18c2f90 29-Apr-2011 Eric Christopher <echristo@apple.com> Whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130463 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6e6014cfb3e4dea3b0bd59bcc49ba8cd8dfcfa96 29-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Revert r130454; apparently this doesn't actually work.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130462 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2f7fcd71982678879803b96574526f0a22b3918e 29-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Fix a rather obscure crash caused by ARM fast-isel generating code which redefines a register.
rdar://problem/9338332 .



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130454 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7a20a37bacfb2abc0622768fb9d25797518b1f0e 28-Apr-2011 Eric Christopher <echristo@apple.com> Be more layout aware here and swap the successor and branch condition
if it means we get a fallthrough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130404 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
c26f5447e39b43a6dd9c1a9d88227f4adf3b5600 28-Apr-2011 Devang Patel <dpatel@apple.com> Teach dwarf writer to handle complex address expression for .debug_loc entries.
This fixes clang generated blocks' variables' debug info.
Radar 9279956.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130373 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
e23aea28f9ed4c1bb7dc81c92786ca49aa887088 27-Apr-2011 Kevin Enderby <enderby@apple.com> Fix a bug in the case that there is no add or subtract symbol and the offset
value is zero so it does not add a NULL expr operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130330 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0be77dff1147488814b8eea6ec8619f56e3d9f5e 27-Apr-2011 Devang Patel <dpatel@apple.com> Revert r130178. It turned out to be not the optimal path to emit complex location expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130326 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
2b6760592d73723bd82eb7b33b58b7c65549b0b2 27-Apr-2011 Shih-wei Liao <sliao@google.com> Merge with upstream.

Here, use upstream first. Then, I will submit to upstream separately and then bring it back
to external/llvm.

Change-Id: I6d86ca1277abb681af5dce6cd03379150c98c961
RMCodeEmitter.cpp
f7da8821b4c491b1c2ce7ac2374e46d8abdba518 26-Apr-2011 Jim Grosbach <grosbach@apple.com> ARM and Thumb2 support for atomic MIN/MAX/UMIN/UMAX loads.

rdar://9326019


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130234 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
c9e5015dece0a1a73bec358e11bc87594831279d 26-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a TRI::getLargestLegalSuperClass hook to provide an upper limit on register class inflation.

The hook will be used by the register allocator when recomputing register
classes after removing constraints.

Thumb1 code doesn't allow anything larger than tGPR, and x86 needs to ensure
that the spill size doesn't change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130228 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
0c99861836741911300587c579d4f9d3fe1d2a39 26-Apr-2011 Devang Patel <dpatel@apple.com> Let dwarf writer allocate extra space in the debug location expression. This space, if requested, will be used for complex addresses of the Blocks' variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130178 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
dac4b9267bc4e61de9237c622cd5b145768302fc 24-Apr-2011 Sebastian Redl <sebastian.redl@getdesigned.at> Fix Target/ARM/Thumb1FrameLowering.h header guard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130097 91177308-0d34-0410-b5e6-96231b3b80d8
humb1FrameLowering.h
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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
5adfba283dc0795ba005545ce38fa5b0ada14511 23-Apr-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130046 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
597fa65373b824c840212cf238a73ae13dc35494 22-Apr-2011 Johnny Chen <johnny.chen@apple.com> Disassembly of A8.6.59 LDR (literal) Encoding T1 (16-bit thumb instruction) should
print out ldr, not ldr.n.

rdar://problem/9267772


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130008 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0a6ea83f393d06fb424c470777a1c3e8a8c50ab1 22-Apr-2011 Devang Patel <dpatel@apple.com> Add asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129995 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
db6cbe1ff16d5f18bf2469fa53744e680944dc56 22-Apr-2011 Evan Cheng <evan.cheng@apple.com> In Thumb2 mode, lower frame indix references to:
add <rd>, sp, #<imm8>
ldr <rd>, [sp, #<imm8>]
When the offset from sp is multiple of 4 and in range of 0-1020.
This saves code size by utilizing 16-bit instructions.

rdar://9321541


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129971 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMFrameLowering.h
71f3f1146f2ba2773f0467767b67c12258960f34 22-Apr-2011 Devang Patel <dpatel@apple.com> Fix DWARF description of Q registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129952 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
27f5acb7d49c3ca2e3f7fe13d97cc19a78b15e1a 22-Apr-2011 Devang Patel <dpatel@apple.com> Fix DWARF description of S registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129947 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
64d3d12f372fe88cbff7bbac63ea148df678d9b6 21-Apr-2011 Devang Patel <dpatel@apple.com> As per ARM docs, register Dx is described as DW_OP_regx(256+x) in DWARF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129922 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
c8578948c9b35080dedd6527abf4f48fc4de43d3 21-Apr-2011 Evan Cheng <evan.cheng@apple.com> Remove -use-divmod-libcall. Let targets opt in when they are available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129884 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.h
6bfba2e5af163442a1c6b11fe14aa9df9101cfd7 20-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Prefer cheap registers for busy live ranges.

On the x86-64 and thumb2 targets, some registers are more expensive to encode
than others in the same register class.

Add a CostPerUse field to the TableGen register description, and make it
available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
32-bit instruction encoding required by choosing a high register.

Teach the greedy register allocator to prefer cheap registers for busy live
ranges (as indicated by spill weight).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129864 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
e341e8ce1ada854e7f8fcfcf18bb2e17be2ac0ee 20-Apr-2011 Stuart Hastings <stuart@apple.com> Excise unintended hunk in 129858. <rdar://problem/7662569>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129862 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c73158730d43e7c8bdef32b2107566a6e78a8538 20-Apr-2011 Stuart Hastings <stuart@apple.com> ARM byval support. Will be enabled by another patch to the FE. <rdar://problem/7662569>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129858 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
f55066572ff8040747ff03a7fa71d88b85f41812 20-Apr-2011 Shih-wei Liao <sliao@google.com> Fix PKH* encoding.

Change-Id: Ib231fccf2bf51acf9bd283573a4ee55ae33e75b3
RMCodeEmitter.cpp
RMInstrInfo.td
4aaf3465f71afa4e156eb15df12095ebde1b0f6f 20-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix typo in the comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129837 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
912225e18559a73228099330a4c253fdccf9fa3d 19-Apr-2011 Daniel Dunbar <daniel@zuster.org> ADT/Triple: Move a variety of clients to using isOSDarwin() and isOSWindows()
predicates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129816 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMSubtarget.h
RMTargetMachine.cpp
2cc40138537abc39c360f0c83a7c78014b9b9ba1 19-Apr-2011 Eric Christopher <echristo@apple.com> Remove some duplicate op action entries and reorganize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129781 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
84c5eed15baa3710d7fb8522c7a28c8e0b732c2b 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> This patch combines several changes from Evan Cheng for rdar://8659675.

Making use of VFP / NEON floating point multiply-accumulate / subtraction is
difficult on current ARM implementations for a few reasons.
1. Even though a single vmla has latency that is one cycle shorter than a pair
of vmul + vadd, a RAW hazard during the first (4? on Cortex-a8) can cause
additional pipeline stall. So it's frequently better to single codegen
vmul + vadd.
2. A vmla folowed by a vmul, vmadd, or vsub causes the second fp instruction to
stall for 4 cycles. We need to schedule them apart.
3. A vmla followed vmla is a special case. Obvious issuing back to back RAW
vmla + vmla is very bad. But this isn't ideal either:
vmul
vadd
vmla
Instead, we want to expand the second vmla:
vmla
vmul
vadd
Even with the 4 cycle vmul stall, the second sequence is still 2 cycles
faster.

Up to now, isel simply avoid codegen'ing fp vmla / vmls. This works well enough
but it isn't the optimial solution. This patch attempts to make it possible to
use vmla / vmls in cases where it is profitable.

A. Add missing isel predicates which cause vmla to be codegen'ed.
B. Make sure the fmul in (fadd (fmul)) has a single use. We don't want to
compute a fmul and a fmla.
C. Add additional isel checks for vmla, avoid cases where vmla is feeding into
fp instructions (except for the #3 exceptional case).
D. Add ARM hazard recognizer to model the vmla / vmls hazards.
E. Add a special pre-regalloc case to expand vmla / vmls when it's likely the
vmla / vmls will trigger one of the special hazards.

Enable these fp vmlx codegen changes for Cortex-A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129775 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMHazardRecognizer.cpp
RMISelDAGToDAG.cpp
RMTargetMachine.cpp
LxExpansionPass.cpp
cd70496ad1e69656a0b3d2caada4ed1b2c543d7a 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> Add -mcpu=cortex-a9-mp. It's cortex-a9 with MP extension. rdar://8648637.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129774 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
5dde893c2bac9e1569c38429f756c1d723e8edf2 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> Avoid some 's' 16-bit instruction which partially update CPSR
(and add false dependency) when it isn't dependent on last CPSR defining
instruction. rdar://8928208

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129773 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
humb2SizeReduction.cpp
f6a4d3c2f3e1029af252a0f6999edfa3c2f326ee 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> Avoid write-after-write issue hazards for Cortex-A9.

Add a avoidWriteAfterWrite() target hook to identify register classes that
suffer from write-after-write hazards. For those register classes, try to avoid
writing the same register in two consecutive instructions.

This is currently disabled by default. We should not spill to avoid hazards!
The command line flag -avoid-waw-hazard can be used to enable waw avoidance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129772 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
b34d837397053da8e9bff90dd714e24f2a3b98b3 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> Some single-precision VFP instructions can execute in either the VPF or Neon
pipelines, at least on Cortex-A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129771 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
11334dbd66581afb66bf17d07d970ca41265855e 19-Apr-2011 Bob Wilson <bob.wilson@apple.com> Improvements for the Cortex-A9 scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129770 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
75b41f1540f35ef0fd5e4a52c1840f1a19debb03 19-Apr-2011 Evan Cheng <evan.cheng@apple.com> Change A9 scheduling itineraries VLD* / VST* entries default to "aligned". That
is, it assumes addresses are 64-bit aligned (which should be the more common
case). If the alignment is found not to be aligned, then getOperandLatency()
would adjust the operand latency computation by one to compensate for it.
rdar://9294833


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129742 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMScheduleA9.td
b58a340fa2affa0da27a46c94dd49ba079c9343c 19-Apr-2011 Evan Cheng <evan.cheng@apple.com> Do not lose mem_operands while lowering VLD / VST intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129738 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
0d062c1e14af5653bb6a4719b06f168e2dc0f5db 18-Apr-2011 Jim Grosbach <grosbach@apple.com> Trim a few unneeded includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129723 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
f6d9109124fa9ee5533dcc5a1c9f2af694890706 18-Apr-2011 Sean Callanan <scallanan@apple.com> Small fix to the ARM AsmParser to ensure that a
superclass variable is instantiated properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129713 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c5eecbc4ec3e8b6934b2c932735c8ebc1b78f537 16-Apr-2011 Stuart Hastings <stuart@apple.com> Correct result when a branch condition is live across a block
boundary. <rdar://problem/8933028>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129634 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
a704bc9354d8b03fd98da9bd7de5ae1dc49af961 16-Apr-2011 Johnny Chen <johnny.chen@apple.com> A8.6.315 VLD3 (single 3-element structure to all lanes)
The a bit must be encoded as 0.

rdar://problem/9292625


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129618 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0cb11ac32fc09c5db42fb801db242ac9fb51f6b1 15-Apr-2011 Cameron Zwarich <zwarich@apple.com> Add ORR and EOR to the CMP peephole optimizer. It's hard to get isel to generate
a case involving EOR, so I only added a test for ORR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129610 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b485de5d8c3fe0c62c0b07f63f64bd10f6803c17 15-Apr-2011 Cameron Zwarich <zwarich@apple.com> The AND instruction leaves the V flag unmodified, so it falls victim to the same
problem as all of the other instructions we fold with CMPs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129602 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ca3f6a3925e9a6e91022aa211bdc1b6e3f2ff41f 15-Apr-2011 Cameron Zwarich <zwarich@apple.com> Add missing register forms of instructions to the ARM CMP-folding code. This
fixes <rdar://problem/9287901>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129599 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
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
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
RMSelectionDAGInfo.cpp
9eec66e604f09ed9779bc438d0dc4fa9d24db44c 15-Apr-2011 Evan Cheng <evan.cheng@apple.com> Fix another fcopysign lowering bug. If src is f64 and destination is f32, don't
forget to right shift the source by 32 first. rdar://9287902


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129556 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
de29a52940101cd162cc9a53cfd3d09d60547e6f 15-Apr-2011 Johnny Chen <johnny.chen@apple.com> The ARM disassembler did not handle the alignment correctly for VLD*DUP* instructions
(single element or n-element structure to all lanes).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129550 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
06b2a60ef9a740b76d482347d615fdc11eb64548 15-Apr-2011 Evan Cheng <evan.cheng@apple.com> Follow up on r127913. Fix Thumb revsh isel. rdar://9286766

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
cd695fdac16c206655a19fb1741ab71929f28711 14-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add sanity checkings for Thumb2 Load/Store Register Exclusive family of operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129531 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
e8d087ad351258f3db39f41dc595fae4ddb4f318 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> Thumb disassembler did not handle tBRIND (indirect branch) properly.

rdar://problem/9280370


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129480 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
6c7e4147dc7faf2f7b4bdaaf7940c2fe65d6fbc5 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> Check for unallocated instruction encodings when disassembling Thumb Branch instructions (tBcc and t2Bcc).

rdar://problem/9280470


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129471 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
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
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
5af60ce2a8d4dc820664c9dc5fbbcff428402c15 13-Apr-2011 Cameron Zwarich <zwarich@apple.com> Fix a typo in an ARM-specific DAG combine. This fixes <rdar://problem/9278274>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129468 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9bb386a9330f9c26f648ce1009561833fbc59e4b 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> Check the corner cases for t2LDRSHi12 correctly and mark invalid encodings as such.

rdar://problem/9276651


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129462 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
119af20c7b9d6aaae6941d5fc88392efe92eb9f1 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix a bug where for t2MOVCCi disassembly, the TIED_TO register operand was not properly handled.

rdar://problem/9276427


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129456 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
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
RMInstrThumb2.td
5876db7a66fcc4ec4444a9f3e387c1cdc8baf9e5 13-Apr-2011 Cameron Zwarich <zwarich@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129429 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
55e6419b12a5f5c1c5b7e3f5f6bebd6b71df0bd0 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add sanity check for Ld/St Dual forms of Thumb2 instructions.

rdar://problem/9273947


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129411 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
32cefad4b39e28674805c4704bc8c4c3ca70134a 12-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add bad register checks for Thumb2 Ld/St instructions.

rdar://problem/9269047


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129387 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
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
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
49fdfe3ce5736e8c76cdf512cc0cd5afb3b8f2e6 12-Apr-2011 Johnny Chen <johnny.chen@apple.com> Print out a debug message when the reglist fails the sanity check for Thumb Ld/St Multiple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129365 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.h
isassembler/ThumbDisassemblerCore.h
d0aacbcc2e60fd06652280a9105eb2f8f9378efc 12-Apr-2011 Cameron Zwarich <zwarich@apple.com> Split a store of a VMOVDRR into two integer stores to avoid mixing NEON and ARM
stores of arguments in the same cache line. This fixes the second half of
<rdar://problem/8674845>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129345 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e77f72d7d236cabee6ce154ade0f5c666ecaaaca 12-Apr-2011 Johnny Chen <johnny.chen@apple.com> A8.6.16 B
Encoding T1 (tBcc)
if cond == '1110' then UNDEFINED;

rdar://problem/9268681


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129325 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
de16508955698a0f8890e0d54fee24efc9277ecd 12-Apr-2011 Johnny Chen <johnny.chen@apple.com> Thumb disassembler was erroneously rejecting "blx sp" instruction.

rdar://problem/9267838


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129320 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
isassembler/ThumbDisassemblerCore.h
35563fee7b52f3bc9ef828abc139e8d9cb4ba2b9 11-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix the bug where the immediate shift amount for Thumb logical shift instructions are incorrectly disassembled.

rdar://problem/9266265


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129298 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
78a546936d585a74c9c0a73ae44b4e5a5688792d 11-Apr-2011 Owen Anderson <resistor@mac.com> Fix another using-CPSR-twice bug in my ADCS/SBCS cleanups, and make proper use of the Commutable bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129294 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f18dfc3a318b6dae66f3439555f6d32900654425 11-Apr-2011 Johnny Chen <johnny.chen@apple.com> Trivial comment fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129288 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
e679d3331b5fb4747c5f03b546376f8fdb6a25d4 11-Apr-2011 Johnny Chen <johnny.chen@apple.com> Check invalid register encodings for LdFrm/StFrm ARM instructions and flag them as
invalid instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129286 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
bd3327654b5708f1ba92aff3ab25b1bbf5034797 11-Apr-2011 Kevin Enderby <enderby@apple.com> Adding support for printing operands symbolically to llvm's public 'C'
disassembler API. Hooked this up to the ARM target so such tools as Darwin's
otool(1) can now print things like branch targets for example this:
blx _puts
instead of this:
blx #-36
And even print the expression encoded in the Mach-O relocation entried for
things like this:
movt r0, :upper16:((_foo-_bar)+1234)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129284 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/ThumbDisassemblerCore.h
562b84b3aea359d1f918184e355da82bf05eb290 11-Apr-2011 Jay Foad <jay.foad@gmail.com> Don't include Operator.h from InstrTypes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129271 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3a5b41d8f8aae9ca8c9ebf95f49de1c46224ec0a 09-Apr-2011 Jush Lu <jush.msn@gmail.com> Fix ARM 'B' instruction encoding for ARM JIT
RMCodeEmitter.cpp
eeb84081f389b99547082b9867830ad4c46cb39a 09-Apr-2011 Jush Lu <jush.msn@gmail.com> Fix LDMIA_RET encoding for ARM JIT.
RMCodeEmitter.cpp
8feda7ee332f1f91e4d3a42d9f7ad729012ed174 09-Apr-2011 Jush Lu <jush.msn@gmail.com> Merge upstream r129128
7c90e4662205c14da6a340501316b3059f7fd871 08-Apr-2011 Matt Beaumont-Gay <matthewbg@google.com> Fix an apparent typo that made GCC complain

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129160 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
4da0c7c0c9081107bea5f6bac440f0f1eb47748f 08-Apr-2011 Evan Cheng <evan.cheng@apple.com> Change -arm-trap-func= into a non-arm specific option. Now Intrinsic::trap is lowered into a call to the specified trap function at sdisel time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129152 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ee10b13a4408781fd5f255527e3c51cd24dc96ef 08-Apr-2011 Johnny Chen <johnny.chen@apple.com> Check opcoe (dmb, dsb) instead of bitfields matching.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129148 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
c636074afcf95ecd9bb4069a49087a019d5e96b4 08-Apr-2011 Johnny Chen <johnny.chen@apple.com> Hanlde the checking of bad regs for SMMLAR properly, instead of asserting.

PR9650
rdar://problem/9257565


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129147 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
40de2b3f1529c23fee5de6e8324a1f023b361765 08-Apr-2011 Johnny Chen <johnny.chen@apple.com> Sanity check the option operand for DMB/DSB.

PR9648
rdar://problem/9257634


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129146 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
5b03a3a59aad2beca37829e4d357db592d18de6e 08-Apr-2011 Jim Grosbach <grosbach@apple.com> Mark hasExtraDefRegAllocReq=1 on LDRD.

The previous cleanup of LDRD got overzealous and removed it, causing post-RA
scheduling to get overzealous in breaking antidependencies and invalidate these instructions. Hilarity and invalid assembly ensued.

rdar://9244161


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129144 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
97fdff1d3f0d931247aa300a02679681d684b87d 08-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add sanity checking for bad register specifier(s) for the DPFrm instructions.
Add more test cases to exercise the logical branches related to the above change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129117 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
274d8d4eba8224b64e0bbc7196011ae7e0477453 07-Apr-2011 Evan Cheng <evan.cheng@apple.com> Add option to emit @llvm.trap as a function call instead of a trap instruction. rdar://9249183.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129107 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e32cdef38e8a95dcc3685a1dc4ea6a4fba293f82 07-Apr-2011 Mon P Wang <wangmp@apple.com> Fixed encoding for VEXTqf


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129101 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
22dc4d9f59213c51cefe4fe237030c91d92d388b 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add sanity checking for invalid register encodings for signed/unsigned extend instructions.
Add some test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129098 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
8dbda0b51b7a7a7b4fb16a34b421a658cb86f9f3 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add sanity checking for invalid register encodings for saturating instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129096 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
4d4e25740bd1225f413a10db6166b620d2f5fbbb 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add some more comments about checkings of invalid register numbers.
And two test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129090 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0433b21c989e7d4817574b950387355fe05f59b5 07-Apr-2011 Tanya Lattner <tonic@nondot.org> Prevent ARM DAG Combiner from doing an AND or OR combine on an illegal vector type (vectors of size 3). Also included test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129074 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f16f4e09ec28fe2de13a1bcda391d7d16a368e3a 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> Sanity check MSRi for invalid mask values and reject it as invalid.

rdar://problem/9246844


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129050 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
8424a60fc9059d4ba7c45c80d28d86e3186fcf4e 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> The ARM disassembler was not recognizing USADA8 instruction. Need to add checking for register values
for USAD8 and USADA8.

rdar://problem/9247060


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129047 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
2c69f8eec6a51114799e3e80fa4903c5e3fc429c 07-Apr-2011 Evan Cheng <evan.cheng@apple.com> Change -arm-divmod-libcall to a target neutral option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129045 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2455268cddf6d5507ab21b59007194e92b0b9af7 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> Should also check SMLAD for invalid register values.

rdar://problem/9246650


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129042 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
df298c9ea64eb335f63fc075d8ef6306682ffe75 07-Apr-2011 Owen Anderson <resistor@mac.com> Teach the ARM peephole optimizer that RSB, RSC, ADC, and SBC can be used for folded comparisons, just like ADD and SUB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129038 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ef7fb17936ef38153e0a8c8146229d618722eb15 07-Apr-2011 Owen Anderson <resistor@mac.com> Cleanups from Jim: remove redundant constraints and a dead FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129036 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f22eefba68d7d128b2de26684df2d5debdf2005d 07-Apr-2011 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129034 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
d8b4c4d74f745e6d556e96e056fe774c7cbef697 07-Apr-2011 Johnny Chen <johnny.chen@apple.com> A8.6.393
The ARM disassembler should reject invalid (type, align) encodings as invalid instructions.

So, instead of:
Opcode=1641 Name=VST2b32_UPD Format=ARM_FORMAT_NLdSt(30)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 1: 1: 1| 0: 1: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| 0: 0: 0: 0| 1: 0: 0: 1| 1: 0: 1: 1| 0: 0: 1: 1|
-------------------------------------------------------------------------------------------------

vst2.32 {d0, d2}, [r3, :256], r3

we now have:
Opcode=1641 Name=VST2b32_UPD Format=ARM_FORMAT_NLdSt(30)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 1: 1: 1| 0: 1: 0: 0| 0: 0: 0: 0| 0: 0: 1: 1| 0: 0: 0: 0| 1: 0: 0: 1| 1: 0: 1: 1| 0: 0: 1: 1|
-------------------------------------------------------------------------------------------------

mc-input.txt:1:1: warning: invalid instruction encoding
0xb3 0x9 0x3 0xf4
^


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129033 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
4d81c9a6ba076e86671eebb9a0c533a45f357d2d 06-Apr-2011 Johnny Chen <johnny.chen@apple.com> A8.6.92 MCR (Encoding A1): if coproc == '101x' then SEE "Advanced SIMD and VFP"
Since these "Advanced SIMD and VFP" instructions have more specfic encoding bits
specified, if coproc == 10 or 11, we should reject the insn as invalid.

rdar://problem/9239922
rdar://problem/9239596


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129027 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
a9611549fe5cd06000111851f88b951467695307 06-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix a bug in the disassembly of VGETLNs8 where the lane index was wrong.
Also set the encoding bits (for A8.6.303, A8.6.328, A8.6.329) Inst{3-0} = 0b0000,
in class NVLaneOp.

rdar://problem/9240648


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129015 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
6a1220eeca1f3511bcf6ffed43a9ae77624eb8a8 06-Apr-2011 Johnny Chen <johnny.chen@apple.com> Add a missing opcode (SMLSLDX) to BadRegsMulFrm() function.
Add more complete sanity check for LdStFrm instructions where if IBit (Inst{25})
is 1, Inst{4} should be 0. Otherwise, we should reject the insn as invalid.

rdar://problem/9239347
rdar://problem/9239467


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128977 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
b48c791515659c7572dea7e1d53059f58fb3121f 06-Apr-2011 Owen Anderson <resistor@mac.com> Reapply r128946 (pseudoization of various instructions), and fix the extra imp-def of CPSR it was adding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128965 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
2c868d1eef1e52a2b3211050006344e00c461ac3 06-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix a typo in the handling of PKHTB opcode, plus add sanity check for illegal register
encodings for DisassembleArithMiscFrm().

rdar://problem/9238659


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128958 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
61f3cf3bc9c4db657eda5a4b9f4f8079e65aba8f 06-Apr-2011 Bob Wilson <bob.wilson@apple.com> Clean up some code for clarity.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128953 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
493cba1b32ebd4064e56a2387099b790c8c32c0c 06-Apr-2011 Owen Anderson <resistor@mac.com> Revert r128946 while I figure out why it broke the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128951 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
c3281c10c94185e18338764b225a730a7c3e3ec4 06-Apr-2011 Johnny Chen <johnny.chen@apple.com> A7.3 register encoding
Qd -> bit[12] == 0
Qn -> bit[16] == 0
Qm -> bit[0] == 0

If one of these bits is 1, the instruction is UNDEFINED.

rdar://problem/9238399
rdar://problem/9238445


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128949 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
76634dfabb02507b73c0baed6fdd98bd5e703c60 06-Apr-2011 Owen Anderson <resistor@mac.com> Give RSBS and RSCS the pseudo treatment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128946 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
5438d76416bdb074bd3135a7649b31c563a05dd9 06-Apr-2011 Johnny Chen <johnny.chen@apple.com> ARM disassembler was erroneously accepting an invalid RSC instruction.
Added checks for regs which should not be 15.

rdar://problem/9237734


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128945 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
c584e317e9d5795129e747c9b0854165e39933f1 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> ARM disassembler was erroneously accepting an invalid LSL instruction.
For register-controlled shifts, we should check that the encoding constraint
Inst{7} = 0 and Inst{4} = 1 is satisfied.

rdar://problem/9237693


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128941 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
76706013131247121a3a153f378946a0cb0e319c 05-Apr-2011 Owen Anderson <resistor@mac.com> Fix bugs in the pseuo-ization of ADCS/SBCS pointed out by Jim, as well as doing the expansion earlier (using a custom inserter) to allow for the chance of predicating these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128940 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMInstrInfo.td
2c2130bc64d9a20b8a2681f230b2c03bd18a8c9b 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> The r128085 checkin modified the operand ordering for MRC/MRC2 instructions.
Modify DisassembleCoprocessor() of ARMDisassemblerCore.cpp to react to the change.

rdar://problem/9236873


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128922 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
bbc65bbb90e38a4066f0d4f5b403f85c1fecdf13 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> ARM disassembler should flag (rGPRRegClassID, r13|r15) as an error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128913 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
215e4fdbf9da460cb5e2d42a8df96530534ec382 05-Apr-2011 Jim Grosbach <grosbach@apple.com> Make second source operand of LDRD pre/post explicit.

Finish what r128736 started.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128903 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
12bb2958c4f335e79c831136d2dfed9f375f06ff 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> Constants with multiple encodings (ARM):
An alternative syntax is available for a modified immediate constant that permits the programmer to specify
the encoding directly. In this syntax, #<const> is instead written as #<byte>,#<rot>, where:

<byte> is the numeric value of abcdefgh, in the range 0-255
<rot> is twice the numeric value of rotation, an even number in the range 0-30.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128897 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
b26d8d7c493ec773661c1d3a7863f798f3786e40 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> Check for invalid register encodings for UMAAL and friends where:
if dLo == 15 || dHi == 15 || n == 15 || m == 15 then UNPREDICTABLE;
if dHi == dLo then UNPREDICTABLE;

rdar://problem/9230202


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128895 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
15b81b51d64b04c71aa75788fcc418f52ec8b181 05-Apr-2011 Owen Anderson <resistor@mac.com> Convert ADCS and SBCS instructions into pseudos that are expanded to the ADC/ABC with the appropriate S-bit input value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128892 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.td
f05b1dcf870346094f8aaee8e387c92d3e47e98d 05-Apr-2011 Bill Wendling <isanbard@gmail.com> Revamp the SjLj "dispatch setup" intrinsic.

It needed to be moved closer to the setjmp statement, because the code directly
after the setjmp needs to know about values that are on the stack. Also, the
'bitcast' of the function context was causing a dead load. This wouldn't be too
horrible, except that at -O0 it wasn't optimized out, and because it wasn't
using the correct base pointer (if there is a VLA), it would try to access a
value from a garbage address.
<rdar://problem/9130540>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128873 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
0435661582c5ccbd3984a710850fc8bc8939e566 05-Apr-2011 Eric Christopher <echristo@apple.com> Just use BL all the time. It's safer that way.

Fixes rdar://9184526


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128869 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
157536b1fb900e57efe042d48c7caeb87b1efd04 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix SRS/SRSW encoding bits.
rdar://problem/9230801 ARM disassembler discrepancy: erroneously accepting SRS

Plus add invalid-RFEorLDMIA-arm.txt test which should have been checked in with
http://llvm.org/viewvc/llvm-project?view=rev&revision=128859.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128864 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
597028cc2840d9182523bd0179a1f95ddd931dae 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> A8.6.105 MUL
Inst{15-12} should be specified as 0b0000.

rdar://problem/9231168 ARM disassembler discrepancy: erroneously accepting MUL


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128862 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
670a456c8323fc5da4752bdcf2b416ebef1bc66c 05-Apr-2011 Johnny Chen <johnny.chen@apple.com> RFE encoding should also specify the "should be" encoding bits.

rdar://problem/9229922 ARM disassembler discrepancy: erroneously accepting RFE

Also LDC/STC instructions are predicated while LDC2/STC2 instructions are not, fixed while
doing regression testings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128859 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
2d66cec9dd54b62c8b1e9b171e87fd17d419b13d 04-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix incorrect alignment for NEON VST2b32_UPD.

rdar://problem/9225433


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128841 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
ac79e4c82f201c30a06c2cd05baebd20f5b49888 04-Apr-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> - Implement asm parsing support for LDRSBT, LDRHT, LDRSHT and STRHT
also fix the encoding of the later.
- Add a new encoding bit to describe the index mode used in AM3.
- Teach printAddrMode3Operand to check by the addressing mode which
index mode to print.
- Testcases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128832 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
4071a711126a2a75585a32b96bb5d15ea267a915 02-Apr-2011 Cameron Zwarich <zwarich@apple.com> Do some peephole optimizations to remove pointless VMOVs from Neon to integer
registers that arise from argument shuffling with the soft float ABI. These
instructions are particularly slow on Cortex A8. This fixes one half of
<rdar://problem/8674845>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128759 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
04187ecd57c6ce2550fbcea43966c5cff234b39a 02-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fixed a bug in disassembly of STR_POST, where the immediate is the second operand in am2offset;
instead of the second operand in addrmode_imm12.

rdar://problem/9225289


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128757 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
103bf951a4d221a9cff4a5a4766754cf0cb126f4 02-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fixed MOVr for "should be" encoding bits for Inst{19-16} = 0b0000.

rdar://problem/9224276


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128749 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6da3fe68c6e3f5abd520a1bfc8dd8429e6ec6389 02-Apr-2011 Johnny Chen <johnny.chen@apple.com> MOVs should have Inst{19-16} as 0b0000, otherwise, the instruction is UNPREDICTABLE.

rdar://problem/9224120


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128748 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
857b1939dabefe931e1fd25b20185153ea389587 02-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix the instruction table entries for AI1_adde_sube_s_irs multiclass definition so that
all the instruction have:

let Inst{31-27} = 0b1110; // non-predicated

Before, the ARM decoder was confusing:

> 0x40 0xf3 0xb8 0x80

as:

Opcode=16 Name=ADCSSrs Format=ARM_FORMAT_DPSOREGFRM(5)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 0: 0: 0| 0: 0: 0: 0| 1: 0: 1: 1| 1: 0: 0: 0| 1: 1: 1: 1| 0: 0: 1: 1| 0: 1: 0: 0| 0: 0: 0: 0|
-------------------------------------------------------------------------------------------------

adcs pc, r8, r0, asr #6

since the cond field for ADCSSrs is a wild card, and so is ADCrs, with the ADCSSrs having Inst{20} as '1'.

Now, the AR decoder behaves correctly:

> 0x40 0xf3 0xb8 0x80
> END
Executing command: /Volumes/data/lldb/llvm/Debug+Asserts/bin/llvm-mc -disassemble -triple=arm-apple-darwin -debug-only=arm-disassembler mc-input.txt

Opcode=19 Name=ADCrs Format=ARM_FORMAT_DPSOREGFRM(5)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 0: 0: 0| 0: 0: 0: 0| 1: 0: 1: 1| 1: 0: 0: 0| 1: 1: 1: 1| 0: 0: 1: 1| 0: 1: 0: 0| 0: 0: 0: 0|
-------------------------------------------------------------------------------------------------

adcshi pc, r8, r0, asr #6
>

rdar://problem/9223094


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128746 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0539c159fb6e3f8d09d4790d8d6a4615c26d3e98 02-Apr-2011 Evan Cheng <evan.cheng@apple.com> Avoid de-referencing pass beginning of a basic block. No small test case possible. rdar://9216009

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128743 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1721324d97e2b05c9276ffe116dfb6c808521c2b 01-Apr-2011 Owen Anderson <resistor@mac.com> When the architecture is explicitly armv6 or thumbv6, we need to mark the object file appropriately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128739 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
9a3507f0913036615013d0218362d76cbe053b57 01-Apr-2011 Jim Grosbach <grosbach@apple.com> LDRD/STRD instructions should print both Rt and Rt2 in the asm string.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128736 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ec30f6f5e5e53f384f3cbdade08ba654ef3680c7 01-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix a LDRT/LDRBT decoding bug where for Encoding A2, if Inst{4} != 0, we should reject the instruction
as invalid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128734 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
5307da994aee85c22af26437d45254228898db2d 01-Apr-2011 Johnny Chen <johnny.chen@apple.com> Fix LDRi12 immediate operand, which was changed to be the second operand in $addrmode_imm12 => (ops GPR:$base, i32imm:$offsimm).

rdar://problem/9219356


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128722 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0e3ee43ea058a35ab5ce69cceafd316d49eaad34 01-Apr-2011 Benjamin Kramer <benny.kra@googlemail.com> Initialize HasVMLxForwarding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128709 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
8e23e815ad1136721acdfcce76975a37c8a2c036 01-Apr-2011 Evan Cheng <evan.cheng@apple.com> Issue libcalls __udivmod*i4 / __divmod*i4 for div / rem pairs.

rdar://8911343


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128696 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e3662cca5d204a3e0bceaead1b35361117630fab 01-Apr-2011 Matt Beaumont-Gay <matthewbg@google.com> Remove unused variables

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128692 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ae0855401b8c80f96904b6808b0bc4c89216aecd 01-Apr-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Apply again changes to support ARM memory asm parsing. I removed
all LDR/STR changes and left them to a future patch. Passing all
checks now.

- Implement asm parsing support for LDRT, LDRBT, STRT, STRBT and
fix the encoding wherever is possible.
- Add a new encoding bit to describe the index mode used and teach
printAddrMode2Operand to check by the addressing mode which index
mode to print.
- Testcases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128689 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInfo.h
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
1db952d0c6c93f24619af5de2ea1b0550665479c 01-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Provide a legal pointer register class when targeting thumb1.

The LocalStackSlotAllocation pass was creating illegal registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128687 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
463d358f1dfdd28a6900f2f109a160be71d2a8ef 31-Mar-2011 Evan Cheng <evan.cheng@apple.com> Distribute (A + B) * C to (A * C) + (B * C) to make use of NEON multiplier
accumulator forwarding:
vadd d3, d0, d1
vmul d3, d3, d2
=>
vmul d3, d0, d2
vmla d3, d1, d2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128665 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMSubtarget.h
a52d7da1d8c424276f79b80c89ed045166083730 31-Mar-2011 Johnny Chen <johnny.chen@apple.com> Fix single word and unsigned byte data transfer instruction encodings so that
Inst{4} = 0.

rdar://problem/9213022


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128662 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8901e6ff3da1c1a68ee5c1c24f21e8572ceb57b6 31-Mar-2011 Johnny Chen <johnny.chen@apple.com> Add BLXi to the instruction table for disassembly purpose.
A8.6.23 BLX (immediate)

rdar://problem/9212921


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128644 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
b41aaab5a1769f4df04d566da37866ac91b6ee9e 31-Mar-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Revert r128632 again, until I figure out what break the tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128635 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInfo.h
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
bcd3a9cd84d3bb143075d31bdf631f621f44f9e7 31-Mar-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Reapply r128585 without generating a lib depedency cycle. An updated log:

- Implement asm parsing support for LDRT, LDRBT, STRT, STRBT and
{STR,LDC}{2}_{PRE,POST} fixing the encoding wherever is possible.
- Move all instructions which use am2offset without a pattern to use
addrmode2.
- Add a new encoding bit to describe the index mode used and teach
printAddrMode2Operand to check by the addressing mode which index
mode to print.
- Testcases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128632 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInfo.h
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
e4345c9977e65b14fa4b93d19c7e67a7b15f7f40 31-Mar-2011 Matt Beaumont-Gay <matthewbg@google.com> Revert "- Implement asm parsing support for LDRT, LDRBT, STRT, STRBT and"

This revision introduced a dependency cycle, as nlewycky mentioned by email.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128597 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
6a7d36a32026aa366d41c457898bd2d7a539f06c 31-Mar-2011 Owen Anderson <resistor@mac.com> Somehow we managed to forget to encode the lane index for a large swathe of NEON instructions. With this fix, the entire test-suite passes with the Thumb integrated assembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128587 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
ee2e0e347e253d103ebbb0c59fcb48ca2d80b7ef 31-Mar-2011 Evan Cheng <evan.cheng@apple.com> Don't try to create zero-sized stack objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128586 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
40829ed6f5e449fa33a9cd7022ce6c3941dace3d 31-Mar-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> - Implement asm parsing support for LDRT, LDRBT, STRT, STRBT and
{STR,LDC}{2}_PRE.
- Fixed the encoding in some places.
- Some of those instructions were using am2offset and now use addrmode2.
Codegen isn't affected, instructions which use SelectAddrMode2Offset were not
touched.
- Teach printAddrMode2Operand to check by the addressing mode which index
mode to print.
- This is a work in progress, more work to come. The idea is to change places
which use am2offset to use addrmode2 instead, as to unify assembly parser.
- Add testcases for assembly parser

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128585 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
c0e6d780cd7a0935f545a0ec0a9ad4a6ae8db2a9 31-Mar-2011 Cameron Zwarich <zwarich@apple.com> Add a ARM-specific SD node for VBSL so that forms with a constant first operand
can be recognized. This fixes <rdar://problem/9183078>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128584 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
92e3916c3b750f7eb4f41e14e401434b713e558b 30-Mar-2011 Evan Cheng <evan.cheng@apple.com> Add intrinsics @llvm.arm.neon.vmulls and @llvm.arm.neon.vmullu.* back. Frontends
was lowering them to sext / uxt + mul instructions. Unfortunately the
optimization passes may hoist the extensions out of the loop and separate them.
When that happens, the long multiplication instructions can be broken into
several scalar instructions, causing significant performance issue.

Note the vmla and vmls intrinsics are not added back. Frontend will codegen them
as intrinsics vmull* + add / sub. Also note the isel optimizations for catching
mul + sext / zext are not changed either.

First part of rdar://8832507, rdar://9203134


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128502 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3007d3331b30dcb575125b81543cd145448dd673 29-Mar-2011 Cameron Zwarich <zwarich@apple.com> Add Neon SINT_TO_FP and UINT_TO_FP lowering from v4i16 to v4f32. Fixes
<rdar://problem/8875309> and <rdar://problem/9057191>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128492 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d0cfc99b308a805ffc130cde7317a0b0c626348f 29-Mar-2011 Owen Anderson <resistor@mac.com> Check early if this is an unsupported opcode, so that we can avoid needlessly instantiating the base register in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128481 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
9eda569a74377bdcf8ce6073682fb9a4bd8a82ca 29-Mar-2011 Johnny Chen <johnny.chen@apple.com> A8.6.188 STC, STC2
The STC_OPTION and STC2_OPTION instructions should have their coprocessor option enclosed in {}.

rdar://problem/9200661


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128478 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9eae80051b6f6f5564b725221b2163a1f0d83672 29-Mar-2011 Owen Anderson <resistor@mac.com> Add safety check that didn't show up in testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128467 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
848b0c39b11801614c47e460248b60e8d40eb257 29-Mar-2011 Owen Anderson <resistor@mac.com> Get rid of the non-writeback versions VLDMDB and VSTMDB, which don't actually exist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128461 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrNEON.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
isassembler/ARMDisassemblerCore.cpp
78fe9ababead2168f7196c6a47402cf499a0aaf7 29-Mar-2011 Evan Cheng <evan.cheng@apple.com> Optimizing (zext A + zext B) * C, to (VMULL A, C) + (VMULL B, C) during
isel lowering to fold the zero-extend's and take advantage of no-stall
back to back vmul + vmla:
vmull q0, d4, d6
vmlal q0, d5, d6
is faster than
vaddl q0, d4, d5
vmovl q1, d6
vmul q0, q0, q1

This allows us to vmull + vmlal for:
f = vmull_u8( vget_high_u8(s), c);
f = vmlal_u8(f, vget_low_u8(s), c);

rdar://9197392


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128444 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d560a809251e54d7802728b9128dfd3b46f29b81 28-Mar-2011 Johnny Chen <johnny.chen@apple.com> Fix ARM disassembly for PLD/PLDW/PLI which suffers from code rot and add some test cases.
Add comments to ThumbDisassemblerCore.h for recent change made for t2PLD disassembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128417 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
eca915fb5242442756a80bad7f285cb54d7b8ea4 26-Mar-2011 Johnny Chen <johnny.chen@apple.com> Fixed the t2PLD and friends disassembly and add two test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128322 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ThumbDisassemblerCore.h
29aeed1bf8c70eec381d5cbf7de2710b5157d526 26-Mar-2011 Eric Christopher <echristo@apple.com> Fix the bfi handling for or (and a mask) (and b mask). We need the two
masks to match inversely for the code as is to work. For the example given
we actually want:

bfi r0, r2, #1, #1

not #0, however, given the way the pattern is written it's not possible
at the moment.

Fixes rdar://9177502


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128320 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a2755b9829affb1c2ac07d7710228e80d222f588 25-Mar-2011 Johnny Chen <johnny.chen@apple.com> Fix DisassembleThumb2DPReg()'s handling of RegClass. Cannot hardcode GPRRegClassID.
Also add some test cases.

rdar://problem/9189829


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128304 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
abeea57639b38b1c3c129a023aecb57eed61355e 25-Mar-2011 Johnny Chen <johnny.chen@apple.com> DisassembleThumb2LdSt() did not handle t2LDRs correctly with respect to RegClass. Add two test cases.

rdar://problem/9182892


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128299 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
ceceabd4b1e90bbddfa49799f1b3a4595dd6d99c 25-Mar-2011 Johnny Chen <johnny.chen@apple.com> Modify DisassembleThumb2LdStEx() to be more robust/correct in light of recent change to
t2LDREX/t2STREX instructions. Add two test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128293 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
6c3891067b6e2e2aa399a57ecae407677f22391d 25-Mar-2011 Johnny Chen <johnny.chen@apple.com> Instruction formats of SWP/SWPB were changed from LdStExFrm to MiscFrm. Modify the disassembler to handle that.

rdar://problem/9184053


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128285 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
f14d5cf33a0414637a874ef9a4cbc8e0cf1debee 25-Mar-2011 Johnny Chen <johnny.chen@apple.com> Also need to handle invalid imod values for CPS2p.

rdar://problem/9186136


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128283 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
eb5067e0d9ca182f21db24949b63616ce4bb1eaf 25-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ignore special ARM allocation hints for unexpected register classes.

Add an assertion to linear scan to prevent it from allocating registers outside
the register class.

<rdar://problem/9183021>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128254 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a7078c4f274e2c2ad431ae9f578624335c81be36 25-Mar-2011 Johnny Chen <johnny.chen@apple.com> Modify the wrong logic in the assert of DisassembleThumb2LdStDual() (the register classes were changed),
modify the comment to be up-to-date, and add a test case for A8.6.66 LDRD (immediate) Encoding T1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128252 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
1866af4a982be999e4d0c08c38ebec71f3ed4025 24-Mar-2011 Matt Beaumont-Gay <matthewbg@google.com> Suppress an unused variable warning in -asserts builds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128244 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c39b6271be255a88fc9481d10894899b0f747ee3 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> Handle the added VBICiv*i* NEON instructions, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128243 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
8cb988686d4d55eace0cb4aac408d790c02a120b 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> Plug a leak by ThumbDisassembler::getInstruction(), thanks to Benjamin Kramer!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128241 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
9091bf25d97b8b43bd26ea03976d1f320c770a92 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> T2 Load/Store Multiple:
These instructions were changed to not embed the addressing mode within the MC instructions
We also need to update the corresponding assert stmt. Also add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128240 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
83ccbff84fd38d8680ae39b3b629aee339478855 24-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Plug a leak in the arm disassembler and put the tests back.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128238 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
e6d69e7dbee88a0a88f252a3e1e3f5f81472cf4b 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> ADR was added with the wrong encoding for inst{24-21}, and the ARM decoder was fooled.
Set the encoding bits to {0,?,?,0}, not 0. Plus delegate the disassembly of ADR to
the more generic ADDri/SUBri instructions, and add a test case for that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128234 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b4ac342ea0a416f463f47bf40c0bd7448844e00b 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> The r118201 added support for VORR (immediate). Update ARMDisassemblerCore.cpp to disassemble the
VORRiv*i* instructions properly within the DisassembleN1RegModImmFrm() function. Add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128226 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
ce1868b21ce91245622964da1408cdec76af77a8 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> Add comments to the handling of opcode CPS3p to reject invalid instruction encoding,
a test case of invalid CPS3p encoding and one for invalid VLDMSDB due to regs out of range.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128220 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
d700617193f3d11deb83cd56c4ababbc8e0ea19f 24-Mar-2011 Evan Cheng <evan.cheng@apple.com> Nasty bug in ARMBaseInstrInfo::produceSameValue(). The MachineConstantPoolEntry
entries being compared may not be ARMConstantPoolValue. Without checking
whether they are ARMConstantPoolValue first, and if the stars and moons
are aligned properly, the equality test may return true (when the first few
words of two Constants' values happen to be identical) and very bad things can
happen.

rdar://9125354


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128203 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
e4000595fbaf018ce2922294dfb9a1c28532dab0 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> CPS3p: Let's reject impossible imod values by returning false from the DisassembleMiscFrm() function.

Fixed rdar://problem/9179416 ARM disassembler crash: "Unknown imod operand" (fuzz testing)

Opcode=98 Name=CPS3p Format=ARM_FORMAT_MISCFRM(26)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 1: 1: 1| 0: 0: 0: 1| 0: 0: 0: 0| 0: 0: 1: 0| 0: 0: 0: 1| 1: 1: 0: 0| 1: 0: 0: 1| 0: 0: 1: 1|
-------------------------------------------------------------------------------------------------

Before:
cpsUnknown imod operand
UNREACHABLE executed at /Volumes/data/lldb/llvm/lib/Target/ARM/InstPrinter/../ARMBaseInfo.h:123!

After:
/Volumes/data/Radar/9179416/mc-input-arm.txt:1:1: warning: invalid instruction encoding
0x93 0x1c 0x2 0xf1
^


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128192 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
3d793962becf3a345cfff96202f3c6c27a1fb5d4 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> Load/Store Multiple:
These instructions were changed to not embed the addressing mode within the MC instructions
We also need to update the corresponding assert stmt. Also add two test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128191 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
571f290376ad7b84aac6e58dcecd19d9797a3892 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> STRT and STRBT was incorrectly tagged as IndexModeNone during the refactorings (r119821).
We now tag them as IndexModePost.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128189 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2abc9d2444c81bb5ac5aba0da0c863ec80d8f4b6 24-Mar-2011 Johnny Chen <johnny.chen@apple.com> The r128103 fix to cope with the removal of addressing modes from the MC instructions
were incomplete. The assert stmt needs to be updated and the operand index incrment is wrong.
Fix the bad logic and add some sanity checking to detect bad instruction encoding;
and add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128186 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
36dca60f5cfb9c858f3e962221ee5f2fa41794e8 24-Mar-2011 Devang Patel <dpatel@apple.com> Enable GlobalMerge on darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128183 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
2c339156289d8398bea09c2bb4b735d00d39bdb3 23-Mar-2011 Evan Cheng <evan.cheng@apple.com> Cmp peephole optimization isn't always safe for signed arithmetics.

int tries = INT_MAX;
while (tries > 0) {
tries--;
}

The check should be:
subs r4, #1
cmp r4, #0
bgt LBB0_1

The subs can set the overflow V bit when r4 is INT_MAX+1 (which loop
canonicalization apparently does in this case). cmp #0 would have cleared
it while not changing the N and Z bits. Since BGT is dependent on the V
bit, i.e. (N == V) && !Z, it is not safe to eliminate the cmp #0.

rdar://9172742


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128179 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
741ad15e26d1717433f326743800f30c63c6a9c1 23-Mar-2011 Owen Anderson <resistor@mac.com> The high bit of a Thumb2 ADR's offset is stored in bit 26, not bit 25.
This fixes 464.h264ref with the integrated assembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128172 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
c59c87c3228b471140fb219dc9118ab9321486f2 23-Mar-2011 Johnny Chen <johnny.chen@apple.com> For ARM Disassembler, start a newline to dump the opcode and friends for an instruction.
Change inspired by llvm-bug 9530 submitted by Jyun-Yan You.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128122 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
27c6baeca23be295d13da6a010d203b280058444 22-Mar-2011 Johnny Chen <johnny.chen@apple.com> LDRT and LDRBT was incorrectly tagged as IndexModeNone during the refactorings (r119821).
We now tag them as IndexModePost.

This fixed http://llvm.org/bugs/show_bug.cgi?id=9530.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128113 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
758df297412df99d737dfcaea09b5e7857f320e5 22-Mar-2011 Johnny Chen <johnny.chen@apple.com> A8.6.399 VSTM:
VFP Load/Store Multiple Instructions used to embed the IA/DB addressing mode within the
MC instruction; that has been changed so that now, for example, VSTMDDB_UPD and VSTMDIA_UPD
are two instructions. Update the ARMDisassemblerCore.cpp's DisassembleVFPLdStMulFrm()
to reflect the change.

Also add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128103 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
7244d7cbcea232049f2676e4d204dddf6520821f 22-Mar-2011 Eric Christopher <echristo@apple.com> Migrate the fix in r128041 to ARM's fastisel support as well.

Fixes rdar://9169640

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128100 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
ddb657c63dd0865c13cf677484b59fc5f9758d1b 22-Mar-2011 Matt Beaumont-Gay <matthewbg@google.com> Avoid -Wunused-variable in -asserts builds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128048 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
a5c177e70a42f48e4885075c4c48aad0816a2817 21-Mar-2011 Bill Wendling <isanbard@gmail.com> We need to pass the TargetMachine object to the InstPrinter if we are printing
the alias of an InstAlias instead of the thing being aliased. Because we need to
know the features that are valid for an InstAlias.

This is part of a work-in-progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127986 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
nstPrinter/ARMInstPrinter.h
485fafc8406db8552ba5e3ff871a6ee32694ad90 21-Mar-2011 Evan Cheng <evan.cheng@apple.com> Re-apply r127953 with fixes: eliminate empty return block if it has no predecessors; update dominator tree if cfg is modified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127981 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
7a90e04fc76392972bd8bd0ddee5c934c22c1393 19-Mar-2011 Daniel Dunbar <daniel@zuster.org> Revert r127953, "SimplifyCFG has stopped duplicating returns into predecessors
to canonicalize IR", it broke a lot of things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127954 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ae16d6b9722dd6ff4a606308e3a14d200f3a903f 19-Mar-2011 Evan Cheng <evan.cheng@apple.com> SimplifyCFG has stopped duplicating returns into predecessors to canonicalize IR
to have single return block (at least getting there) for optimizations. This
is general goodness but it would prevent some tailcall optimizations.
One specific case is code like this:
int f1(void);
int f2(void);
int f3(void);
int f4(void);
int f5(void);
int f6(void);
int foo(int x) {
switch(x) {
case 1: return f1();
case 2: return f2();
case 3: return f3();
case 4: return f4();
case 5: return f5();
case 6: return f6();
}
}

=>
LBB0_2: ## %sw.bb
callq _f1
popq %rbp
ret
LBB0_3: ## %sw.bb1
callq _f2
popq %rbp
ret
LBB0_4: ## %sw.bb3
callq _f3
popq %rbp
ret

This patch teaches codegenprep to duplicate returns when the return value
is a phi and where the phi operands are produced by tail calls followed by
an unconditional branch:

sw.bb7: ; preds = %entry
%call8 = tail call i32 @f5() nounwind
br label %return
sw.bb9: ; preds = %entry
%call10 = tail call i32 @f6() nounwind
br label %return
return:
%retval.0 = phi i32 [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], ... [ 0, %entry ]
ret i32 %retval.0

This allows codegen to generate better code like this:

LBB0_2: ## %sw.bb
jmp _f1 ## TAILCALL
LBB0_3: ## %sw.bb1
jmp _f2 ## TAILCALL
LBB0_4: ## %sw.bb3
jmp _f3 ## TAILCALL

rdar://9147433


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127953 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
94dad03a9626511cf16edc90284e873b696c8db2 19-Mar-2011 Johnny Chen <johnny.chen@apple.com> Fixed an assert by the ARM disassembler for LDRD_PRE/POST.
The relevant instruction table entries were changed sometime ago to no longer take
<Rt2> as an operand. Modify ARMDisassemblerCore.cpp to accomodate the change and
add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127935 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0082830cb26248178fe5cc9bbdbd00881556c33d 18-Mar-2011 Owen Anderson <resistor@mac.com> Add support to the ARM asm parser for the register-shifted-register forms of basic instructions like ADD. More work left to be done to support other instances of shifter ops in the ISA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127917 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
19f6f503d6638ab811f0da1b09db584e62a2b435 18-Mar-2011 Owen Anderson <resistor@mac.com> Clean whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127900 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
099e5553ebb868c06379ef05e56aae2346eaaa38 18-Mar-2011 Owen Anderson <resistor@mac.com> Reduce code duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127899 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
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
RMInstrThumb2.td
5e5a40867a1adce1178ed226b77b0a1b0cb6a5c0 18-Mar-2011 Johnny Chen <johnny.chen@apple.com> The disassembler for Thumb was wrongly adding 4 to the computed imm32 offset.
Remove the offending logic and update the test cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127843 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
670350bb782f6268126f7f8afefe86ab05b5b23d 18-Mar-2011 Owen Anderson <resistor@mac.com> There are two pseudos in this case that are Thumb mode, not one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127840 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
e68d8ec25296574109b586359d37318c725442ac 17-Mar-2011 Johnny Chen <johnny.chen@apple.com> It used to be that t_addrmode_s4 was used for both:

o A8.6.195 STR (register) -- Encoding T1
o A8.6.193 STR (immediate, Thumb) -- Encoding T1

It has been changed so that now they use different addressing modes
and thus different MC representation (Operand Infos). Modify the
disassembler to reflect the change, and add relevant tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127833 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
e27fa74d5f0f772e61b821dee45007f0b79899c1 17-Mar-2011 Nick Lewycky <nicholas@mxc.ca> Add "swi" which is an obsolete mnemonic for "svc".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127788 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
276f6f9cf978fa7074687eead10a6db96c5afa6d 15-Mar-2011 Johnny Chen <johnny.chen@apple.com> There were two issues fixed:

1. The ARM Darwin *r9 call instructions were pseudo-ized recently.
Modify the ARMDisassemblerCore.cpp file to accomodate the change.

2. The disassembler was unnecessarily adding 8 to the sign-extended imm24:

imm32 = SignExtend(imm24:'00', 32); // A8.6.23 BL, BLX (immediate)
// Encoding A1

It has no business doing such. Removed the offending logic.

Add test cases to arm-tests.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127707 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0d4c9d94f68fc561ebb11709ed99367e490af003 15-Mar-2011 Bill Wendling <isanbard@gmail.com> The VTBL (and VTBX) instructions are rather permissive concerning the masks they
accept. If a value in the mask is out of range, it uses the value 0, for VTBL,
or leaves the value unchanged, for VTBX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127700 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a24cb40be24e854faa8fb2c2148422a19c4a0ea5 15-Mar-2011 Bill Wendling <isanbard@gmail.com> Some minor cleanups based on feedback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127694 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
019195229693c1829e6ed5a3f57209728fdcba8f 15-Mar-2011 Evan Cheng <evan.cheng@apple.com> Do not form thumb2 ldrd / strd if the offset is by multiple of 4. rdar://9133587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127683 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
085ea1b6337ff524edcff3368ee15b5acf9f5e53 15-Mar-2011 Johnny Chen <johnny.chen@apple.com> Fixed an ARM disassembler bug where it does not handle STRi12 correctly because an extra
register operand was erroneously added. Remove an incorrect assert which triggers the bug.

rdar://problem/9131529


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127642 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
5edf24efac40062766c643e08f11bc509d373370 15-Mar-2011 Jim Grosbach <grosbach@apple.com> Clean up ARM tail calls a bit. They're pseudo-instructions for normal branches.
Also more cleanly separate the ARM vs. Thumb functionality. Previously, the
encoding would be incorrect for some Thumb instructions (the indirect calls).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127637 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFrameLowering.cpp
RMInstrInfo.td
69a05a7b9205fd4628ed614d1845f3879f6be949 15-Mar-2011 Bill Wendling <isanbard@gmail.com> Generate a VTBL instruction instead of a series of loads and stores when we
can. As Nate pointed out, VTBL isn't super performant, but it *has* to be better
than this:

_shuf:
@ BB#0: @ %entry
push {r4, r7, lr}
add r7, sp, #4
sub sp, #12
mov r4, sp
bic r4, r4, #7
mov sp, r4
mov r2, sp
vmov d16, r0, r1
orr r0, r2, #6
orr r3, r2, #7
vst1.8 {d16[0]}, [r3]
vst1.8 {d16[5]}, [r0]
subs r4, r7, #4
orr r0, r2, #5
vst1.8 {d16[4]}, [r0]
orr r0, r2, #4
vst1.8 {d16[4]}, [r0]
orr r0, r2, #3
vst1.8 {d16[0]}, [r0]
orr r0, r2, #2
vst1.8 {d16[2]}, [r0]
orr r0, r2, #1
vst1.8 {d16[1]}, [r0]
vst1.8 {d16[3]}, [r2]
vldr.64 d16, [sp]
vmov r0, r1, d16
mov sp, r4
pop {r4, r7, pc}

The "illegal" testcase in vext.ll is no longer illegal.
<rdar://problem/9078775>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127630 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
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
RMInstrFormats.td
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
21a6179c9daaaa38be40b53d6993404856e20dc1 14-Mar-2011 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127595 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
af3dce51494b366024958b6dc9a15b95cb03011f 12-Mar-2011 Eric Christopher <echristo@apple.com> Sometimes isPredicable lies to us and tells us we don't need the operands.
Go ahead and add them on when we might want to use them and let
later passes remove them.

Fixes rdar://9118569


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127518 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
34e98e968f29852d89460ec68fdd4783c5c8dceb 12-Mar-2011 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127516 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f859a545de30bbc848d1b0896b7ef8fa84fd631b 12-Mar-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize the ARM Darwin *r9 call instruction definitions. They're the same
actual instruction as the non-Darwin defs, but have different call-clobber
semantics and so need separate patterns. They don't need to duplicate the
encoding information, however.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127515 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
cea5afc98558b24bafee28a02ec21a6d42d2d8e7 12-Mar-2011 Jim Grosbach <grosbach@apple.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127511 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
72422d38ba6fb2fb0bb9c0c75fe450b3e939ea21 12-Mar-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize the ARM 'B' instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127510 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
3c5edaaf59dc051c6d540dd1041cf6bbbb12854f 12-Mar-2011 Jim Grosbach <grosbach@apple.com> Remove dead code. These ARM instruction definitions no longer exist.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127509 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f219f3135d0ec939acd42801766c17fad41c0173 12-Mar-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize VMOVDcc and VMOVScc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127506 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrVFP.td
b181ad34869c4fa19c527ab8dfd5d438ad8b9bb3 12-Mar-2011 Jim Grosbach <grosbach@apple.com> 80 columns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127505 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
dd11988c999c23eba2467e35892a2f42858c886b 11-Mar-2011 Jim Grosbach <grosbach@apple.com> Properly pseudo-ize the ARM LDMIA_RET instruction. This has the nice side-
effect that we get proper instruction printing using the "pop" mnemonic for it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127502 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
958108ad14e91d0f778de07e791fce83cd5f20a9 11-Mar-2011 Jim Grosbach <grosbach@apple.com> ARM VDUPfd and VDUPfq can just be patterns. The instruction is the same
as for VDUP32d and VDUP32q, respectively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127489 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8b8515c225c799e9df69bde8ffffa3c72cec9445 11-Mar-2011 Jim Grosbach <grosbach@apple.com> ARM VDUPLNfq and VDUPLNfd definitions can just be Pat<>s for VDUPLN32q
and VDUPLN32d, respectively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127486 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
1558df79b4b2b6558c6d107b62e4dab2564bd793 11-Mar-2011 Jim Grosbach <grosbach@apple.com> ARM VREV64df and VREV64qf can just be patterns. The instruction is the same
as for VREV64d32 and VREV64q32, respectively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127485 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f0112a224ffcb6df3044ebb601437ba8ce5b033c 11-Mar-2011 Jim Grosbach <grosbach@apple.com> This FIXME has been fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127483 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e672ff84308434ad5517a5c6fc36e691893fca96 11-Mar-2011 Jim Grosbach <grosbach@apple.com> Properly pseudo-ize ARM MVNCCi.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127482 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.td
eb582d7ba202e06ea339def0b610bc31565250da 11-Mar-2011 Jim Grosbach <grosbach@apple.com> Fix MOVCCi32imm to be have ARM-mode Requires and a proper size (8 bytes, was 4).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127469 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3906276a8d4b308a19675d5a67b2d6ab3e3b9b6f 11-Mar-2011 Jim Grosbach <grosbach@apple.com> Properly pseudo-ize ARM MOVCCi and MOVCCi16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127442 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.td
d4a16ad85d991ff12487b40ef248833448047ead 11-Mar-2011 Jim Grosbach <grosbach@apple.com> Properly pseudo-ize MOVCCr and MOVCCs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127434 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.td
a4f809d8db5222708c9f4519f48916cc919fd19f 10-Mar-2011 Jim Grosbach <grosbach@apple.com> DMB can just be a pat referencing MCR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127423 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bc908cfcc147a3494ebad86297cb6da737434064 10-Mar-2011 Jim Grosbach <grosbach@apple.com> Reorganize a bit. No functional change, just moving patterns up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127422 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a768c3d45f73fff46fb9bbf4368c280ee4aaca49 10-Mar-2011 Jim Grosbach <grosbach@apple.com> Pseudo-instructions are codegenonly by definition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127420 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
18b475f95478f130667faa8c74bea4efdf68b1ed 09-Mar-2011 Johnny Chen <johnny.chen@apple.com> LLVM combines the offset mode of A8.6.199 A1 & A2 into STRBT.
The insufficient encoding information of the combined instruction confuses the decoder wrt
UQADD16. Add extra logic to recover from that.

Fixed an assert reported by Sean Callanan


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127354 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
e6fd111ddf8f32b7d63405e83678887292c34223 09-Mar-2011 Jush Lu <jush.msn@gmail.com> Move BR_JT* to pseudo instructions
RMCodeEmitter.cpp
260b29b71916d4176b0031bf794fd093344fffe6 09-Mar-2011 Jush Lu <jush.msn@gmail.com> JIT fix for Hi/Lo Imm16 encoding
RMCodeEmitter.cpp
d5f8f75e62b9564890df9599eb916ea4bf68c307 09-Mar-2011 Jush Lu <jush.msn@gmail.com> Add encoding , which converts VFP to Thumb2
RMCodeEmitter.cpp
cc7665f5895e1dd9682ee21d1e755d0de28c161b 09-Mar-2011 Jush Lu <jush.msn@gmail.com> Update build scripts after merge r127116
ndroid.mk
b5530586d68bd25831a6796b5d3199cb0769a35c 09-Mar-2011 Jush Lu <jush.msn@gmail.com> Merge upstream r127116
620d0cc7ac8319fe66168288f8ca0509f87c46c1 09-Mar-2011 Bill Wendling <isanbard@gmail.com> * Correct encoding for VSRI.
* Add tests for VSRI and VSLI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127297 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c04a9dea7873bcf2a1e68b9eba9b5854021e989a 09-Mar-2011 Bill Wendling <isanbard@gmail.com> Correct the encoding for VRSRA and VSRA instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127294 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
7c6b608a7cb33e628e3906a8395a7ba47a6b966b 09-Mar-2011 Bill Wendling <isanbard@gmail.com> * Fix VRSHR and VSHR to have the correct encoding for the immediate.
* Update the NEON shift instruction test to expect what 'as' produces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127293 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
79f56c9618e60c390932a6866929b82c9a6d6f96 08-Mar-2011 Bob Wilson <bob.wilson@apple.com> Fix a compiler crash where a Glue value had multiple uses. Radar 9049552.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127198 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
1b772f99622dc89b807541c0d7477286aa369976 08-Mar-2011 Bob Wilson <bob.wilson@apple.com> Fix comment typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127197 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3116dce33840a115130c5f8ffcb9679d023496d6 08-Mar-2011 Bill Wendling <isanbard@gmail.com> Rename the narrow shift right immediate operands to "shr_imm*" operands. Also
expand the testing of the narrowing shift right instructions.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127193 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
be2119e8e2bc7006cfd638a24367acbfda625d16 07-Mar-2011 Cameron Zwarich <zwarich@apple.com> Move getRegPressureLimit() from TargetLoweringInfo to TargetRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127175 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMISelLowering.cpp
RMISelLowering.h
e516379d2a2fd1ad7583b2fa289051da517d8a42 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> ARM assembler stuff is crazy: for .setfp positive values of offset corresponds to "add" instruction, not to "sub" as in .pad case

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127106 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b3fcc06d2124f9d01e3b48097b44cc141309908e 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> In Thumb1 mode the constant might be materialized via the load from constpool. Emit unwinding information in case when this load from constpool is used to change the stack pointer in the prologue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127105 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
humb1RegisterInfo.cpp
3daccd82d3151fa3629de430b55698a81084fc9e 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Implement frame unwinding information emission for Thumb1. Not finished yet because there is no way given the constpool index to examine the actual entry: the reason is clones inserted by constant island pass, which are not tracked at all! The only connection is done during asmprinting time via magic label names which is really gross and needs to be eventually fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127104 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1FrameLowering.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
7a764168b9b3b3ebeaea224ed8c6ef93381c74d4 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Add unwind information emission for thumb stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127103 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7503fcb890155ac1b62542550c7248db4df890f8 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Handle MI flags inside Thumb2SizeReduction pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127102 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
57caad7a33ff145b71545f10dcfbbf2fd0f595d3 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Preliminary support for ARM frame save directives emission via MI flags.
This is just very first approximation how the stuff should be done
(e.g. ARM-only for now). More to follow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127101 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMFrameLowering.cpp
RMFrameLowering.h
RMMCAsmInfo.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
humb1FrameLowering.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
b5e16af9ea04cc1f94ca631104e5e6be96546aa1 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Some first rudimentary support for ARM EHABI: print exception table in "text mode".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127099 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
RMTargetObjectFile.cpp
4faa0e19521f700ad10bfea69e141fc46c45f78b 05-Mar-2011 Bob Wilson <bob.wilson@apple.com> Remove unused conditional negate operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127090 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrVFP.td
53dc40a45fae88be2ef023e3c49b58291b8440f9 04-Mar-2011 Devang Patel <dpatel@apple.com> Disable ARMGlobalMerge on darwin. The debugger is not yet able to extract individual variable's info from merged global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127019 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
58f04fd22a3bbbb5b2620b6feecc36cf1b878dbd 04-Mar-2011 Bob Wilson <bob.wilson@apple.com> PR8053: Fix encoding of S bit in some ARM instructions.
Patch by Zonr Chang!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126967 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
acc9e7315c450ca7cffd4a65c65e578211f9d945 03-Mar-2011 Bob Wilson <bob.wilson@apple.com> Add a readme entry for the redundant movw issue for pr9370.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126930 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
181d3fe727022160ce8932e355eae8b3ff478592 03-Mar-2011 Bob Wilson <bob.wilson@apple.com> pr9367: Add missing predicated BLX instructions.
Patch by Jyun-Yan You, with some minor adjustments and a testcase from me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126915 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
d39647d9130a52beb80bdc9116cb0f3a8affe12f 03-Mar-2011 Kevin Enderby <enderby@apple.com> Fixes an assertion failure while disassembling ARM rsbs reg/reg form.
Patch by Ted Kremenek!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126895 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e89a05337a9946040251a5f19165c41b9a1a7b27 02-Mar-2011 Renato Golin <renato.golin@arm.com> Fixing a bug when printing fpu text to object file. Patch by Mans Rullgard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126882 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
efb5c6d70817d10c1dd2450b87f423120fd00de8 01-Mar-2011 jush <jush.msn@gmail.com> Add a FIXME.
Emit MOVi32imm by PseudoMoveInstruction now.
Expanding MOVi32imm needs more encoding.
RMExpandPseudoInsts.cpp
a656b63ee4d5b0e3f4d26a55dd4cc69795746684 01-Mar-2011 Bill Wendling <isanbard@gmail.com> Narrow right shifts need to encode their immediates differently from a normal
shift.

16-bit: imm6<5:3> = '001', 8 - <imm> is encded in imm6<2:0>
32-bit: imm6<5:4> = '01',16 - <imm> is encded in imm6<3:0>
64-bit: imm6<5> = '1', 32 - <imm> is encded in imm6<4:0>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126723 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
728ff0db783152ed4f21f7746bd7874b49708172 28-Feb-2011 Renato Golin <renato.golin@arm.com> Fix .fpu printing in ARM assembly, regarding bug http://llvm.org/bugs/show_bug.cgi?id=8931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126689 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4da434cd40b3ae9ea6ff3bef8881d17cca608420 28-Feb-2011 Kevin Enderby <enderby@apple.com> Add missing whitespace in the formatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126687 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
d436d5b1c993c78b6c267b5fc1056d593f07921f 28-Feb-2011 Kevin Enderby <enderby@apple.com> Fix the arm's disassembler for blx that was building an MCInst without the
needed two predicate operands before the imm operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126662 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
c24ab5c654debe47d5693e287d4dc2e151c0ba0e 28-Feb-2011 Evan Cheng <evan.cheng@apple.com> Fix a typo which cause dag combine crash. rdar://9059537.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126661 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f222e595c0137b8a9571408257f7000c2fb95473 28-Feb-2011 Stuart Hastings <stuart@apple.com> Support for byval parameters on ARM. Will be enabled by a forthcoming
patch to the front-end. Radar 7662569.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126655 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
4485fa16ecd3a16ab2b670691fcbfd24cf0656e2 28-Feb-2011 jush <jush.msn@gmail.com> Avoid additional encoding for LDRBi12 and STRBi12.
RMCodeEmitter.cpp
c70af345c10d7b6a652fc2825fe325c61525875f 28-Feb-2011 jush <jush.msn@gmail.com> Add a FIXME.
NEON feature need to emit vector value.
RMCodeEmitter.cpp
30a4c49153cb859d72f6507ba361dd78bdfc2a01 28-Feb-2011 jush <jush.msn@gmail.com> Add handling of FP immediate operands.
RMCodeEmitter.cpp
ee22f2b82b066c61e1249b4e62a5829fe73e557b 28-Feb-2011 jush <jush.msn@gmail.com> Remove a assertion.
It conflicts with VFP encoding.
RMCodeEmitter.cpp
facbbb139d11a2c238a98a19574ff14b9069ec29 28-Feb-2011 jush <jush.msn@gmail.com> Handle f32 in FCONSTS as a single,not a double.
RMCodeEmitter.cpp
RMInstrVFP.td
28263e86e6e8b8f3e41ed67eab48a50d07772503 28-Feb-2011 jush <jush.msn@gmail.com> Fix Addressing Mode 5 encoding.
RMCodeEmitter.cpp
4671b174806e6c8577125a644aa85999598e4971 28-Feb-2011 jush <jush.msn@gmail.com> Update build script after merge.
ndroid.mk
nstPrinter/Android.mk
4d03e416be8cf1f0f502118826b7cbaeec0b79b2 28-Feb-2011 jush <jush.msn@gmail.com> Merge LLVM upstream r119309 into honey
da52506792f1791682eda34d6319f5967116eb65 25-Feb-2011 Bob Wilson <bob.wilson@apple.com> Add patterns to use post-increment addressing for Neon VST1-lane instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126477 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
9831f2d585816fc293504ea66e40e8a6c5a5d702 25-Feb-2011 Evan Cheng <evan.cheng@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126467 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
acca09bd64080393a047204eafad46e2fc34ee68 25-Feb-2011 Evan Cheng <evan.cheng@apple.com> Each prologue may have multiple vpush instructions to store callee-saved
D registers since the vpush list may not have gaps. Make sure the stack
adjustment instruction isn't moved between them. Ditto for vpop in
epilogues.

Sorry, can't reduce a small test case.
rdar://9043312


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126457 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
2b943566f394eba5aac0c6c94a2375ea37c9341f 23-Feb-2011 Evan Cheng <evan.cheng@apple.com> Change VFPNeonA8 definition to make the code easier to read.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126298 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
EONMoveFix.cpp
e573fb32556ba8430ccd723f71233cdf56b76340 23-Feb-2011 Evan Cheng <evan.cheng@apple.com> More fcopysign correctness and performance fix.
The previous codegen for the slow path (when values are in VFP / NEON
registers) was incorrect if the source is NaN.

The new codegen uses NEON vbsl instruction to copy the sign bit. e.g.
vmov.i32 d1, #0x80000000
vbsl d1, d2, d0
If NEON is not available, it uses integer instructions to copy the sign bit.
rdar://9034702


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126295 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6557bce3ec8d5a82b2ea299a18cb51677b299633 22-Feb-2011 Evan Cheng <evan.cheng@apple.com> VFP single precision arith instructions can go down to NEON pipeline, but on Cortex-A8 only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126238 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMHazardRecognizer.cpp
RMInstrFormats.td
RMInstrVFP.td
LxExpansionPass.cpp
EONMoveFix.cpp
0a921698b6d6f8a40df3893a72c7e6ced1c919a0 22-Feb-2011 Evan Cheng <evan.cheng@apple.com> Guard against de-referencing MBB.end().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126192 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
af05c69ba024b1838ae6f1071d6fd0f9fe33999f 22-Feb-2011 Evan Cheng <evan.cheng@apple.com> available_externally (hidden or not) GVs are always accessed via stubs. rdar://9027648.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126191 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
872f4a224711ef55b821746fc7a24b9260fee370 22-Feb-2011 Eric Christopher <echristo@apple.com> Only use blx for external function calls on thumb, these could be fixed
up by the dynamic linker, but it's better to use the correct instruction
to begin with.

Fixes rdar://9011034


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126176 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
557b297f35395a6104a77ed6a798f10c2b46bfbe 22-Feb-2011 Evan Cheng <evan.cheng@apple.com> Skipping over debugvalue instructions to determine whether the split spot is in a IT block. rdar://9030770

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126159 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
68e6beeccc0b9ac2e8d3687a8a5b7d4b172edca1 22-Feb-2011 Devang Patel <dpatel@apple.com> Revert r124611 - "Keep track of incoming argument's location while emitting LiveIns."
In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body.
This requires some coordination with debugger to get this working.
- The debugger needs to be aware of prolog_end attribute attached with line table entries.
- The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126155 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
00d78f1348a5980a276bed8f9be09ce2412a6a12 20-Feb-2011 Oscar Fuentes <ofv@wanadoo.es> Use explicit add_subdirectory's for LLVM target sublibraries instead
of testing for its presence at cmake time.

This way the build automatically regenerates the makefiles when a svn
update brings in a new sublibrary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126068 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
4b19c9865ee94367d7b3594c36e59e4c15ba82cc 19-Feb-2011 Joerg Sonnenberger <joerg@bec.de> Avoid dangling else warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126004 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8bba1a5ef0f8a71de2e58c7f05b8714a73464ca8 18-Feb-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix style and a typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125949 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
6904f05e607b6bbdfa96a2ebb628ebf3a1f21455 17-Feb-2011 NAKAMURA Takumi <geek4civic@gmail.com> Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 generally.

No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125747 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
5eda282cd1775afc2ec1e1b86c9e224d2db10302 16-Feb-2011 Evan Cheng <evan.cheng@apple.com> Some single precision VFP instructions may be executed on NEON pipeline, but not double precision ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125624 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
79bb6dd363fd0a23040910b32d69a282063521bd 15-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach ARMLoadStoreOptimizer to remove kill flags from merged instructions as well.

This is necessary to avoid a crash in certain tangled situations where a kill
flag is first correctly moved to a merged instruction, and then needs to be
moved again:

STR %R0, a...
STR %R0<kill>, b...

First becomes:

STR %R0, b...
STM a, %R0<kill>, ...

and then:

STM a, %R0, ...
STM b, %R0<kill>, ...

We can now remove the kill flag from the merged STM when needed. 8960050.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125591 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ab4c366274a582dd8146b2820c6b999cad5fce36 15-Feb-2011 Duncan Sands <baldrick@free.fr> Spelling fix: consequtive -> consecutive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125563 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
727961a1a3507a8f7e47ba80a1e37fc68bfc8199 15-Feb-2011 Bob Wilson <bob.wilson@apple.com> Remove unused bitvectors that record ARM callee-saved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125534 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
RMMachineFunctionInfo.h
e98d646b1194c522b121e1a70906efe4ea578fc8 14-Feb-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> A fail to match coprocessor number and register number must fail instead of assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125521 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMBaseInfo.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
0a9481f44fe4fc76e59109992940a76b2a3f9b3b 13-Feb-2011 Chris Lattner <sabre@nondot.org> Enhance ComputeMaskedBits to know that aligned frameindexes
have their low bits set to zero. This allows us to optimize
out explicit stack alignment code like in stack-align.ll:test4 when
it is redundant.

Doing this causes the code generator to start turning FI+cst into
FI|cst all over the place, which is general goodness (that is the
canonical form) except that various pieces of the code generator
don't handle OR aggressively. Fix this by introducing a new
SelectionDAG::isBaseWithConstantOffset predicate, and using it
in places that are looking for ADD(X,CST). The ARM backend in
particular was missing a lot of addressing mode folding opportunities
around OR.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125470 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f922c47143d247cbae14b294a0bada139bcd35f6 12-Feb-2011 Jim Grosbach <grosbach@apple.com> AsmMatcher custom operand parser failure enhancements.

Teach the AsmMatcher handling to distinguish between an error custom-parsing
an operand and a failure to match. The former should propogate the error
upwards, while the latter should continue attempting to parse with
alternative matchers.

Update the ARM asm parser accordingly.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125426 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
7973f350b78e0bef8567f441f3255c846f5432ac 11-Feb-2011 Nate Begeman <natebegeman@mac.com> Implement sdiv & udiv for <4 x i16> and <8 x i8> NEON vector types.
This avoids moving each element to the integer register file and calling __divsi3 etc. on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125402 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c143dd4f63889ca6b4f656200f43a1fa7bbf1c34 11-Feb-2011 Evan Cheng <evan.cheng@apple.com> Fix buggy fcopysign lowering.
This
define float @foo(float %x, float %y) nounwind readnone {
entry:
%0 = tail call float @copysignf(float %x, float %y) nounwind readnone
ret float %0
}

Was compiled to:
vmov s0, r1
bic r0, r0, #-2147483648
vmov s1, r0
vcmpe.f32 s0, #0
vmrs apsr_nzcv, fpscr
it lt
vneglt.f32 s1, s1
vmov r0, s1
bx lr

This fails to copy the sign of -0.0f because it's lost during the float to int
conversion. Also, it's sub-optimal when the inputs are in GPR registers.

Now it uses integer and + or operations when it's profitable. And it's correct!
lsrs r1, r1, #31
bfi r0, r1, #31, #1
bx lr
rdar://8984306


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125357 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMInstrThumb2.td
RMMCCodeEmitter.cpp
isassembler/ARMDisassembler.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
humb2SizeReduction.cpp
75396a998887220074b90f176e29054a35b6c0ed 08-Feb-2011 Evan Cheng <evan.cheng@apple.com> Temporary workaround for a bad bug introduced by r121082 which replaced
t2LDRpci with t2LDRi12.
There are a couple of problems with this.
1. The encoding for the literal and immediate constant are different.
Note bit 7 of the literal case is 'U' so it can be negative.
2. t2LDRi12 is now narrowed to tLDRpci before constant island pass is run.
So we end up never using the Thumb2 instruction, which ends up creating a
lot more constant islands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125074 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
humb2SizeReduction.cpp
706d946cfe44fa93f482c3a56ed42d52ca81b257 07-Feb-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add support for parsing dmb/dsb instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125055 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
smParser/ARMAsmParser.cpp
fafde7f0b7c70e08de719d9e33ce9f6fdaefc984 07-Feb-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Remove the MCR asm parser hack and start using the custom target specific asm
parsing of operands introduced in r125030. As a small note, besides using a more
generic approach we can also have more descriptive output when debugging
llvm-mc, example:

mcr p7, #1, r5, c1, c1, #4

note: parsed instruction:
['mcr', <ARMCC::al>,
<coprocessor number: 7>,
1,
<register 73>,
<coprocessor register: 1>,
<coprocessor register: 1>,
4]



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125052 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
cfb9e3db360f9161eede09766fadb2cb178771cb 07-Feb-2011 Kenny Root <kroot@google.com> Initial pass at adding X86 target support

Add some Makefile support for using X86 as a target as in "full_x86-eng"
However, this is not enough. More changes will be coming in future
changelists.

Change-Id: Id2765c9ba15404ebce09168738cebf5d00a2e15d
ndroid.mk
smPrinter/Android.mk
isassembler/Android.mk
argetInfo/Android.mk
c046d64f1b5f19cb06616e519a45bc4b0693f9d3 07-Feb-2011 Jason W Kim <jason.w.kim.2009@gmail.com> ARM/MC/ELF Lowercase .cpu attributes in .s, but make them uppercase in .o



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125025 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
aa26102db47ac7041a54728cf856de4dca700880 07-Feb-2011 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo which caused an isel assertion. rdar://8964854.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125023 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1c3ef90cab9a563427bdd3c2fcd875c717750562 07-Feb-2011 Bob Wilson <bob.wilson@apple.com> Add codegen support for using post-increment NEON load/store instructions.

The vld1-lane, vld1-dup and vst1-lane instructions do not yet support using
post-increment versions, but all the rest of the NEON load/store instructions
should be handled now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125014 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
7de6814405ab02591235f0826b8e6d98fd76c8ba 07-Feb-2011 Bob Wilson <bob.wilson@apple.com> Change VLD3/4 and VST3/4 for quad registers to not update the address register.

These operations are expanded to pairs of loads or stores, and the first one
uses the address register update to produce the address for the second one.
So far, the second load/store has also updated the address register, just
for convenience, since that output has never been used. In anticipation of
actually supporting post-increment updates for these operations, this changes
the non-updating operations to use a non-updating load/store for the second
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125013 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
6eb08dd9bfc25e0c9aafe059511fe23c28c64bbc 07-Feb-2011 Bob Wilson <bob.wilson@apple.com> Fix some NEON instruction itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125012 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d3a076503bfa3cac293f9d92b810da031bbb2800 07-Feb-2011 Bob Wilson <bob.wilson@apple.com> Fix a comment: addrmode6 no longer includes the optional writeback flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125011 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrInfo.td
RMInstrThumb2.td
4e97e8ee5748a92326078d744f5fc2b581a7b5b0 07-Feb-2011 Bob Wilson <bob.wilson@apple.com> Move code for OffsetCompare struct closer to where it is used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125009 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
f009a961caa75465999ef3bc764984d97a7da331 07-Feb-2011 Jason W Kim <jason.w.kim.2009@gmail.com> Rework some .ARM.attribute work for improved gcc compatibility.
Unified EmitTextAttribute for both Asm and Obj emission (.cpu only)
Added necessary cortex-A8 related attrs for codegen compat tests.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124995 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
685c350ae76b588e1f00c01a511fe8bd57f18394 04-Feb-2011 Jason W Kim <jason.w.kim.2009@gmail.com> Teach ARM/MC/ELF to handle R_ARM_JUMP24 relocation type for conditional jumps.
(yes, this is different from R_ARM_CALL)

- Adds a new method getARMBranchTargetOpValue() which handles the
necessary distinction between the conditional and unconditional br/bl
needed for ARM/ELF

At least for ARM mode, the needed fixup for conditional versus unconditional
br/bl is identical, but the ARM docs and existing ARM tools expect this
reloc type...

Added a few FIXME's for future naming fixups in ARMInstrInfo.td




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124895 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
b412915ff6229b3e2dffedcfb0f3fb7e85259841 04-Feb-2011 Daniel Dunbar <daniel@zuster.org> MC/AsmParser: Add support for allowing the conversion process to fail (via
custom conversion functions).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124872 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
69df72367f45c0414541196efaf7c13b1ccd3f08 03-Feb-2011 Bob Wilson <bob.wilson@apple.com> Fix 80-column violations and whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124819 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
92e7195e433435eeb93d5f88de146878b76abb21 02-Feb-2011 Bob Wilson <bob.wilson@apple.com> Update comment to match my recent change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124725 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
31959b19a72608051888160514977875a8027dfc 02-Feb-2011 Evan Cheng <evan.cheng@apple.com> Given a pair of floating point load and store, if there are no other uses of
the load, then it may be legal to transform the load and store to integer
load and store of the same width.

This is done if the target specified the transformation as profitable. e.g.
On arm, this can transform:
vldr.32 s0, []
vstr.32 s0, []

to

ldr r12, []
str r12, []

rdar://8944252


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124708 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
692df93de427356d3ab7bb0438a3c998f28186ea 01-Feb-2011 Bob Wilson <bob.wilson@apple.com> PR9081: Split up LDM instruction with deprecated use of both LR and PC.
This is completely untested but pretty straightforward, so hopefully I
got it right.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124694 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
e9a7ea68653689966417443b8ac2528c1d9d3ccf 31-Jan-2011 Devang Patel <dpatel@apple.com> Keep track of incoming argument's location while emitting LiveIns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124611 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
98b928ea71576c243bdb203879d966be9cde5f3c 30-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Save a mapping between original and cloned constpool entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124570 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMMachineFunctionInfo.h
d11c57a93753e7fd9fdac110e81c88eb56a847e4 28-Jan-2011 Bob Wilson <bob.wilson@apple.com> PR9030: Fix disassembly of ARM "mov pc, lr" instruction.
Patch by Jyun-Yan You.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124492 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
c3a20bab7571ff95525252c379198e67b65d0f1d 28-Jan-2011 Evan Cheng <evan.cheng@apple.com> Fix PLD encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124458 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9e56fb12c504c82c92947fe9c46287fc60116b91 28-Jan-2011 Kevin Enderby <enderby@apple.com> Changed llvm-mc arm target to give an error if .syntax divided is used. Since
only .syntax unified is supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124454 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
bf7553210ae44f05e7460edeae1ee499d8a22dcb 27-Jan-2011 Roman Divacky <rdivacky@freebsd.org> Introduce virtual ParseRegister method in TargetAsmParser.
Create override of this method in X86/ARM/MBlaze.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124378 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4a2b31676217cbf710f74253ae6ab8306b115ba6 27-Jan-2011 Eric Christopher <echristo@apple.com> Use the incoming VT not the VT of where we're trying to store to determine
if we can store a value. Also, the exclusion is or, not and.

Fixes rdar://8920247.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124357 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8cb415e4c0032300a1b728c942f8b31acec0a9f5 26-Jan-2011 Bill Wendling <isanbard@gmail.com> Add support for printing out floating point values from the ARM assembly
parser. The parser will always give us a binary representation of the floating
point number.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124318 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.td
717082b9bd634ea406ca63b3a9358ffd09091b9c 26-Jan-2011 Bill Wendling <isanbard@gmail.com> Add needed braces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124273 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
fca9e9ec56dd811f99283f45f327a2646bda3bc0 25-Jan-2011 Stephen Hines <srhines@google.com> Fix encoding bug for ARM PKHBT/PKHTB instructions.

It looks like LLVM was encoding the shift type/amount and then not properly
decoding it when emitting the final assembly code.

Change-Id: I62912372b121e8edcf9273c4cc9304ee81b27d31
b: 3378908
RMInstrInfo.td
0f4db7efa1aa901d798df95f16d8361450b69fe1 25-Jan-2011 Bill Wendling <isanbard@gmail.com> Revert 124230. It was causing test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124233 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
261b9c1a35e1c2ef7e4cc387443dd8544d8b48de 25-Jan-2011 Bill Wendling <isanbard@gmail.com> The floating point value is encoded in its binary form as an Imm. Convert it
appropriately so that it prints out the decimal representation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124230 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
7cfa656ad84306ded61f0a3c7a8862505f48c239 25-Jan-2011 Evan Cheng <evan.cheng@apple.com> Don't merge restore with tail call instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124167 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
5899a60d2fb02f7e2d094d710babbe1d3bd97254 24-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Provide correct registers for EH stuff on ARM

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124151 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
96aa78c8c5ef1a5f268539c9edc86569b436d573 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for the --noexecstack option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124077 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
584520e8e2c1f8cc04bc8dd4dc4ea6c390627317 23-Jan-2011 Ted Kremenek <kremenek@apple.com> Null initialize a few variables flagged by
clang's -Wuninitialized-experimental warning.
While these don't look like real bugs, clang's
-Wuninitialized-experimental analysis is stricter
than GCC's, and these fixes have the benefit
of being general nice cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124073 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
1c13026e8f94bd332c0979baa9c777da99d48736 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove more duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124056 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
c85dca66e68c9fa6ffa8471c64113b12d8d94fb1 23-Jan-2011 Rafael Espindola <rafael.espindola@gmail.com> Remove duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124054 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
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
RMAsmPrinter.cpp
RMBaseInfo.h
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
c8bfd1d78ff9a307d1d4cb57cce4549b538e60f4 21-Jan-2011 Andrew Trick <atrick@apple.com> Convert -enable-sched-cycles and -enable-sched-hazard to -disable
flags. They are still not enable in this revision.

Added TargetInstrInfo::isZeroCost() to fix a fundamental problem with
the scheduler's model of operand latency in the selection DAG.

Generalized unit tests to work with sched-cycles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123969 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d7e3cc840b81b0438e47f05d9664137a198876df 21-Jan-2011 Evan Cheng <evan.cheng@apple.com> Don't be overly aggressive with CSE of "ldr constantpool". If it's a pc-relative
value, the "add pc" must be CSE'ed at the same time. We could follow the same
approach as T2 by adding pseudo instructions that combine the ldr + "add pc".
But the better approach is to use movw + movt (which I will enable soon), so
I'll leave this as a TODO.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123949 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
b32f7a5f4bc678c052db40cbb4ac8617c134aa24 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> - Use a more appropriate name for Owen's ARM Parser isMCR hack since the same operands can be present
in cdp/cdp2 instructions. Also increase the hack with cdp/cdp2 instructions.
- Fix the encoding of cdp/cdp2 instructions for ARM (no thumb and thumb2 yet) and add testcases for t
hem.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123927 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
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
RMInstrFormats.td
RMInstrThumb2.td
fa5bd27fbe5188ca708ac0dda4f32d90505da9f5 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add mcr* and mr*c support to thumb targets

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123917 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
smParser/ARMAsmParser.cpp
8197754be57abba9bbce4733de8d887f341ea339 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Refactor mcr* and mr*c instructions into classes with the same encoding. No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123910 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMRegisterInfo.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
3abd75bf1dc96ee0cd7e8c1b8331e27672437b8b 19-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix the encoding of mrrc and mcrr family of instructions. Also add testcases for mcr and mrc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123837 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ec91d52a77abfe3cf56413a11f47b3ee8e67e41e 19-Jan-2011 Daniel Dunbar <daniel@zuster.org> ARM/ISel: Factor out isScaledConstantInRange() helper.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123823 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9b72693d83d1c9dcda98a478c289d05306520a41 19-Jan-2011 Logan <tzuhsiang.chien@gmail.com> Add X86AsmParser and ARMAsmParser build rules.
smParser/Android.mk
32cec0a75678401ce079bb31fa748ae0d6613e2d 19-Jan-2011 Andrew Trick <atrick@apple.com> For ARM subtargets with useNEONForSinglePrecisionFP, double count uses
of the floating point types less than 64-bits. It's somewhat of a temporary
hack but forces more accurate modeling of register pressure and results
in fewer spills.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123811 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7fa75ce11d8f491d9f68c3cabe60f6fc70787748 19-Jan-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123810 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
61505907f54d4e7df2f9d90b1ed3a4caa0469d26 18-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Create two new generic classes to represent the following VMRS/VMSR variations:
vmrs reg, fpexc
vmrs reg, fpsid
vmsr fpexc, reg
vmsr fpsid, reg



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123783 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMRegisterInfo.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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrThumb2.td
smParser/ARMAsmParser.cpp
fdcee77887372dbf6589d47cc33094965b679f24 18-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Follow the current hack set and enable the correct parsing of bkpt while in thumb mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123772 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
ff12a8bd999569ce76b3a9f5e167f6e89280e9d9 18-Jan-2011 Jim Grosbach <grosbach@apple.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123769 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
4b462672d2b4950e5f059bd093db524aa10e8377 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Use accessors where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123746 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6ec56204f372df73e4a27085b188a72548b867ac 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Fill in ASMOperand::dump() for memory operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123745 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2637dc9a252f25fd1c63acfe0606860ee7c8cfdf 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Make ARMOperand use a union where appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123744 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
05d8b71424316ad7b014adbbb316f78c5bd46861 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Unify ParseMemory() successfull return.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123740 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0571093f4cf0414724674448fe6b973c0fa705b3 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Early exit on failure (NEFC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123739 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d3df5f32c059b3ac111f1c08571d5493aa1d48c6 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Always keep an offset expression, if used (instead of assuming == 0 if used but not present), and simplify logic.

Also, clean up various non-sensicalisms in isMemModeRegThumb() and isMemModeImmThumb().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123738 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
023835d51b6dd6e3a253deefa595b0d916b605ac 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Add a variety of asserts on the sanity of memory operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123737 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
81f453c4b91b8c681d82d63257a271107626648e 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Use a consistent marker for not-set OffsetRegNum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123736 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
955ed73d12f2b186ef3f80da872b702cd7f2895b 18-Jan-2011 Jeffrey Yasskin <jyasskin@google.com> Remove unused variables found by gcc-4.6's -Wunused-but-set-variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123707 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMFrameLowering.cpp
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
RMAsmPrinter.cpp
RMAsmPrinter.h
RMBaseInfo.h
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMJITInfo.h
RMMachineFunctionInfo.h
RMSubtarget.cpp
1d8334eabc0ad9d6c3c3c5852315cca324383302 16-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Provide instruction sizes for ARMv5 variants of MUL instructions.
This fixes PR8987

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123598 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
42c32daadbb1bd0626cced08c418d1b7a0b16fb4 14-Jan-2011 Logan <tzuhsiang.chien@gmail.com> Add LOCAL_MODULE_TAGS := optional

Change-Id: I292f6297b06f97360c15884677057d624e73fbf6
ndroid.mk
smPrinter/Android.mk
isassembler/Android.mk
argetInfo/Android.mk
df55fea807835bc23a2879fbf7f7a8bd53de8256 16-Jan-2011 Evan Cheng <evan.cheng@apple.com> Spill R4 if it's going to be used to restore SP from FP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123567 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
a0f720f500222c43e3f9905eddda2e6e6bcd300e 15-Jan-2011 Eric Christopher <echristo@apple.com> 80-col.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123505 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ca3f06963c21ee34c7454be807c4d72af3b0f3ad 15-Jan-2011 Bob Wilson <bob.wilson@apple.com> Fix a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123497 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
41262da6cc8e61d7ae5e021a41964d50c964e390 15-Jan-2011 Eric Christopher <echristo@apple.com> Fix 80-cols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123494 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f3eb3bba1614a7935b44fc963a805088d71267f3 14-Jan-2011 Evan Cheng <evan.cheng@apple.com> Completed :lower16: / :upper16: support for movw / movt pairs on Darwin.
- Fixed :upper16: fix up routine. It should be shifting down the top 16 bits first.
- Added support for Thumb2 :lower16: and :upper16: fix up.
- Added :upper16: and :lower16: relocation support to mach-o object writer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123424 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
0c9f250d54ed59108fffe5ce2f7df7bc8448915c 13-Jan-2011 Owen Anderson <resistor@mac.com> Recognize alternative register names like ip -> r12.
Fixes <rdar://problem/8857982>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123409 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f7ca976e74eafeeab0e9097f0fb07d6bb447415b 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a few more places that should use MBB::getLastNonDebugInstr().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123408 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
e4e5e2aae7e1e0e84877061432e7b981a360a77d 13-Jan-2011 Owen Anderson <resistor@mac.com> Add support to the ARM MC infrastructure to support mcr and friends. This requires supporting
the symbolic immediate names used for these instructions, fixing their pretty-printers, and
adding proper encoding information for them.

With this, we can properly pretty-print and encode assembly like:
mrc p15, #0, r3, c13, c0, #3

Fixes <rdar://problem/8857858>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123404 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
4f28c1c71450c711e96aa283de53739d8b4504cd 13-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach frame lowering to ignore debug values after the terminators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123399 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
humb1FrameLowering.cpp
422578547e0e3464af7ae23305c54dd71a8bd9e9 13-Jan-2011 Bob Wilson <bob.wilson@apple.com> Tidy comments, indentation, and 80-column violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123397 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
67b212e03b77e921e2b9780059681125a45d15a7 13-Jan-2011 Kevin Enderby <enderby@apple.com> Fix ARMAsmParser::ParseOperand() to allow it to parse . as a branch target and
directional local labels like 1f and 2b.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123393 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5f3e2be7c941b26ac865fa00c3f314bcd1e6cec8 13-Jan-2011 Jim Grosbach <grosbach@apple.com> When updating a tSpill/tRestore instruction to be a tSTRr/tLDRr, correctly
set up the source operands. The original instr has an immediate operand that
should be replaced with the frame reg operand rather than just adding the
reg operand. Previously, the instruction ended up with too many operands
causing an assert() when adding the default predicate. rdar://8825456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123387 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
RMMCExpr.cpp
RMMCExpr.h
RMMCInstLower.cpp
smParser/ARMAsmParser.cpp
MakeLists.txt
fef9ff492206330ff0a5b94cec5ac1455b28df88 13-Jan-2011 Kevin Enderby <enderby@apple.com> Add a FIXME and two asserts for now in the ARMAsmParser when it sees .code 16 or
.code 32 if the TargetMachine's isThumb() boolean does not match. The correct
fix is to switch ARM subtargets at that point and is tracked by rdar://8856789
which is bigger task.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123353 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8a8696db6b6f6e735bb9de630876af83946b45f9 13-Jan-2011 Jason W Kim <jason.w.kim.2009@gmail.com> Change call to Error() to assert()



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123350 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8dc602d24590206571836f31b8fead56cb51318c 13-Jan-2011 Jason W Kim <jason.w.kim.2009@gmail.com> Added clarifying comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123341 91177308-0d34-0410-b5e6-96231b3b80d8
RMFixupKinds.h
650b7d76afbc7db2dd1a4590149d50a162bb25d8 13-Jan-2011 Jason W Kim <jason.w.kim.2009@gmail.com> JimG sez: "The value-kinds look like masks, but they're not consistently used
that way, unfortunately. If you want to change them to work additively instead
of a one-variant-kind-per-symbolref, that's great and I completely agree it's
worth doing, but it really should be a separate patch. Until then, this isn't
correct."

So I am reverting this bit until a more opportune time.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123340 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7caebff83d90a59aa74876ff887e822387f479e0 12-Jan-2011 Bill Wendling <isanbard@gmail.com> Sort the register list based on the *actual* register numbers rather than the
enum values we give to them. <rdar://problem/8823730>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123321 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5f8a917b6558f8fdf31b4a6fa591b396e16b9ff2 12-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Mostly undo r123297, but move the default case in EvaluateAsPCRel to the top
of the switch block to appease GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123317 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
e45f2dfde651c01aafa73e7708ebd76881427690 12-Jan-2011 Nick Lewycky <nicholas@mxc.ca> Add another note taken from the gcc bugzilla.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123315 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
676943b31aaa5c298a978b0acd7aa00015c22482 12-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Prefer llvm_unreachable to assert(0)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123297 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
86a97f2e4d0cde5e992f52ac287da0de687e0110 12-Jan-2011 Jason W Kim <jason.w.kim.2009@gmail.com> 1. Support ELF pcrel relocations for movw/movt:
R_ARM_MOVT_PREL and R_ARM_MOVW_PREL_NC.
2. Fix minor bug in ARMAsmPrinter - treat bitfield flag as a bitfield, not an enum.
3. Add support for 3 new elf section types (no-ops)




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123294 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
9081b4b4cf89a161246e037f4817c69de2fcdf82 12-Jan-2011 Jason W Kim <jason.w.kim.2009@gmail.com> Workaround for bug 8721.
.s Test added.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123292 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b72d2a92b75daa9cbac7338aff0cd8ae04c2b4bd 11-Jan-2011 Evan Cheng <evan.cheng@apple.com> Clean up ARM subtarget code by using Triple ADT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123276 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFrameLowering.cpp
RMHazardRecognizer.cpp
RMSubtarget.cpp
RMSubtarget.h
smParser/ARMAsmParser.cpp
eb9f3f91c03c29f020ee3c25cfefe7ae2b496526 11-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Fill in GetMnemonicAcceptInfo().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123253 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6c562f69fe7aa5550e7b6594ee4e861f767471b3 11-Jan-2011 Bob Wilson <bob.wilson@apple.com> Fix a comment: We now have intrinsics for vcvtr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123246 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
3771dd041f6a68bef08b6f685a41d1d54f4e8b9d 11-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Sketch some logic for determining when to add carry set and predication code operands based on the "canonical mnemonic".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123239 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
352e148cbe6498a6dd31b7fc71df7cd23c4b4d10 11-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Add more hard coded logic to SplitMnemonicAndCC to also split out the
carry setting flag from the mnemonic.

Note that this currently involves me disabling a number of working cases in
arm_instructions.s, this is a hopefully short term evil which will be rapidly
fixed (and greatly surpassed), assuming my current approach flies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123238 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
94bb7b561c16878ae442adeb13dd42140b55d027 11-Jan-2011 Eric Christopher <echristo@apple.com> Even if we don't have 7 bytes of stack space we may need to save and
restore the stack pointer from the frame pointer on thumbv6.

Fixes rdar://8819685


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123196 91177308-0d34-0410-b5e6-96231b3b80d8
humb1FrameLowering.cpp
4dd312f2334a215cfc7961518823ef36884b4c95 11-Jan-2011 Eric Christopher <echristo@apple.com> Expand on the safeness of restoring the sp from the fp a bit more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123193 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameLowering.cpp
8ab1112bdc30b8675bb12431d8b5b270da42f1b5 10-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Flush out hard coded known non-predicated mnemonic list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123189 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
238100aaa7952d754fe33c0b29423fd5f0044a04 10-Jan-2011 Daniel Dunbar <daniel@zuster.org> ARM/MC: Mark several '...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@123176 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6a5c22ed89c8bb73034a70105340acf6539dc58b 10-Jan-2011 Daniel Dunbar <daniel@zuster.org> MC/ARM/AsmParser: Minor nitty fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123175 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7af6fad0a73f33a6782166676d48073ce8565c47 10-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Update CMake stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123171 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
16c29b5f285f375be53dabaa73e3e91107485fe4 10-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes here and there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123170 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMExpandPseudoInsts.cpp
RMFrameInfo.cpp
RMFrameInfo.h
RMFrameLowering.cpp
RMFrameLowering.h
RMISelLowering.cpp
RMRegisterInfo.cpp
RMTargetMachine.cpp
RMTargetMachine.h
humb1FrameInfo.cpp
humb1FrameInfo.h
humb1FrameLowering.cpp
humb1FrameLowering.h
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
badbd2fde9b8debd6265e8ece511fb01123d1d5f 10-Jan-2011 Daniel Dunbar <daniel@zuster.org> MC/ARM/AsmParser: Split out SplitMnemonicAndCC().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123169 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c9df025e33ac435adb3b3318d237c36ca7cec659 10-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.

These functions not longer assert when passed 0, but simply return false instead.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123155 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
55d42003368c57d3a41c5f464d39b8440050d558 08-Jan-2011 Evan Cheng <evan.cheng@apple.com> Recognize inline asm 'rev /bin/bash, ' as a bswap intrinsic call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123048 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
c36b7069b42bece963b7e6adf020353ce990ef76 08-Jan-2011 Evan Cheng <evan.cheng@apple.com> Do not model all INLINEASM instructions as having unmodelled side effects.
Instead encode llvm IR level property "HasSideEffects" in an operand (shared
with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check
the operand when the instruction is an INLINEASM.

This allows memory instructions to be moved around INLINEASM instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123044 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
70f85730b199839891166b2a0acff126d1cc7c12 08-Jan-2011 Bob Wilson <bob.wilson@apple.com> Add an explanatory message for an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123042 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
697970286ac61ff5bf4659d51a2cf9e0a2b7800d 07-Jan-2011 Matt Beaumont-Gay <matthewbg@google.com> Eliminate variable only used in debug builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123040 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
11a1dfffc8b6bbe0c0936c2c70681bc74bb5cd56 07-Jan-2011 Bob Wilson <bob.wilson@apple.com> Lower some BUILD_VECTORS using VEXT+shuffle.
Patch by Tim Northover.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123035 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
5e8b833707e6d59576d91b23a2c24e596eace60e 07-Jan-2011 Bob Wilson <bob.wilson@apple.com> Add ARM patterns to match EXTRACT_SUBVECTOR nodes.
Also fix an off-by-one in SelectionDAGBuilder that was preventing shuffle
vectors from being translated to EXTRACT_SUBVECTOR.
Patch by Tim Northover.

The test changes are needed to keep those spill-q tests from testing aligned
spills and restores. If the only aligned stack objects are spill slots, we
no longer realign the stack frame. Prior to this patch, an EXTRACT_SUBVECTOR
was legalized by loading from the stack, which created an aligned frame index.
Now, however, there is nothing except the spill slot in the stack frame, so
I added an aligned alloca.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122995 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
6819dbb6f86f519130edf22ac3a30fa53b01fa45 06-Jan-2011 Bob Wilson <bob.wilson@apple.com> PR8921: LDM/POP do not support interworking prior to v5t.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122970 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
RMLoadStoreOptimizer.cpp
28f1015e3665cae34fc8337ec8e03ad903d30a33 06-Jan-2011 Bob Wilson <bob.wilson@apple.com> Remove extra whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122969 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
0fef58465cb3a54922b65da01b69bec98f43e36f 06-Jan-2011 Bob Wilson <bob.wilson@apple.com> Fix comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122968 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0521928ae7cc492f3f45ef0e0cedc349102489c5 06-Jan-2011 Evan Cheng <evan.cheng@apple.com> Re-implement r122936 with proper target hooks. Now getMaxStoresPerMemcpy
etc. takes an option OptSize. If OptSize is true, it would return
the inline limit for functions with attribute OptSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122952 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
54c6d6f42d096f8144ac636ec6ae0d3362ead43e 05-Jan-2011 Chris Lattner <sabre@nondot.org> fix some -Wself-assign warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122893 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6018deefe823598a3bbe03de9af354d269ae2130 04-Jan-2011 Andrew Trick <atrick@apple.com> Fix the ARM IIC_iCMPsi itinerary and add an important assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122794 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
RMSubtarget.cpp
2c502f915f52aab994fce7d3e78d1d021321d7a5 04-Jan-2011 Bill Wendling <isanbard@gmail.com> Formatting changes. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122789 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
4d7286083537833880901953d29786cf831affc4 01-Jan-2011 Anton Korobeynikov <asl@math.spbu.ru> Model operand restrictions of mul-like instructions on ARMv5 via
earlyclobber stuff. This should fix PRs 2313 and 8157.

Unfortunately, no testcase, since it'd be dependent on register
assignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122663 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMAsmPrinter.h
RMISelDAGToDAG.cpp
RMInstrInfo.td
7d63a2c2e8da75eeb2d36dd93adf33f7658d0083 29-Dec-2010 NAKAMURA Takumi <geek4civic@gmail.com> CMake: Add disabling optimization on MSVC8 and MSVC10 as workaround for some files in Target/ARM and Target/X86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122623 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
isassembler/CMakeLists.txt
2da8bc8a5f7705ac131184cd247f48500da0d74e 24-Dec-2010 Andrew Trick <atrick@apple.com> Various bits of framework needed for precise machine-level selection
DAG scheduling during isel. Most new functionality is currently
guarded by -enable-sched-cycles and -enable-sched-hazard.

Added InstrItineraryData::IssueWidth field, currently derived from
ARM itineraries, but could be initialized differently on other targets.

Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is
active, and if so how many cycles of state it holds.

Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry
into the scheduler's available queue.

ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to
get information about it's SUnits, provides RecedeCycle for bottom-up
scheduling, correctly computes scoreboard depth, tracks IssueCount, and
considers potential stall cycles when checking for hazards.

ScheduleDAGRRList now models machine cycles and hazards (under
flags). It tracks MinAvailableCycle, drives the hazard recognizer and
priority queue's ready filter, manages a new PendingQueue, properly
accounts for stall cycles, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122541 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMHazardRecognizer.cpp
RMHazardRecognizer.h
RMSubtarget.cpp
RMSubtarget.h
6e8f4c404825b79f9b9176483653f1aa927dfbde 24-Dec-2010 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122539 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMSubtarget.cpp
RMSubtarget.h
f12eee75d1f8a3e276d03cc0fda95d18097fb08e 24-Dec-2010 Jim Grosbach <grosbach@apple.com> Use a StringSwitch<> instead of a manually constructed string matcher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122530 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
b0ad9cf935b0fff60ea2bc43cb944255f1bad61a 24-Dec-2010 Jim Grosbach <grosbach@apple.com> Remove dead patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122524 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
940c8e5494c17529f96f5e1915ad89e488bdd69e 24-Dec-2010 Jim Grosbach <grosbach@apple.com> Recognize a few more documented register name aliases for ARM in the asm lexer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122523 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
3c904694fc769ce9e12455b43b94144a99325110 23-Dec-2010 Bob Wilson <bob.wilson@apple.com> Radar 8803471: Fix expansion of ARM BCCi64 pseudo instructions.
If the basic block containing the BCCi64 (or BCCZi64) instruction ends with
an unconditional branch, that branch needs to be deleted before appending
the expansion of the BCCi64 to the end of the block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122521 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
036609bd7d42ed1f57865969e059eb7d1eb6c392 23-Dec-2010 Chris Lattner <sabre@nondot.org> Flag -> Glue, the ongoing saga


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122513 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
9584bd83e6042484da11ab592c9b1eb04c61b014 23-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122456 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
316009054ef25fd12f95d97ac9282dede2392e1a 21-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add ARM-specific DAG combining to cast i64 vector element load/stores to f64.
Type legalization splits up i64 values into pairs of i32 values, which leads
to poor quality code when inserting or extracting i64 vector elements.
If the vector element is loaded or stored, it can be treated as an f64 value
and loaded or stored directly from a VPR register. Use the pre-legalization
DAG combiner to cast those vector elements to f64 types so that the type
legalizer won't mess them up. Radar 8755338.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122319 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c19aadb8b0219462ff55f4bdc8106cebc1245bb6 21-Dec-2010 Eric Christopher <echristo@apple.com> Arm and thumb call instructions are also in different orders.

Fixes rdar://8782223


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122313 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f1b4eafbfec976f939ec0ea3e8acf91cef5363e3 21-Dec-2010 Chris Lattner <sabre@nondot.org> rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for
something that just glues two nodes together, even if it is
sometimes used for flags.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122310 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
6e90ce21cc2b0627ee9219e3fb0cf808f2b73328 21-Dec-2010 Eric Christopher <echristo@apple.com> If we're not using reg+reg offset we're using reg+imm, set the opcode
to be the one we want to use. bugpoint reduced testcase is a little large,
I'll see if I can simplify it down more.

Fixes part of rdar://8782207


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122307 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
a519d577251c2a1207b466a4659d9eff37a989e1 21-Dec-2010 Bill Wendling <isanbard@gmail.com> Fix a copy-pasto. When the tBR_JTr instruction was converted to using the
tPseudoInst class, its size was changed from "special" to "2 bytes". This is
incorrect because the jump table will no longer be taken into account when
calculating branch offsets.
<rdar://problem/8782216>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122303 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
9a4d2e40a02b6e5fab5ccf1c768a52c76f3aec6a 21-Dec-2010 Bill Wendling <isanbard@gmail.com> Comment cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122302 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1ec5bd31fe491e610839ea448bd99fd171785837 18-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the MCObjectFormat class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122147 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
bff66a86e6e44dc7424cd2d7719ac80630b3a5f8 18-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Move some data to the TargetWriter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122134 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a68a4fdf37676794ce69624d1fd4e4627c377902 18-Dec-2010 Bill Wendling <isanbard@gmail.com> r120333 changed the opcode for the Thumb1 stuff from ARM::tMOVr to
ARM::tMOVgpr2gpr. But this check didn't change. As a result, we were getting
misaligned references to the jump table from an ADR instruction.

There is a test case, but unfortunately it's sensitive to random code changes.

<rdar://problem/8782223>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122131 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
cd080249fc249a51d8b0021a651d8b9d4a4977e0 18-Dec-2010 Bill Wendling <isanbard@gmail.com> RemoveUnusedCPEntries can change things. Track it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122129 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
094dd80ecc6758543f088539a96ea9fad8ad858a 18-Dec-2010 Bob Wilson <bob.wilson@apple.com> Rearrange some Neon multiclasses. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122119 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3deb45149a2eaecfc9453db2a7e840531b930cc6 18-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix result type of Neon floating-point comparisons against zero.
The result vector elements are always integers. Radar 8782191.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122112 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3a75b9bc8fed6c7f3f30470d3f3e28ac83df9d40 18-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add some missing entries in ARMTargetLowering::getTargetNodeName.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122111 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
976ef86689ed065361a748f81c44ca3510af2202 18-Dec-2010 Bill Wendling <isanbard@gmail.com> During local stack slot allocation, the materializeFrameBaseRegister function
may be called. If the entry block is empty, the insertion point iterator will be
the "end()" value. Calling ->getParent() on it (among others) causes problems.

Modify materializeFrameBaseRegister to take the machine basic block and insert
the frame base register at the beginning of that block. (It's very similar to
what the code does all ready. The only difference is that it will always insert
at the beginning of the entry block instead of after a previous materialization
of the frame base register. I doubt that that matters here.)

<rdar://problem/8782198>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122104 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
9bb43e167576d464637c480eccc5696e01e1887c 18-Dec-2010 Bob Wilson <bob.wilson@apple.com> Avoid report_fatal_error in ARM's PrintAsmOperand method.
The standard error handling in AsmPrinter::EmitInlineAsm handles this much
better, so just use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122100 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a3dbd3a2444f2531763ba05b64a30932542a631f 17-Dec-2010 Jim Grosbach <grosbach@apple.com> If The ARM WriteNopData() gets an unaligned byte count to pad out, fill in with
a partial value. rdar://8782954

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122078 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
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
RMInstrThumb2.td
6ec6eeb692fa11b569af8b69b2bb11cc84f04926 17-Dec-2010 Jim Grosbach <grosbach@apple.com> Handle 2 and 4 byte data blob fixup values for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122075 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
6024c97ffa15766bc0f200ffd309d9e017ae0d4b 17-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Stub out explicit MCELFObjectTargetWriter interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122067 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
285b3e5b61af15f11e59a7700375aefa2a326bd8 17-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Move createELFObjectWriter to its own header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122064 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
1139d5090ab96e24342f12a6a6817d5898358e1e 17-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Use aggressive symbol folding (important for jump tables, for example).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122044 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
7b62afac0a6f967e7466e60ceb26bfdcff2e59f4 17-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/Target: Remove HasScatteredSymbols target hook variable, which has been
superceded and was effectively dead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122024 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a1f544b62e5d9eae0311dfb3a0b0e72f25e041d4 17-Dec-2010 Bob Wilson <bob.wilson@apple.com> Use PairDRegs to implement ConcatVectors. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122017 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3efad8fad41f6ba8141befcc3fc6662246b663ad 16-Dec-2010 Jim Grosbach <grosbach@apple.com> Pseudo-ize the Thumb1 tBfar pattern. rdar://8777974

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121990 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrThumb.td
5d05d9769ec98cdee359fd934a56c9455e21232b 16-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Lift some MachObjectWriter arguments into the target specific

interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121981 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
ae5abd595f5442767313a4c8a24008ad19323ceb 16-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Stub out explicit MCMachObjectTargetWriter interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121973 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
aa4b7dd13ba83152473950d7014a29686dc7eef6 16-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Move createMachObjectWriter into MCMachObjectWriter.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121971 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
2761fc427082215c2affcc9d8db8491400bc9e5d 16-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC: Move target specific fixup info descriptors to TargetAsmBackend instead of
the MCCodeEmitter, which seems like a better organization.
- Also, cleaned up some magic constants while in the area.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121953 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
656b3d22f70c2d1c8a5286f7270cb380df862565 16-Dec-2010 Matt Beaumont-Gay <matthewbg@google.com> Delete an extra "Imm5 = ", caught by GCC's -Wsequence-point but not by Clang
(see PR4579).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121939 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
6baf46dbeab86dd7a35a9737bbdc5c67bee0bf69 16-Dec-2010 Bill Wendling <isanbard@gmail.com> Remove fixup_arm_thumb_ldst. The code was never calling the "fixup" stuff for
it. I.e., it was always an immediate value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121932 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
5a54516adf2b15fa337445d327ec3ad9bd1e3648 16-Dec-2010 Bill Wendling <isanbard@gmail.com> Add tSpill and tRestore to the opcodes to replace with tSTRi and tLDRi
respectively.

It may be a bug that these opcodes are getting this far into machine code
generation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121931 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
dedec2b89dd05891d0e22093887b190462d5b82a 16-Dec-2010 Bill Wendling <isanbard@gmail.com> Add encodings for Thumb1 Spill and Restore pseudos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121929 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
3e333637f172c30adf5c8333b592fbde17ff9f78 16-Dec-2010 Jim Grosbach <grosbach@apple.com> Thumb1 had two patterns for the same load-from-constant-pool instruction.
Canonicalize on tLDRpci and remove tLDRcp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121920 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrThumb.td
humb1RegisterInfo.cpp
836c6245ad7e8f2b9f72c2a9e4cb1df101eaf2c7 16-Dec-2010 Eric Christopher <echristo@apple.com> Don't handle -arm-long-calls in fast isel for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121919 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
7a905a82f7425d1a10b828c8bb3365b2ebc15833 16-Dec-2010 Bill Wendling <isanbard@gmail.com> If we're changing the frame register to a physical register other than SP, we
need to use tLDRi and tSTRi instead of tLDRspi and tSTRspi respectively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121915 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
humb1RegisterInfo.cpp
dc3813750e4400a02099b047c3ebe5a182585ac3 16-Dec-2010 Bill Wendling <isanbard@gmail.com> Whitespace cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121914 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0406356cd4cb7b689e2472faa8dfb7d721f9d274 15-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add Neon VCVT instructions for f32 <-> f16 conversions.
Clang is now providing intrinsics for these and so we need to support them
in the backend. Radar 8068427.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121902 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrInfo.td
RMInstrNEON.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
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.td
47dbd429daefa9b3f19347194ddfb6f69642465e 15-Dec-2010 Owen Anderson <resistor@mac.com> Implement cleanups suggested by Daniel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121875 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
22447ae54bcb8ca94ed994cad103074a24e66781 15-Dec-2010 Bill Wendling <isanbard@gmail.com> Add fixups for Thumb LDR/STR instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121858 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
bc4224bc6bc078b249b030c54f532215f61935c5 15-Dec-2010 Bill Wendling <isanbard@gmail.com> Reapply r121808 now that the missing patterns have been supplied.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121820 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
415af3452ea85f544761f8947426e4431706a165 15-Dec-2010 Bill Wendling <isanbard@gmail.com> Add some missing patterns now that tLDRB and tLDRH are split into reg and
immediate versions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121819 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7d1d8db54a8257bc6d954ff73f35171d757beafc 15-Dec-2010 Bill Wendling <isanbard@gmail.com> Revert r121808 until I can fix the build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121815 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9d04dc52a5848a3311e08e65e0e10a07864e5e57 15-Dec-2010 Jim Grosbach <grosbach@apple.com> thumb adr fixup needs alignment just like the t2 version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121812 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
345cdb647506c36caa5efa48143a3c2dd4f62c65 15-Dec-2010 Bill Wendling <isanbard@gmail.com> Comments and cleaning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121809 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
2af0fd3fee1f65f11ff6ca003c51ac9c640328a4 15-Dec-2010 Bill Wendling <isanbard@gmail.com> Make the ISel selections for LDR/STR the same as before the LDRr/LDRi split. In
particular, we want

ldr r2, [r3]

to be equivalent to

ldr r2, [r3, #0]

and not

ldr r2, [r3, r0]



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121808 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d40963c4065432ec7e47879d3ca665a54ee903b6 14-Dec-2010 Jim Grosbach <grosbach@apple.com> Add support for MC-ized encoding of tLEApcrel and tLEApcrelJT. rdar://8755755

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121798 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
ee2b350d835231aaf96e4b83dca48326b20dcc42 14-Dec-2010 Bill Wendling <isanbard@gmail.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121797 91177308-0d34-0410-b5e6-96231b3b80d8
RMFixupKinds.h
b6faf6521543186e6cd305594f60841b7ae66cfe 14-Dec-2010 Bill Wendling <isanbard@gmail.com> Multiclassify the LDR/STR encoding patterns. The only functionality difference
is the addition of the FoldableAsLoad & Rematerializable flags to some of the
load instructions. ARM has these flags set for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121794 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
8d6d7d6e30f3c90f92c5a12522d1500ca92299bf 14-Dec-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121792 91177308-0d34-0410-b5e6-96231b3b80d8
RMFixupKinds.h
40edf73a62bf025eba4391e806fb1ddada662355 14-Dec-2010 Jim Grosbach <grosbach@apple.com> Refactor a bit for legibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121790 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
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
RMInstrThumb2.td
eb61272150574ab6f51c9c84db119b53b92bb4df 14-Dec-2010 Jim Grosbach <grosbach@apple.com> Make sure to propagate the predicate operands for LEApcrel to ADR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121788 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
86abd48fd01080f08eec1b46f92c90308b03bfd4 14-Dec-2010 Owen Anderson <resistor@mac.com> Fix a small bug (typo?) in the fixup for Thumb1 CBZ/CBNZ instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121784 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
abfbac52df836460392186a61619fe266b40fa8c 14-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Fix-up fixup offset for fixup_arm_branch target specific fixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121772 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
e8eb1ea6acd54538b42491b95d8fc6281d4b5710 14-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121769 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
971321bb70d3f0fc622bda75d876e5c7d2b33e56 14-Dec-2010 Bill Wendling <isanbard@gmail.com> Use the integer scheduling intrinsic for integer loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121765 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
f4caf69720d807573c50d41aa06bcec1c99bdbbd 14-Dec-2010 Bill Wendling <isanbard@gmail.com> The tLDR et al instructions were emitting either a reg/reg or reg/imm
instruction based on the t_addrmode_s# mode and what it returned. There is some
obvious badness to this. In particular, it's hard to do MC-encoding when the
instruction may change out from underneath you after the t_addrmode_s# variable
is finally resolved.

The solution is to revert a long-ago change that merged the reg/reg and reg/imm
versions. There is the addition of several new addressing modes. They no longer
have extraneous operands associated with them. I.e., if it's reg/reg we don't
have to have a dummy zero immediate tacked on to the SDNode.

There are some obvious cleanups here, which will happen shortly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121747 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrThumb.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
0c1aec18911f2a67fb37b6593d08f4f8cb7e18ef 14-Dec-2010 Evan Cheng <evan.cheng@apple.com> bfi A, (and B, C1), C2) -> bfi A, B, C2 iff C1 & C2 == C1. rdar://8458663

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121746 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb2.td
RMMCCodeEmitter.cpp
4711d5cda37fc4a756f83fc1090e85ec9302c52f 14-Dec-2010 Bob Wilson <bob.wilson@apple.com> Remove the rest of the *_sfp Neon instruction patterns.
Use the same COPY_TO_REGCLASS approach as for the 2-register *_sfp instructions.
This change made a big difference in the code generated for the
CodeGen/Thumb2/cross-rc-coalescing-2.ll test: The coalescer is still doing
a fine job, but some instructions that were previously moved outside the loop
are not moved now. It's using fewer VFP registers now, which is generally
a good thing, so I think the estimates for register pressure changed and that
affected the LICM behavior. Since that isn't obviously wrong, I've just
changed the test file. This completes the work for Radar 8711675.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121730 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
0e6d540d1745ea00042ca6d56d6e5929e7c8e5ca 14-Dec-2010 Bob Wilson <bob.wilson@apple.com> Simplify N2VSPat, removing some unnecessary type arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121729 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFixupKinds.h
RMInstrThumb2.td
RMMCCodeEmitter.cpp
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
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMFixupKinds.h
RMInstrThumb2.td
RMMCCodeEmitter.cpp
4dedddce93ffb4476fb269caddb10da60a0a8d84 13-Dec-2010 Bob Wilson <bob.wilson@apple.com> Delete a line that I forgot to revert previously.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121719 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1e6f59608bf5becb3c560dd5c38c7b37c0edcbdb 13-Dec-2010 Bob Wilson <bob.wilson@apple.com> Use COPY_TO_REGCLASS instead of pseudo instructions for Neon FP patterns.
Jakob Olesen suggested that we can avoid the need for separate pseudo
instructions here by using COPY_TO_REGCLASS in the patterns. The pattern
gets pretty ugly but it seems to work well. Partial fix for Radar 8711675.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121718 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
3a6756cb1c87908f5d04660b6ed7d464b56f78f6 13-Dec-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for 2-register Neon instructions for scalar FP.
Partial fix for Radar 8711675.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121716 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
6dbcea1f8e557a5374714338f9b5116ae139ef32 13-Dec-2010 Bob Wilson <bob.wilson@apple.com> Remove unused instruction class arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121715 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
30fb13f97a197823f66da4df98625a9b3585ece9 13-Dec-2010 Evan Cheng <evan.cheng@apple.com> Generalize BFI isel lowering a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121714 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
56a2535474dd4482c432b3c75c3dab4b2f3dd1e2 13-Dec-2010 Jim Grosbach <grosbach@apple.com> Use 32-bit types for 32-bit values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121709 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
7e294cfcf97cd7b94bf5c4de0f214480ec13adad 13-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121708 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a9688c4b5769be7a6a89350888b3173c97fe87ed 11-Dec-2010 Evan Cheng <evan.cheng@apple.com> (or (and (shl A, #shamt), mask), B) => ARMbfi B, A, ~mask where lsb(mask) == #shamt. rdar://8752056

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121606 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
092e2cd5693114a4f1d93eb5b72f3e194de27236 11-Dec-2010 Jim Grosbach <grosbach@apple.com> Add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121598 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
63ee22065dc4e8af7f4bf99c25b82da132700267 11-Dec-2010 Owen Anderson <resistor@mac.com> Attempt to get Thumb2 branch fixups working properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121593 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
5fd873d8e83e485aef79c1f5fa1704748500ca8b 10-Dec-2010 Owen Anderson <resistor@mac.com> Fix merge error in my last fix to Thumb2 vldr fixups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121588 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
e2e0f58809374265bd75edeefae8817e7ade62b4 10-Dec-2010 Owen Anderson <resistor@mac.com> Fixups for Thumb2 vldr's need to have the effective PC aligned as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121587 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
1591b293d6b31ae52a7d5ec16b8117d033204f44 10-Dec-2010 Bill Wendling <isanbard@gmail.com> The MCFixupKindInfo table needs to be in the order that the enums were
declared. Add a note specifying this and spruce up the list a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121586 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
ac00e9627388e31a5704bc3e3430ffd0631bb1fe 10-Dec-2010 Owen Anderson <resistor@mac.com> Provide the necessary post-encoder hook for Thumb2 encodings of VMOV and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121585 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
746fa17d59000be7f642a0b6c5223f29c5e10f00 10-Dec-2010 Bob Wilson <bob.wilson@apple.com> Add float patterns for Neon vld1-lane/dup and vst1-lane operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121583 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
20d5515aa503ef0cfe1fa8545c18c3b4d3f4473b 10-Dec-2010 Bob Wilson <bob.wilson@apple.com> Remove unused arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121582 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0f4b60d43a289671082deee3bd56a3a055afb16a 10-Dec-2010 Owen Anderson <resistor@mac.com> Fix encoding of Thumb1 LDRB and STRB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121581 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrThumb.td
RMMCCodeEmitter.cpp
7bf4c02789f97e32225fc248dff6622b994a15ee 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121580 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
90cc533fda9742f5c67203f97e69e5efd270c676 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Fix encoding of 'U' bit for Thumb2 STRD/LDRD instructions. rdar://8755726

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121524 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
04da9bf9f133a3e5233d10885a38e1d14199549c 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121522 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a79bd0e1e0df2358bd8d1d1d5bf30bdfc0141f67 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121521 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a92bac64cb75853c65a6146e015c2bf60c710869 10-Dec-2010 Bob Wilson <bob.wilson@apple.com> Fix some invalid alignments for Neon vld-dup and vld/st-lane instructions.
Alignments smaller than the total size of the memory being loaded or stored,
unless the alignment is 8 bytes, are not allowed. Add tests for this, too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121506 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
568f528c997505706d3d02a31517338ef7dc2d17 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Teach isCSRestore() that ARM/Thumb2 functions will use post-modify LDR
instructions to restore a single register rather than an LDM instruction.
rdar://8754999

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121498 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
e246717c3a36a913fd4200776ed621649bb2b624 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Thumb unconditional branch binary encoding. rdar://8754994

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121496 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
01086451393ef33e82b6fad623989dd97dd70edf 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Thumb conditional branch binary encodings. rdar://8745367

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121493 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
44a9e8f869dd9d04a04eb556ff0ff4a1039d371f 10-Dec-2010 Kevin Enderby <enderby@apple.com> Fix the leak from r121401 of the Operands erased in the list but not deleted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121450 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
272df516d7a9b1f0f69174276abaa759816ee456 09-Dec-2010 Bill Wendling <isanbard@gmail.com> Thumb ldr reg+imm offsets were encoded incorrectly. The scaling factor of the
t_addrmode_s# address modes is used for ASM printing, not for encoding.
<rdar://problem/8745375>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121417 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrThumb.td
RMMCCodeEmitter.cpp
fe7fac74b4edaf9cc04460fc21aa949e5533aea2 09-Dec-2010 Owen Anderson <resistor@mac.com> Use the new IsAligned fixup flag to improve fixup encodings for Thumb2 branches. This is still not perfect,
but it gets many more of them correct than it did previously.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121414 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
05018c2f2872a05b1a2fff1a9934621ba1f38084 09-Dec-2010 Owen Anderson <resistor@mac.com> Fix an issue in some Thumb fixups, where the effective PC address needs to be 4-byte aligned when calculating
the offset. Add a new fixup flag to represent this, and use it for the one fixups that I have a testcase for needing
this. It's quite likely that the other Thumb fixups will need this too, and to have their fixup encoding logic
adjusted accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121408 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
b492a7c2134d3886f545f1b5ea55115d71529a10 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Rename CB/CBZ specific fixup accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121404 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
193c3acbe5cdb60767d114016970e898c7502d7a 09-Dec-2010 Kevin Enderby <enderby@apple.com> Add support for parsing ARM arithmetic instructions that update or don't update
the condition codes. Where the ones that do have an 's' suffix and the ones
that don't don't have the suffix. The trick is if MatchInstructionImpl() fails
we try again after adding a CCOut operand with the correct value and removing
the 's' if present. Four simple test cases added for now, lots more to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121401 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
027d6e8d1ca04e4096fb3a27579b861d861466c5 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Rename the encoder method for t_cbtarget to match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121399 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrThumb.td
RMMCCodeEmitter.cpp
cf6220a9de15d8a2a431f2672ebab3ffb0048c78 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Thumb needs a few different encoding schemes for branch targets. Rename
t_brtarget to be more specific.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121398 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c6f9261711ac6666db5d99715531a41c1b1d98ed 09-Dec-2010 Jim Grosbach <grosbach@apple.com> ARM stm/ldm instructions require more than one register in the register list.
Otherwise, a plain str/ldr should be used instead. Make sure we account for
that in prologue/epilogue code generation.
rdar://8745460

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121391 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
RMFrameInfo.h
bfd0daa6a67f838679d09c9a80df0dfa860fc255 09-Dec-2010 Jim Grosbach <grosbach@apple.com> tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121371 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
2a4f0986ac2d43cd20b78df9e0aded0e67151770 09-Dec-2010 Jim Grosbach <grosbach@apple.com> 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121370 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
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
RMInstrThumb2.td
1a48c032bd7c240fc4c52aee6dad57f8043a77d9 09-Dec-2010 Eric Christopher <echristo@apple.com> Fix up some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121351 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
d7b3f5870d9d04351d9cd363d9d6af01482a2eb8 09-Dec-2010 Owen Anderson <resistor@mac.com> Fix Thumb2 fixups for ldr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121350 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
766a63d20e89ad5a8b19aba2df0128c1f73174b3 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Add a textual message to the assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121349 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
9702e6075c3e4cd508fd787e3bf6b3e64eb029ab 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Add a sanity check assert() for t2ADD/SUBrSPi instructions that they really are
referencing the stack pointer as they say they are.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121347 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
cde31293d45f14ddff482d385429d256bd4e0820 09-Dec-2010 Jim Grosbach <grosbach@apple.com> When using multiple instructions to reference a frame index, make sure to
update the opcode when necessary as well as the source register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121346 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
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
RMInstrThumb2.td
0a29c270b53f15723811783c572d06b9500a7e8f 09-Dec-2010 Matt Beaumont-Gay <matthewbg@google.com> Remove unused variables


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121343 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
8f0794331765661f92cf074f638acb1ea927bb5d 09-Dec-2010 Owen Anderson <resistor@mac.com> Fix typo in Thumb2 branch fixup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121342 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
2fe813af23e682b418ecd477144fe070be325419 09-Dec-2010 Bill Wendling <isanbard@gmail.com> Remove extraneous semicolon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121338 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
797b7aab35d815a48f58ce7f7b0b8d0fe06c92af 09-Dec-2010 Bill Wendling <isanbard@gmail.com> Attempt to make the bit-twiddling readable resulted in the binary value being
overwritten.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121337 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
09aa3f0ef35d9241c92439d74b8d5e9a81d814c2 09-Dec-2010 Bill Wendling <isanbard@gmail.com> The BLX instruction is encoded differently than the BL, because why not? In
particular, the immediate has 20-bits of value instead of 21. And bit 0 is '0'
always. Going through the BL fixup encoding was trashing the "bit 0 is '0'"
invariant.

Attempt to get the encoding at slightly more correct with this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121336 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
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
RMAsmBackend.cpp
RMFixupKinds.h
RMInstrThumb2.td
RMMCCodeEmitter.cpp
045869c12ac5af2b1dd97a0dcbedab8db01fe765 09-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Style nit and whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121317 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
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
RMInstrThumb2.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
RMInstrThumb2.td
0062db8b4f388308f8838805f160259a48a2882e 09-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Removed dead comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121313 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
a0871e79270b2a05f93c9df73bbe24c587faa94e 09-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> ARM/MC/ELF TPsoft is now a proper pseudo inst.
Added test to check bl __aeabi_read_tp gets emitted properly for ELF/ASM
as well as ELF/OBJ (including fixup)

Also added support for ELF::R_ARM_TLS_IE32



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121312 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.td
dff2f7151f695b86db8c4b0c6604463bdb8a63ea 09-Dec-2010 Bill Wendling <isanbard@gmail.com> Support the "target" encodings for the CB[N]Z instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121308 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
5d9e0160256b7d5e19072f89006157ab6d28a698 09-Dec-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious cut-n-paste error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121307 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.td
0c2c217244573cdfb4be8b7fa62670412b4c1e71 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Tweak ARM fixup value adjustments for Thumb to better handle the half-word
ordering of thumb mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
6b1207267f01877ff9b351786c902cb2ecd354c0 08-Dec-2010 Andrew Trick <atrick@apple.com> Generalize PostRAHazardRecognizer so it can be used in any pass for
both forward and backward scheduling. Rename it to
ScoreboardHazardRecognizer (Scoreboard is one word). Remove integer
division from the scoreboard's critical path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121274 91177308-0d34-0410-b5e6-96231b3b80d8
RMHazardRecognizer.cpp
RMHazardRecognizer.h
cc78f5c09c451dd84ef5c4abdfcdadd4270a4942 08-Dec-2010 Owen Anderson <resistor@mac.com> Improve comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121272 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
022ab3779c4280f41daf8621257c41cb028c6efe 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Add initializer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121262 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
275bf631157ec5b2f0c29b3273f008f1bbbdc7f0 08-Dec-2010 Evan Cheng <evan.cheng@apple.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121238 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
b8958b031ec5163261f490f131780c5dc3d823d6 08-Dec-2010 Bill Wendling <isanbard@gmail.com> Add support for loading from a constant pool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121226 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
5be6d2af38c29e3653998978345220974cc40c01 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Let target asm backends see assembler flags as they go by. Use that to handle
thumb vs. arm mode differences in WriteNopData().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121219 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
255eafbd498e7d41ceef45ee0ad13bfde573ff82 08-Dec-2010 Owen Anderson <resistor@mac.com> Simplify the byte reordering logic slightly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121216 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
d8e351b96f5fd7007fbdd636acaa1fc9f6e18f3c 08-Dec-2010 Owen Anderson <resistor@mac.com> VLDR fixups need special handling under Thumb. While the encoding is the same,
the order of the bytes in the data stream is flipped around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121215 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
2bf315f0871a65061d8fd9c867587cfe02adefc7 08-Dec-2010 Matt Beaumont-Gay <matthewbg@google.com> Fix a warning about a variable which is only used in an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121206 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
d832fa053b86f42a5bc1e55e979b61c1115a8053 08-Dec-2010 Bill Wendling <isanbard@gmail.com> Cleanup in the Darwin end. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121198 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
06d65f515638dc996a4ecaf2a9692475aa4b46e3 08-Dec-2010 Evan Cheng <evan.cheng@apple.com> Fix a bad prologue / epilogue codegen bug where the compiler would emit illegal
vpush instructions to save / restore VFP / NEON registers like this:
vpush {d8,d10,d11}
vpop {d8,d10,d11}

vpush and vpop do not allow gaps in the register list.
rdar://8728956


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121197 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
RMFrameInfo.h
52e635ea3512cfcd03587201b20100074e5b6ac9 08-Dec-2010 Bill Wendling <isanbard@gmail.com> A bit of cleanup: early exit ApplyFixup and cache the Fixup offset. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121195 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
d967cd096ae87accf2f1df86b2dfac969d9c9da2 07-Dec-2010 Jim Grosbach <grosbach@apple.com> Binary encoding for ARM tLDRspi and tSTRspi.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121186 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrThumb.td
RMMCCodeEmitter.cpp
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
RMInstrFormats.td
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
52f21e35e83d9c644aa40d557816ea647288c99d 07-Dec-2010 Evan Cheng <evan.cheng@apple.com> Code clean up; no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121176 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
9801b5c822bf475e859e3fe18b87dbb308b0e22c 07-Dec-2010 Evan Cheng <evan.cheng@apple.com> Code clean up; no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121172 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
5169220624b73c8792f06d91292ed8d57ec444f8 07-Dec-2010 Jim Grosbach <grosbach@apple.com> Encode the literal field for tCMPzi instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121153 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
6aa49435994c33257b7588cac24671785d17fa6e 07-Dec-2010 Benjamin Kramer <benny.kra@googlemail.com> Add parens to pacify gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121142 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
40f8f6264d5af2c38e797e0dc59827cd231e8ff7 07-Dec-2010 Jay Foad <jay.foad@gmail.com> PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121120 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMInstrThumb2.td
RMMCCodeEmitter.cpp
isassembler/ARMDisassembler.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
humb2SizeReduction.cpp
662a816e89a9d77bf75e1328b09cf9235b4682aa 07-Dec-2010 Jim Grosbach <grosbach@apple.com> Add fixup for Thumb1 BL/BLX instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121072 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrThumb.td
RMMCCodeEmitter.cpp
179821ac1f282ef6f8d24d5ea346028aee8ba4c7 06-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the instruction fragment to data fragment lowering since it was causing
freed data to be read. I will open a bug to track it being reenabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121028 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
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
RMExpandPseudoInsts.cpp
RMInstrThumb2.td
ba3368ceae8d3e3f1653de4aa24f168eae8f083b 06-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121024 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
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
RMExpandPseudoInsts.cpp
RMInstrThumb2.td
04f74942f2994a7c1d8e62c207c4005ed4652b6a 06-Dec-2010 Jim Grosbach <grosbach@apple.com> Encode the register operand of ARM CondCode operands correctly. ARM::CPSR if
the instruction is predicated, reg0 otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121020 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d67641b6f804110505a69aaed5479f446bbbb34e 06-Dec-2010 Jim Grosbach <grosbach@apple.com> The ARM AsmMatcher needs to know that the CCOut operand is a register value,
not an immediate. It stores either ARM::CPSR or reg0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121018 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
04e2b639c13a73ac91686d484628325ee536e9cc 06-Dec-2010 Evan Cheng <evan.cheng@apple.com> Eliminate unneeded #include's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120971 91177308-0d34-0410-b5e6-96231b3b80d8
LxExpansionPass.cpp
714e07f75dc5b08bec391a3c93cd2ba397911e09 06-Dec-2010 NAKAMURA Takumi <geek4civic@gmail.com> ARM/CMakeLists.txt: Add missing MLxExpansionPass.cpp since r120960.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120966 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
167be80ee7763c5939f2d73de2c15efd703931f7 06-Dec-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120965 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
f79ed109ec4ead50216bbed3d80d1ccd5ad94061 06-Dec-2010 Evan Cheng <evan.cheng@apple.com> Remove an unused variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120964 91177308-0d34-0410-b5e6-96231b3b80d8
LxExpansionPass.cpp
48575f6ea7d5cd21ab29ca370f58fcf9ca31400b 05-Dec-2010 Evan Cheng <evan.cheng@apple.com> Making use of VFP / NEON floating point multiply-accumulate / subtraction is
difficult on current ARM implementations for a few reasons.
1. Even though a single vmla has latency that is one cycle shorter than a pair
of vmul + vadd, a RAW hazard during the first (4? on Cortex-a8) can cause
additional pipeline stall. So it's frequently better to single codegen
vmul + vadd.
2. A vmla folowed by a vmul, vmadd, or vsub causes the second fp instruction to
stall for 4 cycles. We need to schedule them apart.
3. A vmla followed vmla is a special case. Obvious issuing back to back RAW
vmla + vmla is very bad. But this isn't ideal either:
vmul
vadd
vmla
Instead, we want to expand the second vmla:
vmla
vmul
vadd
Even with the 4 cycle vmul stall, the second sequence is still 2 cycles
faster.

Up to now, isel simply avoid codegen'ing fp vmla / vmls. This works well enough
but it isn't the optimial solution. This patch attempts to make it possible to
use vmla / vmls in cases where it is profitable.

A. Add missing isel predicates which cause vmla to be codegen'ed.
B. Make sure the fmul in (fadd (fmul)) has a single use. We don't want to
compute a fmul and a fmla.
C. Add additional isel checks for vmla, avoid cases where vmla is feeding into
fp instructions (except for the #3 exceptional case).
D. Add ARM hazard recognizer to model the vmla / vmls hazards.
E. Add a special pre-regalloc case to expand vmla / vmls when it's likely the
vmla / vmls will trigger one of the special hazards.

Work in progress, only A+B are enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120960 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RM.td
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMHazardRecognizer.cpp
RMHazardRecognizer.h
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
MakeLists.txt
LxExpansionPass.cpp
humb2HazardRecognizer.cpp
humb2HazardRecognizer.h
humb2InstrInfo.cpp
humb2InstrInfo.h
7389b98289f7fb09c1641e07044ff816a56f4eba 05-Dec-2010 Shih-wei Liao <sliao@google.com> Fix Android.mk's

Change-Id: I4de9583db7f8d47bdda444804aecaeb71c5dfcb8
isassembler/Android.mk
c24130bade8c348d0d437644b01ebdd3c65e6681 04-Dec-2010 Bob Wilson <bob.wilson@apple.com> The Thumb tADDrSPi instruction is not valid when the destination is SP.
Check for that and try narrowing it to tADDspi instead. Radar 8724703.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120892 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
ceab50198ee0d1aa2468d868111e3cf7c0c56ebd 04-Dec-2010 Jim Grosbach <grosbach@apple.com> Encode condition code for Thumb1 conditional branch instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120865 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
ed09087dd30c3150a228b14fb224a3491dd6af62 04-Dec-2010 Jim Grosbach <grosbach@apple.com> Correctly size-reduce the t2CMPzrr instruction to tCMPzr when possible.
tCMPzhir has undefined behavior when both source registers are low registers.
rdar://8728577

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120858 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
fb62d550de4e4f17072ac1dc76e7dfebe6ba0c05 04-Dec-2010 Bill Wendling <isanbard@gmail.com> Use correct variable names to match the patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120857 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
1b555d9f960e54e9e685585435daf63d89c88a56 04-Dec-2010 Jim Grosbach <grosbach@apple.com> Match pattern operand names to expected encoding field names. This corrects the
operand encoding ordering of the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120852 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
4fa102b84e6e0ec889e99ef7ab3c05885a3e4cb1 03-Dec-2010 Jim Grosbach <grosbach@apple.com> Remove incorrect BL target encoding (it's similar to, but not the same as the
ARM instruction). Add encoding of bits 13 and 11.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120849 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d91f4e40e6312304c60c83c3dd93f769a39a9772 03-Dec-2010 Jim Grosbach <grosbach@apple.com> Encode the 32-bit wide Thumb (and Thumb2) instructions with the high order
halfword being emitted to the stream first. rdar://8728174

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120848 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
41ad0c4c730bdbd4ec3a03868b81a56b6b1b01a1 03-Dec-2010 Jim Grosbach <grosbach@apple.com> When using the 'push' mnemonic for Thumb2 stmdb, be explicit when it's the
32-bit wide version by adding the .w suffix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120838 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
b3a04d46e8bb635727024a0ca9a8a0c4699f2080 03-Dec-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120836 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
6e572981270cd6485973f3d493e5403514206a57 03-Dec-2010 Jim Grosbach <grosbach@apple.com> Reduce t2 ldr/str instructions to the correct t1 versions when there's an
immediate offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120833 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
2ccf148fbaaf9ea15233d7ef09e31ca0fa6ee3be 03-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> fix ARM::fixup_arm_branch, cleanup, and share more code between ELF and Darwin

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120832 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
0b951ceb02c43c157022f284881da7d2f7daf58d 03-Dec-2010 Jim Grosbach <grosbach@apple.com> No need to declare EncoderMethod property anymore; just assign to it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120831 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d253545c17d5ed70fa134c02bfca9c3f85402473 03-Dec-2010 Jim Grosbach <grosbach@apple.com> Add FIXMEs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120824 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
2c971ab9d9a52b3402d708e9a83586f04116a6ac 03-Dec-2010 Jim Grosbach <grosbach@apple.com> Size reduction for tPUSH come from t2STMDB_UPD, not t2STMIA_UPD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120822 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
278b6e81c85a2c003282024656c11dab19900c4f 03-Dec-2010 Bill Wendling <isanbard@gmail.com> Don't overwrite the opcode passed into the T1Special pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120782 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
534a5e43051cc02c3139c03633189d916029096a 03-Dec-2010 Bill Wendling <isanbard@gmail.com> Add Thumb encoding for some more instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120780 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0bdf0c05b990b4f2d29719b34f4ce44f16176f09 03-Dec-2010 Bill Wendling <isanbard@gmail.com> The tLDR instruction wasn't encoded properly:

<MCInst 2251 <MCOperand Reg:70> <MCOperand Reg:66> <MCOperand Imm:0> <MCOperand Reg:0> <MCOperand Imm:14> <MCOperand Reg:0>>

Notice that the "reg" here is 0, which is an invalid register. Put a check in
the code for this to prevent crashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120766 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
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
RMInstrThumb2.td
1ab4b211ea5165445b791277507d58dcf1e46688 02-Dec-2010 Jim Grosbach <grosbach@apple.com> When expanding the MOVCCi32imm, make sure to use the ARM movt/movw opcodes,
not thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120711 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
ce4fadf884a63527942882be449d5ea75593740f 02-Dec-2010 Jim Grosbach <grosbach@apple.com> Fix copy/pasto in vmin.f32 encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120709 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
dff84b03258514463ede477af38f1246b95b0cd0 02-Dec-2010 Jim Grosbach <grosbach@apple.com> Add support for binary encoding of ARM 'adr' instructions referencing constant
pool entries (LEApcrel pseudo). Ongoing saga of rdar://8542291.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120635 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMFixupKinds.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
1bf891ae6e174ac92c1091be0c62891f4676beb8 01-Dec-2010 Evan Cheng <evan.cheng@apple.com> Fix and re-enable tail call optimization of expanded libcalls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120622 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0c628c2617a2c25cabea6d1cb8bd13b79b3cb15a 01-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> fixing style nit: move class static to global static

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120619 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
cf590263cd5c24ccf1d08cef612738d99cd980d9 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Add a post encoder method to the VFP instructions to convert them to the Thumb2
encoding if we're in that mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120608 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
5177f79c378b47e38bed5ac05ba4b597f31b864e 01-Dec-2010 Jim Grosbach <grosbach@apple.com> Use the correct fixup type for ARM VLDR*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120604 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
5d14f9be7ba64162c7b996f36d419b11d8cdbe9a 01-Dec-2010 Jim Grosbach <grosbach@apple.com> Refactor LEApcrelJT as a pseudo-instructionlowered to a cannonical ADR
instruction at MC lowering. Add binary encoding information for the ADR,
including fixup data for the label operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120594 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
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
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrFormats.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
isassembler/ARMDisassembler.cpp
1920d82f75c365a72e0925fb6d4e6977ffb888c9 01-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> kill trailing space

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120586 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
3990d8f89f130f200b367be2248dbf6a6a16e8e9 01-Dec-2010 Jim Grosbach <grosbach@apple.com> 10 bits, not 12.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120584 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMFixupKinds.h
RMMCCodeEmitter.cpp
887c0e4cbf7c80f0b6e0cdc3b18bad54c30b9d30 01-Dec-2010 Jim Grosbach <grosbach@apple.com> Elaborate on FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120552 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
baf120fbe8056ef68fc91b16465590fdf2311c27 01-Dec-2010 Jim Grosbach <grosbach@apple.com> Move the ARMAsmPrinter class defintiion into a header file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120551 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMAsmPrinter.h
RMMCInstLower.cpp
ff25116a097230f6fff309a73a9b0610631282a6 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Remove "comparison of integers of different signs" warning by making the
variable unsigned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120541 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
43f7b2d3703987fe964985846f8a6829a66b5d69 01-Dec-2010 Bill Wendling <isanbard@gmail.com> General cleanups of comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120536 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
85fed5e0c5bc010f967948a4af6b425a5a2f2bd0 01-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> ARM/MC/ELF relocation "hello world" for movw/movt.
Lifted adjustFixupValue() from Darwin for sharing w ELF.
Test added
TODO:
refactor ELFObjectWriter::RecordRelocation more.
Possibly share more code with Darwin?
Lots more relocations...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120534 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
0480e28fb2a7d4e140d56c39e9705c922456585c 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Formatting. It's all the rage!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120533 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
1d045ee8841a08df534b4f1c3053a49d0c15d8d2 01-Dec-2010 Bill Wendling <isanbard@gmail.com> More refactoring. This time the T1pI pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120532 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
564857f776084a85b6b4bf0c896fd60c69d0c521 01-Dec-2010 Eric Christopher <echristo@apple.com> Refactor load/store handling again. Simplify and make some room for
reg+reg handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120526 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a63bf704b4ebdc109f1514bed82fdad7ad3eb70b 01-Dec-2010 Jan Wen Voung <jvoung@google.com> Initialize an ARMConstantPoolValue field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120525 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
40062fb7479487e3bd44944b2be0b055b9ea6269 01-Dec-2010 Bill Wendling <isanbard@gmail.com> s/T1pIEncode/T1pILdStEncode/g
s/T1pIEncodeImm/T1pILdStEncodeImm/g


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120524 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
0b424dc6b734fc5538887d1ebbd843c3a8d3d49d 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Renaming variables to coincide with documentation. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120522 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
76f4e1038878e1944bb3e32e8183ce8b973bc61b 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Refactor T1sI and T1sIt encodings into helper classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120518 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
a5a42d9b3cd4bae306c2b67ede512420f70dadb3 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Refactor the T1sIt encodings into a parent class to get rid of all of the "let"
statements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120512 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
ca6945e5e2ead38c99a76d69a4649965caf52eca 01-Dec-2010 Owen Anderson <resistor@mac.com> Use by-name rather than by-order matching for NEON operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120507 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3d2125c9dbac695c93f42c0f59fd040e413fd711 01-Dec-2010 Evan Cheng <evan.cheng@apple.com> Enable sibling call optimization of libcalls which are expanded during
legalization time. Since at legalization time there is no mapping from
SDNode back to the corresponding LLVM instruction and the return
SDNode is target specific, this requires a target hook to check for
eligibility. Only x86 and ARM support this form of sibcall optimization
right now.
rdar://8707777


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120501 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
3f8c110dc643847363686d543a56c23c41353ab0 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Rename operands to match ARM documentation. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120500 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
b0708d292bbe04cfcfe0c5cb5e27d8a872c9839a 01-Dec-2010 Jim Grosbach <grosbach@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120499 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
d309b413a5a246e006a63f61aa9052effd8b4c7e 01-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120497 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
61db62990b4bae51c5434b1a494a7ee30fd2af26 01-Dec-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Thanks to JimG for catching this!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120494 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
2cbc9fe83741f9239aaf99c5b71bf3635f9af9da 01-Dec-2010 Bill Wendling <isanbard@gmail.com> Inline classes that were used in only one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120488 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
1fd374e9c1c074c1681336bef31e65f0170b0f7e 30-Nov-2010 Bill Wendling <isanbard@gmail.com> * Add support for encoding t_addrmode_s2 and t_addrmode_s1. They are the same as
t_addrmode_s4, but with a different scaling factor.

* Encode the Thumb1 load and store instructions. This involved a bit of
refactoring (hi, Chris! :-). Some of the patterns became dead afterwards and
were removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120482 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrThumb.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
RMMCCodeEmitter.cpp
isassembler/ARMDisassembler.cpp
isassembler/ThumbDisassemblerCore.h
97dd28fb89dc4c4caa3c60890335dc99489981a6 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix handling of ARM negative pc-relative fixups for loads and stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120480 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
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
RMInstrThumb2.td
c02ba66d4140ff18b3b93b237fccfc0903213225 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120451 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMCodeEmitter.cpp
RMInstrThumb2.td
RMMCCodeEmitter.cpp
06a86da3238d9f2234cb7eb7ca6bdc73b65bc408 30-Nov-2010 Eric Christopher <echristo@apple.com> Noticed this on inspection, fix and update some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120447 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2e812e1635422d0ec71cb4bda3f4d654857913f1 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Pseudo-ize ARM MOVPCRX

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120442 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.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
RMInstrThumb2.td
a0d2c8a40f890345237abfa9cece16c517e1e280 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Pseudo-ize BX_CALL and friends. Remove dead instruction format classes.
rdar://8685712

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120438 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrFormats.td
RMInstrInfo.td
ef4a68badbde372faac9ca47efb9001def57a43d 30-Nov-2010 Bill Wendling <isanbard@gmail.com> Add parsing for the Thumb t_addrmode_s4 addressing mode. This can almost
certainly be made more generic. But it does allow us to parse something like:

ldr r3, [r2, r4]

correctly in Thumb mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120408 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrThumb.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
0e45a5a9016ce36675409fb358c3e801b7a1d12d 30-Nov-2010 Bill Wendling <isanbard@gmail.com> Minor cleanups. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120372 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
6e46d84eea97792a66c0bb64f26aad3976a23365 30-Nov-2010 Bill Wendling <isanbard@gmail.com> s/ARM::BRIND/ARM::BX/g to coincide with r120366.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120371 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.h
isassembler/ARMDisassemblerCore.cpp
647fea57fd56b7c0e24f98e01f2a70fd265cc461 30-Nov-2010 Bill Wendling <isanbard@gmail.com> Add correct encoding for "bl __aeabi_read_tp". However, the asm matcher isn't
able to match this yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120369 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
532c2f1d503a42c5e8e0c5c9a513c459fed73d25 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Rename BX/BRIND/etc patterns to clarify which is actually the BX instruction
and which are pseudos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120366 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
67077419c63d7714f8254cca12489e7a13e8684f 30-Nov-2010 Bill Wendling <isanbard@gmail.com> Add some encoding for the adr instruction. Labels still need to be finished.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120365 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
5c86a0a2b5005a37c791c75882b5b3185c61ecb1 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Make a few more ARM pseudo instructions actually use the PseudoInst base class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120362 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8ca2fd6665dd9ba5d527fb4c78de4861842e2411 30-Nov-2010 Bill Wendling <isanbard@gmail.com> Predicate encoding should be withing {}s. And general cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120361 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
194271a76e5b41ed2765449abf55ff85e092da68 30-Nov-2010 Bill Wendling <isanbard@gmail.com> Predicate encoding should be withing {}s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120360 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
8e0c7b52877983b4838e54e233449912fc1a2325 30-Nov-2010 Bob Wilson <bob.wilson@apple.com> Fix the encoding of VLD4-dup alignment.
The only reasonable way I could find to do this is to provide an alternate
version of the addrmode6 operand with a different encoding function. Use it
for all the VLD-dup instructions for the sake of consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120358 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
173fb1421ac03999561e365d8413e8983189dab3 30-Nov-2010 Bob Wilson <bob.wilson@apple.com> Rename VLDnDUP instructions with double-spaced registers
in an attempt to make things a little more consistent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120357 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6c4c982f83eea655e0f14610d2689fad722aeb7d 30-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for NEON VLD3-dup instructions.
The encoding for alignment in VLD4-dup instructions is still a work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120356 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
e76473d9ba1222cb38958d5b05204417e8c2f469 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Simplify definitions of the ARM eh.sjlj.*jmp pseudo instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120354 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6e4221153bf0f2b6acda93f08b08155e3628bf4c 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Parameterize ARMPseudoInst size property.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120353 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
00a257af5b62df1921e3df3ee2fa4adc2ccbd297 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Add a few missing initializers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120350 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
03f44a04e63ff77af12df33e10ffdc473609dfe2 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Nuke trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120344 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cd3c7cb9159bf80e6847c6d3c182ee4ae5e02281 30-Nov-2010 Jim Grosbach <grosbach@apple.com> Nuke a FIXME. No need to be fancier here, as ARM handles constant pools
locations and formatting specially. rdar://7353441

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120343 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
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
RMCodeEmitter.cpp
RMInstrThumb2.td
RMMCCodeEmitter.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.td
9b0e92ca5b65eb20ee51e67fedeac8288a1eccde 29-Nov-2010 Bill Wendling <isanbard@gmail.com> Thumb encodings for conditional moves.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120334 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.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
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
a46a493c026cb60eec461f40318ce7ca7574f1b5 29-Nov-2010 Bill Wendling <isanbard@gmail.com> Refactor some of the "disassembly-only" instructions into a base class. This
reduces some code duplication.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120326 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7bb5996e474806eee2fde0f446400ecbab59e4ae 29-Nov-2010 Eric Christopher <echristo@apple.com> Update fastisel for the changes in r120272.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120324 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
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
RMInstrThumb2.td
86c6d80a7a20fa7decc3e914be5d1cb0f7f29a6f 29-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for NEON VLD3-dup instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120312 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
2fcda63763ef010c57f6e7f250868e355075f6cf 29-Nov-2010 Bob Wilson <bob.wilson@apple.com> Fix copy-and-paste errors in VLD2-dup scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120311 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
f1aa47dc1aed018e2f70ffe7d32dba51e2ac45fe 29-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM Pseudo-ize tBR_JTr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120310 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
nstPrinter/ARMInstPrinter.h
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
RMInstrThumb2.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
RMInstrThumb2.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
RMInstrThumb2.td
11fbff8085850a112ec50a6ba5c3bb4de37b432b 29-Nov-2010 Jim Grosbach <grosbach@apple.com> The ARM BR_JT* pseudos don't need to use the printer jtblock_operand node to
get the pretty-printer. That's handled explicityly by the MC lowering now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120305 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3cc52ea33c0b96d1682f14fc45c45b57df0f39b6 29-Nov-2010 Michael J. Spencer <bigcheesegs@gmail.com> I swear I did a make clean and make before committing all this...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120304 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
2dc7768d73c9afa3a23b86ee7827bc8de426f459 29-Nov-2010 Jim Grosbach <grosbach@apple.com> Switch ARM BR_JTm and BR_JTr instructions to be MC-expanded pseudos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120303 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrFormats.td
RMInstrInfo.td
2f17bf2a4406d89b5e127306cbd0fc862e0a6bd5 29-Nov-2010 Bill Wendling <isanbard@gmail.com> Add more Thumb encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120279 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
5cbbf68e35a053c904548564da13d4a8596f988b 29-Nov-2010 Bill Wendling <isanbard@gmail.com> More Thumb encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120278 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d19ac0c75a019273e03922e2252ed262578a43d1 29-Nov-2010 Bill Wendling <isanbard@gmail.com> Add Thumb encodings for REV instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120277 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
849f2e381e4e83dc4f60e4a1fe6e6bb47bde8248 29-Nov-2010 Bill Wendling <isanbard@gmail.com> Add more Thumb encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120272 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
b1dfa7a8e0c1972231bee636afd5239b009ba4da 28-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for NEON VLD2-dup instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120236 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
f3d2f9d4be5beaf4c37b071373592da55fb44d1d 28-Nov-2010 Bob Wilson <bob.wilson@apple.com> Another minor refactoring for VLD1DUP instructions.
The op11_8 field is the same for all of them so put it in the instruction
classes instead of specifying it separately for each instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120234 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
364a72a8e5810561613491bef0de6f301ee4925c 28-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add entry in getTargetNodeName() for ARMISD::VBICIMM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120233 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
94c5ae08750f314bc3cf1bf882b686244a3927d9 28-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move more PEI-related hooks to TFI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120229 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameInfo.cpp
RMFrameInfo.h
cd775ceff0b25a0b026f643a7990c2924bd310a3 28-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move callee-saved regs spills / reloads to TFI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120228 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMFrameInfo.cpp
RMFrameInfo.h
humb1FrameInfo.cpp
humb1FrameInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
bce55776af16b70408e2ae2e6d91f8ac1e43f6a7 27-Nov-2010 Bob Wilson <bob.wilson@apple.com> Refactor. Set alignment bit in VLD1-dup instruction classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120197 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2a0e97431ecef2aa6a24a16ced207d5b53fcfc2d 27-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add NEON VLD1-dup instructions (load 1 element to all lanes).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120194 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
8d412946643f048daa9d76b4f021a172341ea045 27-Nov-2010 Bob Wilson <bob.wilson@apple.com> Fix incorrect scheduling itineraries for NEON vld1/vst1 instructions.
I added these instructions recently but I have no idea where these "1"
values in the NextCycles field came from. As far as I can tell now,
these instruction stages are clearly intended to overlap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120193 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
36d76a8dbc87b62de82a4a8c0d7cb4bb2a202934 27-Nov-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Switch to using MachOFormat.h.
- I'm leaving MachO.h, because I believe it has external consumers, but I would really like to eliminate it (we have stylistic disagreements with one another).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120187 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
fd46797d0da4970a40f8b5648b8f9b186ce5adb9 26-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the unused TheTarget member.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120168 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
13534672deffb571d90f2c2f0a237c67d5aa0594 23-Nov-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Move the ARM reloc constants to Support/ELF.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120035 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
RMELFWriterInfo.h
626613d5e8805db1f40e956faf47c87bea3aee44 23-Nov-2010 Bob Wilson <bob.wilson@apple.com> Recognize sign/zero-extended constant BUILD_VECTORs for VMULL operations.
We need to check if the individual vector elements are sign/zero-extended
values. For now this only handles constants values. Radar 8687140.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120034 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bf17cfa3f904e488e898ac2e3af706fd1a892f08 23-Nov-2010 Wesley Peck <peckw@wesleypeck.com> Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119990 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
ab5c703fdb0b07c6d89271519fd1cca7105b3eae 22-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix epilogue codegen to avoid leaving the stack pointer in an invalid
state. Previously Thumb2 would restore sp from fp like this:
mov sp, r7
sub, sp, #4
If an interrupt is taken after the 'mov' but before the 'sub', callee-saved
registers might be clobbered by the interrupt handler. Instead, try
restoring directly from sp:
add sp, #4
Or, if necessary (with VLA, etc.) use a scratch register to compute sp and
then restore it:
sub.w r4, r7, #8
mov sp, r7
rdar://8465407


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119977 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMFrameInfo.cpp
humb1FrameInfo.cpp
3d93893895e5ae86e7c32da4329a8c0ec1a6ceb1 22-Nov-2010 Duncan Sands <baldrick@free.fr> Fix a compiler warning about Kind being used uninitialized
when assertions are disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119962 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
9d89311df8e188ce55faad3e49842c7f8d6a0818 22-Nov-2010 Eric Christopher <echristo@apple.com> Pseudos default to 4byte size, let the instruction size field notice
that branch tables are special.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119954 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dcf0a47b765567596957db407d5388864d41e635 21-Nov-2010 Bill Wendling <isanbard@gmail.com> More Thumb encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119940 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
af2b573614c7d853879ff24eb9a86d1c36acc198 21-Nov-2010 Bill Wendling <isanbard@gmail.com> Add encoding for ARM "trap" instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119938 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9717fa9f29696bca45ddfdf206b1c382c8b40b78 21-Nov-2010 Bill Wendling <isanbard@gmail.com> The "trap" instruction is one of this which doesn't have a condition code. Hack
the code to not add a "condition code" if it's trap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119937 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7d0affdf02f5bbdda5f6ee067c5003f87e9ccc39 21-Nov-2010 Bill Wendling <isanbard@gmail.com> - Give "trap" the correct encoding, at least according to Darwin's assembler.
- Add comments saying where the encodings for other instructions came from.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119936 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
aa54524a44a5c1a0a3f4a85f113fc4f510566aa1 21-Nov-2010 Owen Anderson <resistor@mac.com> Use by-name rather than by-order operand matching for some NEON encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119923 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0eb49c57f0163d590567bb6ac13e4bd307bfd1d7 21-Nov-2010 Jim Grosbach <grosbach@apple.com> BR_JTadd is ARM-only, so use the proper pseudo class to get the predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119918 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5cc88a205dc8c3009cd7f2b8165c2757082871a5 20-Nov-2010 Bill Wendling <isanbard@gmail.com> A few more thumb instruction MC encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119913 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
827656dab4931a512d6d994d9c61d280a2651dd4 20-Nov-2010 Eric Christopher <echristo@apple.com> Rewrite address handling to use a structure with all the possible address
mode variables. Handle frame indexes in load/store and allocas again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119912 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
13df1a0baca2af78e24919e6a52b452f4d45f32f 20-Nov-2010 Eric Christopher <echristo@apple.com> STRH only needs the additional operand, not t2STRH. Also invert conditional
to match the one from the load emitter above.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119911 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
82f58740c76b42af8370247b23677a0318f6dde8 20-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move some more hooks to TargetFrameInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119904 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameInfo.cpp
RMFrameInfo.h
a09cc2b42938db39301cf1ebe159491ff2f16581 20-Nov-2010 Bill Wendling <isanbard@gmail.com> Add more Thumb add instruction encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119883 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
95a6d1759d7b1ad144703046eaf30ab579aa9d71 20-Nov-2010 Bill Wendling <isanbard@gmail.com> Add Thumb encodings for some add instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119882 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
6179c31e0745eb872d78df17a72255d840fa486a 20-Nov-2010 Bill Wendling <isanbard@gmail.com> Add more encodings for Thumb instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119881 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
20272a7c5a0ecb02364fb03ccde5a0d4533cb3d7 20-Nov-2010 Bill Wendling <isanbard@gmail.com> Have the getAddrMode3OpValue() function in ARMCodeEmitter.cpp produce the same
value that the one in ARMMCCodeEmitter.cpp does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119878 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
078e239f6948d4a942e16db3868908e503a51efb 20-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix ARM LDR* post-indexed operand encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119869 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1228038ed93504b0a34878dc659cca98092a1f2d 20-Nov-2010 Bill Wendling <isanbard@gmail.com> Encodings for the compare instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119868 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
b16926940e8857438d38556b288f149ebcc1b18a 20-Nov-2010 Owen Anderson <resistor@mac.com> The Vm and Vn register fields must be the same for a register-register vmov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119867 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ff96b63d6fb0b6e6eccdabcbdc4eeeb69e54c648 20-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix a cut-n-paste-error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119866 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7b6ab402fe201598dd38d9338078d74c4d0783c7 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Operand names

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119864 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a30a51b16a002dc51e206ea467f2c4ab7ca18a77 19-Nov-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119863 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
b37165808359c71b20291de51368f9efb65e7108 19-Nov-2010 Eric Christopher <echristo@apple.com> Don't need to save piecemeal now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119862 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2d630d7bc9ae746d353211c3532dfa8e4f0ce9d5 19-Nov-2010 Eric Christopher <echristo@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119861 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0ae28e44479595ccea9b1a43a152c01224b625bb 19-Nov-2010 Bill Wendling <isanbard@gmail.com> Add encodings for some of the thumb ADD instructions. Tests will come once the
asm parser can handle them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119860 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
88de86b550a1fd19dd968cafac48e810f1da5254 19-Nov-2010 Eric Christopher <echristo@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119859 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
efaeb41aec9bc54467e7c6d24ed628666e7d3aca 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Clarify operand names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119858 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0d58122e1221665d421a53741ef638505ecbe745 19-Nov-2010 Eric Christopher <echristo@apple.com> Refactor address mode handling into a single struct (ala x86), this
should give allow a wider range of addressing modes.

No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119856 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6571101cb727740951a452d667479cea3f17bc3b 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix encoding for ARM MLS instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119855 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2aeb6121a19aca7c317619f7ec37d7a770e9f03b 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Add ARM encoding information for STRD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119852 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
a1b4175b8e2d8f95498a8148586734c4e44f342b 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Shuffle things around a bit to keep like things together. Tidy up formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119851 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ba46dc06e68cf6b3708cf41b737cb485152f31be 19-Nov-2010 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119850 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
a898166d3863b163ee87d69a4e4a487a5a92af43 19-Nov-2010 Bill Wendling <isanbard@gmail.com> Change long binary encodings to use hex instead. It's more readable. Also
initialize missing bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119849 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
953557f445ba749e0ec95e43bc5143849d1fd99b 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Factor out operand encoding bits for ARM addressing mode 2 store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119846 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
e2d54af47f67f3a868f96a4d9856042c71244814 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Delete another dead class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119844 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
fc0cb4b90673eedfa36024bfee21ef6af3d50101 19-Nov-2010 Jim Grosbach <grosbach@apple.com> whitespace tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119843 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
9ef65cbbc6f23ee8c44b065d3a4feea11c471a2f 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Refactor PICSTR* instructions to really be pseudos. Nuke dead classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119841 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
9558b4cdc4d12079250fe1d6302b954c7dfc0010 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Rename ARM .td class AIldst1 to AI2ldst for consistency with the other classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119840 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
9cb15b5be51b7e36f3fe0c9ee256eb9c99b9d796 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Add ARM binary encoding information for the rest of the indexed loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119821 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
0c2283a910fef6347ddc46196cf37b4ff7e87fb6 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119815 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
f1ce7cc1d19309e5cb086739471f4dc04728117b 19-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM LDRD binary encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119812 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
3ea4daaf5043ba2d4745f43c5dc2e44c0305ca00 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove hard tabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119810 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
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
RMInstrThumb2.td
7920d96964d707a3af85332c98d95b2fabc3d5c9 19-Nov-2010 Benjamin Kramer <benny.kra@googlemail.com> Avoid release build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119804 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
humb1RegisterInfo.cpp
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
RMInstrThumb2.td
1f190c8bdf1d74c029c85b0865c983f3f9cafb31 19-Nov-2010 Evan Cheng <evan.cheng@apple.com> These instructions are thumb2 only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119793 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.td
602890dd8ef53c6e8d60a2752b97940f7a58de1a 19-Nov-2010 Bill Wendling <isanbard@gmail.com> Add MC encodings for some Thumb instructions. Test for a few of them. The "bx
lr" instruction cannot be tested just yet. It requires matching a "condition
code", but adding one of those makes things go south quickly...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119774 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
cb21d1c9fd1cf53f063183f7eb28af7fa4052ef0 19-Nov-2010 Bill Wendling <isanbard@gmail.com> Use array_pod_sort because the list is contiguous.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119769 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
817c1a6dddadb4664738777d224bc7eae6e62cf3 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Minor cleanups to a few llvm_unreachable() calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119767 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
d1fadd8c5d6a4e953323690860ba90e63d04cd2c 19-Nov-2010 Bill Wendling <isanbard@gmail.com> An 'unreachable' shouldn't have a '0 &&' prefix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119762 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
50d0f5894448aff6eb02ad63da55ecf26b54aeb8 19-Nov-2010 Bill Wendling <isanbard@gmail.com> Add support for parsing the writeback ("!") token.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119761 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
837caa9313e1f9480721f232f89f5c7b1b9c9d09 19-Nov-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Fix .o emission of ARM movt/movw. MCSymbolRefExpr::VK_ARM_(HI||LO)16 for the .o path now works for ARM.
Note: lo16AllZero remains in ARMInstrInfo.td - It can be factored out when Thumb movt is repaired.
Existing tests cover this update.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119760 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMELFWriterInfo.cpp
RMFixupKinds.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
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
RMInstrThumb2.td
75b7b879c078366d3e7d90360f01a6e7c0a75b68 19-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM Encoding information for UXTAH and friends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119753 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9684a7c1281e7d7f6d7ab7c3f8484fe2138f39bc 18-Nov-2010 Tanya Lattner <tonic@nondot.org> Fix bug in DAGCombiner for ARM that was trying to do a ShiftCombine on illegal types (vector should be split first).
Added test case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119749 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
24d22d27640e9de954a5ac26f51a45cc96bb9135 18-Nov-2010 Bill Wendling <isanbard@gmail.com> Don't allocate the SmallVector of Registers. It gets messy figuring out who
should delete what when the object gets copied around. It's also making valgrind
upset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119747 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
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
RMInstrThumb2.td
c884aff5f4d431b31b5f85ce8a208dba30bd72df 18-Nov-2010 Jim Grosbach <grosbach@apple.com> Add ARM encoding information for LDRH post-increment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119743 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
d0c38176690e9602a93a20a43f1bd084564a8116 18-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Move hasFP() and few related hooks to TargetFrameInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119740 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMExpandPseudoInsts.cpp
RMFrameInfo.cpp
RMFrameInfo.h
RMISelLowering.cpp
humb1FrameInfo.cpp
humb1FrameInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
d5448bb6e845bd6c2dcb98156f49a73842759ab0 18-Nov-2010 Bob Wilson <bob.wilson@apple.com> Split up ARM LowerShift function.
This function was being called from two different places for completely
unrelated reasons. During type legalization, it was called to expand 64-bit
shift operations. During operation legalization, it was called to handle
Neon vector shifts. The vector shift code was not written to check for
illegal types, since it was assumed to be only called after type legalization.
Fixed this by splitting off the 64-bit shift expansion into a separate
function. I don't have a particular testcase for this; I just noticed it
by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119738 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
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
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.td
707120047e0107cb15dd4bbb31613df129b13c7a 18-Nov-2010 Bill Wendling <isanbard@gmail.com> Missed the _RET versions of LDMIA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119726 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
8b3ca6216d62bf3f729c2e122dcfeb7c4d7500dc 18-Nov-2010 Eric Christopher <echristo@apple.com> Rewrite stack callee saved spills and restores to use push/pop instructions.
Remove movePastCSLoadStoreOps and associated code for simple pointer
increments. Update routines that depended upon other opcodes for save/restore.

Adjust all testcases accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119725 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.h
RMFrameInfo.cpp
056ab107ff8e818258c39b1f1e318b2aa1a417fc 18-Nov-2010 Jim Grosbach <grosbach@apple.com> ARMPseudoInst instructions should default to being considered a single 4-byte
instruction. Any that may be expanded otherwise by MC lowering should
override this value. rdar://8683274

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119713 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
5c71c7a13715ed6f5bfdd5497172ddec316b68b0 18-Nov-2010 Evan Cheng <evan.cheng@apple.com> Silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119610 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1251e1a8df29099332294b99f68a6b27dfcf0271 18-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119608 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
1b4886dd00578038c0ca70b3bab97382b89def26 18-Nov-2010 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119604 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c6961f140ad9bb4da6554c12a4a6af4cd2dab54a 18-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119603 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
53694265a9e571aa53087ed0d5b770fdede12394 18-Nov-2010 Jim Grosbach <grosbach@apple.com> Refactor the ARM PICADD and PICLDR* instructions to really be pseudos and not
just pretend to be.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119602 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.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
RMInstrThumb2.td
160f8f0e6779b76c7713036c8580ae25c5aad586 18-Nov-2010 Jim Grosbach <grosbach@apple.com> Refactor a few ARM load instructions to better parameterize things and re-use
common encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119598 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.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
RMInstrThumb2.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
RMInstrThumb2.td
85eb54cf0cfb0f328669080c45cf8cc298aa2868 18-Nov-2010 Jim Grosbach <grosbach@apple.com> Clean up LEApcrel instuction(s) a bit. It's not really a Pseudo, so don't mark
it as such. Add some encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119588 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.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
RMInstrThumb2.td
0129be281eea2c22a925873f2e1cd5cc978ae87c 17-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119573 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
05646099a0b7ebd97571354d658a142e4e4c94c7 17-Nov-2010 Bob Wilson <bob.wilson@apple.com> Change ARMGlobalMerge to keep BSS globals in separate pools.
This completes the fixes for Radar 8673120.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119566 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
619a3726177c63a14e2822a80e6bc897be2e5a91 17-Nov-2010 Bob Wilson <bob.wilson@apple.com> Fix ARMGlobalMerge pass to check if globals are entirely within range.
It is generally not sufficient to check if the starting offset is in range
of the maximum offset that can be efficiently used for the target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119565 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
72831dc905c2354fc08762dbfd5f1b20fbd5b18b 17-Nov-2010 Bob Wilson <bob.wilson@apple.com> Change the symbol for merged globals from "merged" to "_MergedGlobals".
This makes it more clear that the symbol is an internal, compiler-generated
name and gives a little more description about its contents.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119564 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
edf046716ce7d0da9479c37a5bbb6dd33ce6d390 17-Nov-2010 Bob Wilson <bob.wilson@apple.com> Fix the ARMGlobalMerge pass to look at variable sizes instead of pointer sizes.
It was mistakenly looking at the pointer type when checking for the size of
global variables. This is a partial fix for Radar 8673120.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119563 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
f8dabac6041b2a38307a5ab0beb330ededb7514b 17-Nov-2010 Jim Grosbach <grosbach@apple.com> Make the ARM BR_JTadd instruction an explicit pseudo and lower it properly
in the MC lowering process.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119559 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
6b19491468e44249a35d869642e7302aaacb220b 17-Nov-2010 Evan Cheng <evan.cheng@apple.com> Avoid isel movcc of large immediates when the large immediate is available in a register. These immediates aren't free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119558 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
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
RMInstrThumb2.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
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
f2dc4aa562e2478a73fe5aeeeec16b1e496a0642 17-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> make isVirtualSection a virtual method on MCSection. Chris' suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119547 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
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
RMInstrThumb2.td
df8d94da01ccae58c93b03a5fb93fa1f05799c2f 17-Nov-2010 Bill Wendling <isanbard@gmail.com> Add missing opcodes now that this function's used in more than one place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119539 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
89e14c7579d9351da2e39a85703882bac3a83980 17-Nov-2010 Jim Grosbach <grosbach@apple.com> More ARM encoding bits. LDRH now encodes properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119529 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
baa45f7298c266f0f89b17e50e9d98709dde84d7 17-Nov-2010 Evan Cheng <evan.cheng@apple.com> Revert r119109 for now. It's breaking 176.gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119492 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3642e64c114e636548888c72c21ae023ee0121a7 17-Nov-2010 Evan Cheng <evan.cheng@apple.com> Simplify code that toggle optional operand to ARM::CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119484 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b75c651e22a63907b727664f044283bf9c9fb885 17-Nov-2010 Chris Lattner <sabre@nondot.org> tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119462 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMTargetMachine.cpp
2567eec4233d58a2a0cbdcafca9420452689b395 17-Nov-2010 Bill Wendling <isanbard@gmail.com> The machine instruction no longer encodes the submode as a separate operand. We
should get the submode from the load/store multiple instruction's opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119461 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMCodeEmitter.cpp
RMLoadStoreOptimizer.cpp
0f6307561359fac4425a0b9e512931cf96c1ec5b 17-Nov-2010 Bill Wendling <isanbard@gmail.com> Proper encoding for VLDM and VSTM instructions. The register lists for these
instructions have to distinguish between lists of single- and double-precision
registers in order for the ASM matcher to do a proper job. In all other
respects, a list of single- or double-precision registers are the same as a list
of GPR registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119460 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
smParser/ARMAsmParser.cpp
6bc105a7b9282a0b5beb9d06267b31a3054fb3fa 17-Nov-2010 Bill Wendling <isanbard@gmail.com> Add binary emission stuff for VLDM/VSTM. This reuses the
"getRegisterListOpValue" logic. If the registers are double or single precision,
the value returned is suitable for VLDM/VSTM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119435 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMMCCodeEmitter.cpp
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
RMInstrInfo.td
RMInstrThumb2.td
7911916cf7a819c2a303ca143f7c28b0c0f99d12 16-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM conditional mov encoding fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119354 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.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
RMInstrThumb2.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
73c57e149cc96abc74d6c67f9a09f14d687101c9 16-Nov-2010 Bill Wendling <isanbard@gmail.com> vldm and vstm are mnemonics for vldmia and vstmia resp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119321 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.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
RMBaseInstrInfo.cpp
RMExpandPseudoInsts.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
nstPrinter/ARMInstPrinter.cpp
humb2SizeReduction.cpp
27ead00b8a99ce29e9e5d7d6268da5995d56895e 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
RMInstrThumb2.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
RMInstrThumb2.td
e1b76d67dc649ab1c558d39946460a2752ba2332 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
RMInstrThumb2.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
RMInstrThumb2.td
8c5826be10ecf5eca355a0c9110b4f1d0865d5f5 15-Nov-2010 Evan Cheng <evan.cheng@apple.com> Code clean up. The peephole pass should be the one updating the instruction
iterator, not TII->OptimizeCompareInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119186 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
eb96a2f6c03c0ec97c56a3493ac38024afacc774 15-Nov-2010 Evan Cheng <evan.cheng@apple.com> Code clean up. The peephole pass should be the one updating the instruction
iterator, not TII->OptimizeCompareInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119186 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
f5cc5f76333b67656c47de5a9cd593ce7bba2fed 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
RMInstrThumb2.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
RMInstrThumb2.td
d6b12afee3fa4ecccf9ea1841acfaf31515bb101 15-Nov-2010 Eric Christopher <echristo@apple.com> Recommit this change and remove the failing part of the test - it didn't
pass in the first place and was masked by earlier failures not warning
and aborting the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119184 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
76dda7ec1d8d0ee65a103b6710ab75c2a9e012d1 15-Nov-2010 Eric Christopher <echristo@apple.com> Recommit this change and remove the failing part of the test - it didn't
pass in the first place and was masked by earlier failures not warning
and aborting the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119184 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1e30624e0cd61521c7d2c784c85460f6cc0c45c6 15-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM LDR_PRE/LDR_POST/STR_PRE/STR_POST (and the *B counterparts) binary encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119180 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
99f53d13efc259b47c93dc0d90a5db763cbe371a 15-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM LDR_PRE/LDR_POST/STR_PRE/STR_POST (and the *B counterparts) binary encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119180 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
7cec86017183390b04b054007a56ab4b2c0b0de2 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
RMInstrThumb2.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
RMInstrThumb2.td
eb4a8e300d3ada654787254a9fc43f1bad8c3fdc 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
RMInstrThumb2.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
RMInstrThumb2.td
4e95530f2396a9c2fed16a27aafe87cf01bcdc93 15-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXMEs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119167 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
11bbeecdf1dd07599e644577bd56ea89294d0d04 15-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXMEs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119167 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a2cb4d2d388088ab0bef7adf3e12bc3bec7ed2b9 15-Nov-2010 Jim Grosbach <grosbach@apple.com> Nuke redundant encoding bit set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119164 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
17e967eac2dec4ab0b7d3ce7ce6b348d6a275cb9 15-Nov-2010 Jim Grosbach <grosbach@apple.com> Nuke redundant encoding bit set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119164 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e29edfe062b2e073da8ed6aa123ccddf74838340 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
RMAsmPrinter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
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
RMAsmPrinter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
RMMCCodeEmitter.cpp
e2831db8d962cfecf9820a384aa2aca4368c9728 15-Nov-2010 Evan Cheng <evan.cheng@apple.com> Make sure ARM multi load / store pass copies memoperands when forming ldrd / strd. pr8113.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119109 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
fbc8c67992d8c8b0f4ea07b29cf31a4f0c1b28fe 15-Nov-2010 Evan Cheng <evan.cheng@apple.com> Make sure ARM multi load / store pass copies memoperands when forming ldrd / strd. pr8113.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119109 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3240bd8146a525e65fe2f132773736cb186fc4ea 15-Nov-2010 Chris Lattner <sabre@nondot.org> silence a ton of warnings from clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119102 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
65a0adb5978d44c791d047cb44792785abf71e4b 15-Nov-2010 Chris Lattner <sabre@nondot.org> silence a ton of warnings from clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119102 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
972882d91a6041801fab51ba56c6be498e1cfc24 15-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Attempt to unbreak cmake-based builds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119098 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
a460e4a1427260bd46171e674d0a4c41cdd6313f 15-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> Attempt to unbreak cmake-based builds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119098 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
b87e6afa1369ea12e485b1037184f78e42dc73df 15-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119097 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameInfo.cpp
RMFrameInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
humb1FrameInfo.cpp
humb1FrameInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
33464912237efaa0ed7060829e66b59055bdd48b 15-Nov-2010 Anton Korobeynikov <asl@math.spbu.ru> First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119097 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMFrameInfo.cpp
RMFrameInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
humb1FrameInfo.cpp
humb1FrameInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
88fda4d8db965a8ec3ba87cadf92cc922ad7ec30 14-Nov-2010 Chris Lattner <sabre@nondot.org> trim #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119075 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
77ec256be694d3df4604e7fbdf4d6e9cc0fcda33 14-Nov-2010 Chris Lattner <sabre@nondot.org> trim #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119075 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
eb4a44aff329512abf114ac5b3a32784f271ce03 14-Nov-2010 Chris Lattner <sabre@nondot.org> rename LowerToMCInst -> LowerARMMachineInstrToMCInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119071 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMMCInstLower.cpp
30e2cc254be72601b11383dda01f495741ffd56c 14-Nov-2010 Chris Lattner <sabre@nondot.org> rename LowerToMCInst -> LowerARMMachineInstrToMCInst.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119071 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMMCInstLower.cpp
43dbf1b574add946fabc3fa4009fb9dd35195b3b 14-Nov-2010 Chris Lattner <sabre@nondot.org> even more simplifications. ARM MCInstLowering is now just
a single function instead of a class. It doesn't need the
complexity that X86 does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119070 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMMCInstLower.cpp
RMMCInstLower.h
1612a619f18cbb328df5b2d8d268dd5e02a4a483 14-Nov-2010 Chris Lattner <sabre@nondot.org> even more simplifications. ARM MCInstLowering is now just
a single function instead of a class. It doesn't need the
complexity that X86 does.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119070 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMMCInstLower.cpp
RMMCInstLower.h
163c75f642bcf00432738fd45f723cfd7b972a5e 14-Nov-2010 Chris Lattner <sabre@nondot.org> more shrinkification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119068 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
RMMCInstLower.h
b16ddb1fb3de22f4bad48d0cbc00e8b067463a64 14-Nov-2010 Chris Lattner <sabre@nondot.org> more shrinkification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119068 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
RMMCInstLower.h
32af12c9d5c71429cfd622f687625bcf0562ef82 14-Nov-2010 Chris Lattner <sabre@nondot.org> more simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119067 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
RMMCInstLower.h
de36af4c157b0df6fd089b8fe965904761c2b5e1 14-Nov-2010 Chris Lattner <sabre@nondot.org> more simplifications.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119067 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
RMMCInstLower.h
83a6356bad383147afd5219dfa5e9cc0f11b7dca 14-Nov-2010 Chris Lattner <sabre@nondot.org> simplify and tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119066 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMCInstLower.cpp
RMMCInstLower.h
112f2390e19774a54c2dd50391b99fb617da0973 14-Nov-2010 Chris Lattner <sabre@nondot.org> simplify and tidy up


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119066 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMCInstLower.cpp
RMMCInstLower.h
2a9137b38c78cff810ce7265b75fddd65332edef 14-Nov-2010 Chris Lattner <sabre@nondot.org> stub out a powerpc MCInstPrinter implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119059 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.h
60d5b5fdeec64b69c92db60242d3d90b3f978e69 14-Nov-2010 Chris Lattner <sabre@nondot.org> stub out a powerpc MCInstPrinter implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119059 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.h
b2b0ec48661a6e5f1956da4317dc17a6d4bd3039 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
RMInstrThumb2.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
RMInstrThumb2.td
b098011b0927011f9f51a24f5b66f18f4ed3f350 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
5c45266c4c183b9d8c2bbf07f2ec89c703d4e0f0 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
b249e75ec90c83f1bd052c3a9eb32d0d6b9fb62a 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
9b19707e6bcd2c38bf845a460c6c0038e36b9469 13-Nov-2010 Bill Wendling <isanbard@gmail.com> Minor cleanups:

- Get the opcode once.
- Add a ParserMatchClass to reglist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118997 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
04863d06fb3f2972355c990b29edcab1d9a85b41 13-Nov-2010 Bill Wendling <isanbard@gmail.com> Minor cleanups:

- Get the opcode once.
- Add a ParserMatchClass to reglist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118997 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
8fb906e1a45a1ae59d118faa2b8d745eb885ccae 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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
b43be3dc3e0f90a3110ef8a23d05ed62c67a557a 13-Nov-2010 Daniel Dunbar <daniel@zuster.org> MC: Simplify Mach-O and ELF object writer implementations.
- What was I thinking?????

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118992 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
115a3dd066c277c5417f4d9b9f642b732b76f4e7 13-Nov-2010 Daniel Dunbar <daniel@zuster.org> MC: Simplify Mach-O and ELF object writer implementations.
- What was I thinking?????

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118992 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
cb52334ecbb99bd4807329534ec251a88acd4265 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
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.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
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
eb1d6de0bb40ca19640943b7b03bfa31fa333df5 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
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
08cd8844e4e878229a5bd85636c47fe6ae971e99 13-Nov-2010 Jim Grosbach <grosbach@apple.com> Swap multiclass operand order for consistency with other patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118965 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
df7e0f8d5de7feb82923f627062c774e31e74e48 13-Nov-2010 Jim Grosbach <grosbach@apple.com> Swap multiclass operand order for consistency with other patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118965 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e4e1d9829cf9632ed0155bfe32edc1ba96dbe4d8 13-Nov-2010 Jim Grosbach <grosbach@apple.com> Continue ARM indexed load refactoring. Multiclass for LDR{B} pre/post indexed
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118963 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0f6e33b0c83eb6db0a059dd9d16798d919725b94 13-Nov-2010 Jim Grosbach <grosbach@apple.com> Continue ARM indexed load refactoring. Multiclass for LDR{B} pre/post indexed
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118963 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8018d300c149a2a58375ddba9d90df71180db34c 13-Nov-2010 Jim Grosbach <grosbach@apple.com> More ARM load/store indexed refactoring. Also fix an incorrect IndexMode
flag for the LDRT/STRT family instructions as a side effect.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
9e0bfb58298cab01625e56c49bac23f52bf782c3 13-Nov-2010 Jim Grosbach <grosbach@apple.com> More ARM load/store indexed refactoring. Also fix an incorrect IndexMode
flag for the LDRT/STRT family instructions as a side effect.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
a3c5f6178a4eb3786bb09a063606a95a28a234fc 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo which inverted an immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118951 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e5e0ef180ea1d0d7b482f998db12defde96cbf4f 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo which inverted an immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118951 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
91b85c341624502e148b32b31960e554ceffcde7 13-Nov-2010 Eric Christopher <echristo@apple.com> Temporarily revert this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118946 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
84e86c0156a6562bba87a0484ef24c2de4f641d7 13-Nov-2010 Eric Christopher <echristo@apple.com> Temporarily revert this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118946 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
50b3ab9ea7cdb9dc1c51556991bce9d0cdd06519 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> For pre-v6t2 targets, only select MOVi32imm if the immediate can be handled with movi + orr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118945 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
11c11f8ab0e97150998db2a44cec9d334b0bd154 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> For pre-v6t2 targets, only select MOVi32imm if the immediate can be handled with movi + orr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118945 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
7b1de199d6356e539078c2407cfff5158811d2c2 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
RMInstrThumb2.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
RMInstrThumb2.td
6a2528802c7daa7efe033af61c9a3950a73966af 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
RMInstrThumb2.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
RMInstrThumb2.td
7bda3adcb509f837b10f418d94707498a388ff9b 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> Eliminate ARM::MOVi2pieces. Just use MOVi32imm and expand it to either movi+orr or movw+movt depending on the subtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118938 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMExpandPseudoInsts.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
893d7fe2098cc81ba1b4ce0ed71f6f614843961f 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> Eliminate ARM::MOVi2pieces. Just use MOVi32imm and expand it to either movi+orr or movw+movt depending on the subtarget.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118938 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMExpandPseudoInsts.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
64536716fe2343fe0e12fde5a687c2e8e44cd602 12-Nov-2010 Eric Christopher <echristo@apple.com> Make this happen for ARM like x86. Don't entirely bail out when
an address is in a different block, get it into a register and go
from there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118936 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
c0394c0b8cee513a624566ce1db100bd66d4da57 12-Nov-2010 Eric Christopher <echristo@apple.com> Make this happen for ARM like x86. Don't entirely bail out when
an address is in a different block, get it into a register and go
from there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118936 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
506743bc02133fe51a0302779dbf88a7d38ef67b 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
40338cce58d9e3176a9a48f01c888b1d277cb5dc 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Zap a copy/paste-o bit of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118926 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e1634e935123d7e6de540baf8510618cf58afe3b 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Zap a copy/paste-o bit of dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118926 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ff7260bdc99e53152288b49c56a28fbf7afcde11 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Refactor to parameterize some ARM load/store encoding patterns. Preparatory
to splitting the load/store pre/post indexed instructions into [r, r] and
[r, imm] forms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118925 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
2716e25c2cee61e95bec3d17b49ca37a48b4cfab 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Refactor to parameterize some ARM load/store encoding patterns. Preparatory
to splitting the load/store pre/post indexed instructions into [r, r] and
[r, imm] forms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118925 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
0d5d833eaee85389cee84daae39691c75faf728e 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
RMCodeEmitter.cpp
RMInstrThumb2.td
RMMCCodeEmitter.cpp
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
RMCodeEmitter.cpp
RMInstrThumb2.td
RMMCCodeEmitter.cpp
ab1df1f1da3becba7956c79c4002f2f6355f0550 12-Nov-2010 Evan Cheng <evan.cheng@apple.com> Add some missing isel predicates on def : pat patterns to avoid generating VFP vmla / vmls (they cause stalls). Disabling them in isel is properly not a right solution, I'll look into a proper solution next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118922 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrVFP.td
529916ca4ab83ec472a2d7039a05007c4d40553a 12-Nov-2010 Evan Cheng <evan.cheng@apple.com> Add some missing isel predicates on def : pat patterns to avoid generating VFP vmla / vmls (they cause stalls). Disabling them in isel is properly not a right solution, I'll look into a proper solution next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118922 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrVFP.td
9750f91a399a256d2664e2cca5d7bd3d25faa69e 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Kill more unused stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118921 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
b39e6488eef7a5ff8b4e6acf0d42d096f5be853b 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Kill more unused stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118921 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
8f3f214fd780375c90217adc8ba848282e30e2f0 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118919 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a0a6a47c02d360e8a167a6a28f03a3b453c38fbb 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118919 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
75fe9b9c0156dad0ebf0021ee7e0f2b5a515f5b2 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Fill in the default predication bits for ARM unconditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118907 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d75c3f136b2f7496d177b868956a4489d4b980b9 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Fill in the default predication bits for ARM unconditional branch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118907 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3e7f4a4567b387c01e47f9429e752724755da667 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM LDRSB instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118905 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
80f9e6724fa98b5af0bb43f58002c1ac3e9cb30b 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM LDRSB instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118905 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
776f92fcb090ed2ea379ba7d75a8560633181f13 12-Nov-2010 Eric Christopher <echristo@apple.com> Fix up a few more spots of addrmode2 (or not) changes that were
missed. Update some comments accordingly.

Fixes rdar://8652289


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118888 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d0c82a683e965f326e36a2bcaa85c00e917f8282 12-Nov-2010 Eric Christopher <echristo@apple.com> Fix up a few more spots of addrmode2 (or not) changes that were
missed. Update some comments accordingly.

Fixes rdar://8652289


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118888 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2ff865a92f1c29619b38e894f4a724db38a56f40 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Start of support for binary emit of 16-it Thumb instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118859 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
e50e6bcd901ebb1cfc42fe9ca0796ae303d7f1a1 12-Nov-2010 Jim Grosbach <grosbach@apple.com> Start of support for binary emit of 16-it Thumb instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118859 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
b2adc06c2e963ca9af94c1b0c154c599496b7a0e 12-Nov-2010 Owen Anderson <resistor@mac.com> Fill out support for Thumb2 encodings of NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118854 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
8f143913141991baaa535ca0da7c8a81606d6392 12-Nov-2010 Owen Anderson <resistor@mac.com> Fill out support for Thumb2 encodings of NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118854 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
42d0aa8e8035a3899bb8a652f6f7786791c86565 11-Nov-2010 Owen Anderson <resistor@mac.com> Add correct Thumb2 encodings for NEON vst[1,2,3,4] and vld[1,2,3,4].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118843 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
57dac88f775c1191a98cff89abd1f7ad33df5e29 11-Nov-2010 Owen Anderson <resistor@mac.com> Add correct Thumb2 encodings for NEON vst[1,2,3,4] and vld[1,2,3,4].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118843 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
a33b491422896729f0f46fac929d890fe47fff00 11-Nov-2010 Eric Christopher <echristo@apple.com> Revert the accidental commit I made reverting the previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118835 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
79ab2fe01a39a2fffe4e901ef3c96b6b943412a0 11-Nov-2010 Eric Christopher <echristo@apple.com> Revert the accidental commit I made reverting the previous commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118835 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
927caad7ee747d9cba1c4ba8534c0b8c2b6db522 11-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM fixup encoding for direct call instructions (BL).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118829 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d1d5a39cada320949353e8b2c59b6a160a67f7bf 11-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM fixup encoding for direct call instructions (BL).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118829 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fa0ce020983c9302473dcf656152b6cbb2d9dd5d 11-Nov-2010 Eric Christopher <echristo@apple.com> Revert this temporarily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118827 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMTargetMachine.cpp
6c50119ba33bf22885d2229726c809539a85c247 11-Nov-2010 Eric Christopher <echristo@apple.com> Revert this temporarily.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118827 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMTargetMachine.cpp
01b88edadb7526af91d5db570ea41f01a287244f 11-Nov-2010 Eric Christopher <echristo@apple.com> Change the prologue and epilogue to use push/pop for the low ARM registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118823 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
391f228e7e00f62b79ad483b801f5f58f046b7ea 11-Nov-2010 Eric Christopher <echristo@apple.com> Change the prologue and epilogue to use push/pop for the low ARM registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118823 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
79ecaa7de5ede4475ffdd30c48093c885397ffe9 11-Nov-2010 Owen Anderson <resistor@mac.com> Add support for Thumb2 encodings of NEON data processing instructions, using the new PostEncoderMethod infrastructure.
More tests to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118819 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
c7139a6f0d3acd198ab9eb536ea1ec52e61ff130 11-Nov-2010 Owen Anderson <resistor@mac.com> Add support for Thumb2 encodings of NEON data processing instructions, using the new PostEncoderMethod infrastructure.
More tests to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118819 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
43bcc3ab69a55bf0cf8c11f4b702092676ecca17 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding of destination fixup for ARM branch and conditional branch
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118801 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
c466b937dbdbaabeef0097fe340de1b8f49a3508 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding of destination fixup for ARM branch and conditional branch
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118801 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMCodeEmitter.cpp
RMFixupKinds.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
219358c134c3539f4a7cc110355633f4004dda39 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM LDRSH_POST.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118794 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
7eab97f260ba0f56d1d4a82f3a4eb2c979452011 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM LDRSH_POST.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118794 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
f05ba339c1ec78d6476cbe0f0ea0cbf4e9805837 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM LDRSH and LDRSH_PRE. Cannonicalize operand names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118767 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
928f3325a70384ee91af5768f628cf0748879b11 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM LDRSH and LDRSH_PRE. Cannonicalize operand names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118767 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
9b0387a3ec5a35a18cf53c1826f435bff1c33549 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix encoding of Ra register for ARM smla* instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118761 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d507d1f616be89b2327ebcd420a42075e59695b0 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix encoding of Ra register for ARM smla* instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118761 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2dbf8f4ff196eddb21ebc59095c21547372f759e 11-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM STRH encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118757 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
570a9226913ebe1af04832b8fb3273c70b4ee152 11-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM STRH encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118757 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
734aac12ee1334397dd2b9f7a070b93f5f78d58b 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Move LDM predicate operand encoding into base clase. Add STM missing STM
encoding bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118738 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
954ffff79bf2f48ac6fd8b4406fe51e3d19440e3 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Move LDM predicate operand encoding into base clase. Add STM missing STM
encoding bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118738 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
64a300e4ac281fe84470fb10e56c4f3f7edba1f1 11-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM LDM encoding for the mode (ia, ib, da, db) operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118736 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
5d5eb9e3817a2765297e6dd5649ecb9b8b03e334 11-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM LDM encoding for the mode (ia, ib, da, db) operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118736 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
c5d5f9cd53ba6054c36a7437679a332ad6421ea6 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix ARM encoding of non-return LDM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118732 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
c1235e2a4eff7ce61ab15375f6686238c39ab304 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix ARM encoding of non-return LDM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118732 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
dbb532831985861ebcda6ce79f7de1a3a1ca5f04 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix ARM encoding of LDM+Return instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118730 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
866aa394ca72ca015e65fff55043bc1120b3b58d 11-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix ARM encoding of LDM+Return instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118730 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
24ed1da6ab61b7fd404160879e2180626e40ab31 10-Nov-2010 Nate Begeman <natebegeman@mac.com> Fix an issue where we tried to turn a v2f32 build_vector into a v4i32 build vector with 2 elts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118720 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bf5be2654ee396710e28d83d2afebd6f22720c52 10-Nov-2010 Nate Begeman <natebegeman@mac.com> Fix an issue where we tried to turn a v2f32 build_vector into a v4i32 build vector with 2 elts


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118720 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
943948dbf8c94f7fffeabee4ffa26b5f192c960d 10-Nov-2010 Jim Grosbach <grosbach@apple.com> Simplify and clean up MC symbol lookup for ARM constant pool values. This fixes
double quoting of ObjC symbol names in constant pool entries.

rdar://8652107

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118688 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7c7ddb21c3cc65ea08de8f90bb97cbdead3173f8 10-Nov-2010 Jim Grosbach <grosbach@apple.com> Simplify and clean up MC symbol lookup for ARM constant pool values. This fixes
double quoting of ObjC symbol names in constant pool entries.

rdar://8652107

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118688 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
df17944721c87c09f55750761c9ccce10a5e55a2 10-Nov-2010 Jim Grosbach <grosbach@apple.com> Update ARMConstantPoolValue to not use a modifier string. Use an explicit
VariantKind marker to indicate the additional information necessary. Update
MC to handle the new Kinds. rdar://8647623



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118671 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2c4d5125c708bb35140fc2a40b02beb1add101db 10-Nov-2010 Jim Grosbach <grosbach@apple.com> Update ARMConstantPoolValue to not use a modifier string. Use an explicit
VariantKind marker to indicate the additional information necessary. Update
MC to handle the new Kinds. rdar://8647623



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118671 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d4c610f4dd6945d2e718fdf21e8259e49fe700fd 10-Nov-2010 Bill Wendling <isanbard@gmail.com> Emit a '!' if this is a "writeback" register or memory address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118662 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8ea974039a8811ff83ad2c45ec1037ac78e5afab 10-Nov-2010 Bill Wendling <isanbard@gmail.com> Emit a '!' if this is a "writeback" register or memory address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118662 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3a7a8d6a32d2cb9438ad4d6fecfa9a711e47a651 10-Nov-2010 Matt Beaumont-Gay <matthewbg@google.com> Rename a parameter to avoid confusion with a local variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118656 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cc8d10e1a8a8555fa63f33e36e3c1ed2fb24389d 10-Nov-2010 Matt Beaumont-Gay <matthewbg@google.com> Rename a parameter to avoid confusion with a local variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118656 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
afea8497c88d19080f4ef844ad0b898bfd96f534 10-Nov-2010 Bill Wendling <isanbard@gmail.com> Emit the warning about the register list not being in ascending order only once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118653 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8e8b18bcfa87ff919f127b1270a6891db1c9021f 10-Nov-2010 Bill Wendling <isanbard@gmail.com> Emit the warning about the register list not being in ascending order only once.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118653 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d66b32f4234cc1d76b99079ced4fc7129329208c 10-Nov-2010 Bill Wendling <isanbard@gmail.com> s/std::vector/SmallVector/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118648 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5fa22a19750c082ff161db1702ebe96dd2a787e7 10-Nov-2010 Bill Wendling <isanbard@gmail.com> s/std::vector/SmallVector/


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118648 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
415373106fbe372caa4ae8fd548113344992eb66 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Delete the allocated vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118644 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c3236753d6bb69d20003a7da441e9a42707ed714 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Delete the allocated vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118644 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cdc0212337a79b9470fe55631a51d12340b4b03a 09-Nov-2010 Bob Wilson <bob.wilson@apple.com> Define the subtarget feature for the architecture version,
as derived from the target triple. This is important for enabling
features that are implied based on the architecture version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118643 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
66f6c79450a93d979128d8702c83841c8f715dc8 09-Nov-2010 Bob Wilson <bob.wilson@apple.com> Define the subtarget feature for the architecture version,
as derived from the target triple. This is important for enabling
features that are implied based on the architecture version.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118643 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
646f35a6145ba4c6feba57ebefa6ef7c70c4cd16 09-Nov-2010 Bob Wilson <bob.wilson@apple.com> Do not use MEMBARRIER_MCR for any Thumb code.
It is only supported for ARM code. Normally Thumb2 code would use DMB instead,
but depending on how the compiler is invoked (e.g., -mattr=-db) that might be
disabled. This prevents a "cannot select MEMBARRIER_MCR" error in that
situation. Radar 8644195

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118642 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
54f92563806e87f47acd04fd71e4189d35d11005 09-Nov-2010 Bob Wilson <bob.wilson@apple.com> Do not use MEMBARRIER_MCR for any Thumb code.
It is only supported for ARM code. Normally Thumb2 code would use DMB instead,
but depending on how the compiler is invoked (e.g., -mattr=-db) that might be
disabled. This prevents a "cannot select MEMBARRIER_MCR" error in that
situation. Radar 8644195

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118642 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0fa77dc899b53c0aa4230b41024c71e66513640b 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Two types of instructions have register lists:

* LDM, et al, uses a bit mask to indicate the register list.
* VLDM, et al, uses a base register plus number.

The LDM instructions may be non-contiguous, but the VLDM ones must be
contiguous. Those are semantic checks that should be done later in the
compiler. Also postpone the creation of the bit mask until it's needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118640 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7729e06c128be01fc564870d5ea3d22d236dddb5 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Two types of instructions have register lists:

* LDM, et al, uses a bit mask to indicate the register list.
* VLDM, et al, uses a base register plus number.

The LDM instructions may be non-contiguous, but the VLDM ones must be
contiguous. Those are semantic checks that should be done later in the
compiler. Also postpone the creation of the bit mask until it's needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118640 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
11c1894d007e83af904aa79c6226ef79206b4acb 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Change the ARMConstantPoolValue modifier string to an enumeration. This will
help in MC'izing the references that use them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118633 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
3a2429a86c50a89c3321c741b85fa7d1fe668b38 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Change the ARMConstantPoolValue modifier string to an enumeration. This will
help in MC'izing the references that use them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118633 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
782ff938d82a3560923682c34851cd290e250404 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Handle ARM constant pool values that need an explicit reference to the '.'
pseudo-label. (TLS stuff).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118609 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c9962aca8f2f2c51794996ac1e2b7731d1d1d497 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Handle ARM constant pool values that need an explicit reference to the '.'
pseudo-label. (TLS stuff).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118609 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
56f9c1e73b86dc5a85fc8c15475228d67f7f482c 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118606 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
16cb3763c5a1dad7d6bcbf0fffdfc58c84b46f89 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118606 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
654d9ac45b96bde52852e564e68bb4108d4e8d8a 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Further MCize ARM constant pool values. This allows basic PIC references for
object file emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118601 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5df08d8f55f47aafc671c358d971dbcc10dfdeef 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Further MCize ARM constant pool values. This allows basic PIC references for
object file emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118601 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
3b01d74c7a56165855866afbddaa31ed7b45224c 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Add encoding of Rt to ARM LDR/STR w/ reg+reg offset encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118600 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e0ee08e367b6af33ef005bb1c6389c65453518b3 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Add encoding of Rt to ARM LDR/STR w/ reg+reg offset encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118600 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bc26159885d080dd66386a17dc7113e7d0ad12af 09-Nov-2010 Jim Grosbach <grosbach@apple.com> For ARM load/store instructions, encode [reg+reg] with no shifter immediate as
a left shift by zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118587 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
d92354c5742ea72abd3039cda5be37cc757d47d2 09-Nov-2010 Jim Grosbach <grosbach@apple.com> For ARM load/store instructions, encode [reg+reg] with no shifter immediate as
a left shift by zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118587 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
84b3b02c888bfe9abb2920c04610c43208a995b3 09-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM .word data fixups don't need an adjustment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118586 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a9a0dde8720d94f96c4e2888801c04c88cdb05cf 09-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM .word data fixups don't need an adjustment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118586 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
68291b0f3a96a589794b405196d237834bee4bf9 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Add encoder method for ARM load/store shifted register offset operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118513 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
54fea632b161f98e96ec7275922e35102bcecc5d 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Add encoder method for ARM load/store shifted register offset operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118513 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
f57da9342c48d3f09b86a62c1159e2eb955e31e4 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Add support for a few simple fixups to the ARM Darwin asm backend. This allows
constant pool references and global variable refernces to resolve properly
for object file generation. For example,

int x;
void foo(unsigned a, unsigned *p) {
p[a] = x;
}

can now be successfully compiled directly to an (ARM mode) object file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118469 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
679cbd3b215b1769a6035e334f9009aeeb940ddd 09-Nov-2010 Jim Grosbach <grosbach@apple.com> Add support for a few simple fixups to the ARM Darwin asm backend. This allows
constant pool references and global variable refernces to resolve properly
for object file generation. For example,

int x;
void foo(unsigned a, unsigned *p) {
p[a] = x;
}

can now be successfully compiled directly to an (ARM mode) object file.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118469 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMMCCodeEmitter.cpp
05c1e0cdbac50d55253182fe9a3f22110ce5ad4f 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Revert r118457 and r118458. These won't hold for GPRs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118462 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
5e559a22c18166508a01fbd65471ec4e752726f9 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Revert r118457 and r118458. These won't hold for GPRs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118462 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
0278827f2c43b6dd17426a3c1b482a1a90c601ee 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Get the register and count from the register list operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118458 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
4b97c55648a228305e28b4164dae9dcdebccdc8f 09-Nov-2010 Bill Wendling <isanbard@gmail.com> Get the register and count from the register list operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118458 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
ee5c435340414c3368baeea3e1bcff7632a43974 09-Nov-2010 Bill Wendling <isanbard@gmail.com> reglist has two operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118457 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3734ef3fb478cbae7baedfe009519a51db3b095e 09-Nov-2010 Bill Wendling <isanbard@gmail.com> reglist has two operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118457 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0285e65384d6868160f0602305fbdccaa9f9bfce 09-Nov-2010 Bill Wendling <isanbard@gmail.com> The "addRegListOperands()" function returns the start register and the total
number of registers in the list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118456 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
87f4f9a946549ad93046990a364ac5190333a7eb 09-Nov-2010 Bill Wendling <isanbard@gmail.com> The "addRegListOperands()" function returns the start register and the total
number of registers in the list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118456 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a031d8a072e7915a5823b5bbe2b4510adf6de254 09-Nov-2010 Owen Anderson <resistor@mac.com> Add support for ARM's specialized vector-compare-against-zero instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118453 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
c24cb3551ed66830b53362f593269873cb53a0c4 09-Nov-2010 Owen Anderson <resistor@mac.com> Add support for ARM's specialized vector-compare-against-zero instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118453 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
ae6e0c887b8dc864753f0791e8a9ef9535ecae95 08-Nov-2010 Bill Wendling <isanbard@gmail.com> Add "write back" bit encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118446 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
85c3f24da311ecb00d708bc95d52e4b48c9ecf84 08-Nov-2010 Bill Wendling <isanbard@gmail.com> Add "write back" bit encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118446 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
8b58c3a84e7e12df8b62831f1b2fe46eb8d48ffc 08-Nov-2010 Dale Johannesen <dalej@apple.com> Revert 118422 in search of bot verdancy.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118429 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
7179d1e5c0acfbb0980eaf85f266cd8981dbd12d 08-Nov-2010 Dale Johannesen <dalej@apple.com> Revert 118422 in search of bot verdancy.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118429 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
77c739945cd3ba53362864c55f0a0446bf6bb5f3 08-Nov-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Support -mcpu=cortex-a8 in ARM attributes - Has Fixme. 1 Test modified.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118422 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
69ad7138b7f8a884e0fb2ebf103c47d786ada8c7 08-Nov-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Support -mcpu=cortex-a8 in ARM attributes - Has Fixme. 1 Test modified.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118422 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
0d1c920a1f09c088ec029a0f08755afb76eee7bc 08-Nov-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Complete listing of ARM/MC/ELF relocation enums



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118413 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.h
6cecceb2f6900fa1197acce4c086a5c58dc21392 08-Nov-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Complete listing of ARM/MC/ELF relocation enums



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118413 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.h
286e89d08fa990df4faab15ab573f6e7d3ba0669 08-Nov-2010 Bill Wendling <isanbard@gmail.com> Make RegList an ASM operand so that TableGen will generate code for it. This is
an initial implementation and may change once reglists are fully fleshed out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118390 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5991487c10faa5f1c0cc815381d745150582a309 08-Nov-2010 Bill Wendling <isanbard@gmail.com> Make RegList an ASM operand so that TableGen will generate code for it. This is
an initial implementation and may change once reglists are fully fleshed out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118390 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8a76af6a9fe09099f2cb56eabd6f41f031c0aaad 08-Nov-2010 Bill Wendling <isanbard@gmail.com> Revert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118389 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b32e7844e9f79d2bd4ff34a1d19aba347f999abc 08-Nov-2010 Bill Wendling <isanbard@gmail.com> Revert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118389 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
391e949571b02bea54e082c8020d8d93616fde7e 07-Nov-2010 Bill Wendling <isanbard@gmail.com> In this context, a reglist is a reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118375 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e8399c6e01f5d53ddda361a5eb5952147bb25f94 07-Nov-2010 Bill Wendling <isanbard@gmail.com> In this context, a reglist is a reg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118375 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2f4760ebde80318c01def9f9b7640d82cd7e2970 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Add support for parsing register lists. We can't use a bitfield to keep track of
the registers, because the register numbers may be much greater than the number
of bits available in the machine's register.

I extracted the register list verification code out of the actual parsing of the
registers. This made checking for errors much easier. It also limits the number
of warnings that would be emitted for cascading infractions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118363 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e717610f53e0465cde198536561a3c00ce29d59f 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Add support for parsing register lists. We can't use a bitfield to keep track of
the registers, because the register numbers may be much greater than the number
of bits available in the machine's register.

I extracted the register list verification code out of the actual parsing of the
registers. This made checking for errors much easier. It also limits the number
of warnings that would be emitted for cascading infractions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118363 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ed0216bdad6919e5480c3abf038fdd136105676b 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Return the base register of a register list for the "getReg()" method. This is
to satisfy the ClassifyOperand method of the Asm matcher without having to add a
RegList type to every back-end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118360 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8155e5b753aca42973cf317727f3805faddcaf90 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Return the base register of a register list for the "getReg()" method. This is
to satisfy the ClassifyOperand method of the Asm matcher without having to add a
RegList type to every back-end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118360 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cda0350636a876dab8186aca1ccb8056da475afd 06-Nov-2010 Bill Wendling <isanbard@gmail.com> General cleanup:

- Make ARMOperand a class so that some things are internal to the class.
- Reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118357 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
146018fc6414eb2a1e67b2d8798a42a2f55ec96c 06-Nov-2010 Bill Wendling <isanbard@gmail.com> General cleanup:

- Make ARMOperand a class so that some things are internal to the class.
- Reformatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118357 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f41329ef997d9e000b48537f47ab446908f69030 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Add a RegList (register list) object to ARMOperand. It will be used soon to hold
(surprise!) a list of registers. Register lists are consecutive, so we only need
to record the start register plus the number of registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118351 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8d5acb7007decaf0c30bf4a3d4c55e5cc2cce0a7 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Add a RegList (register list) object to ARMOperand. It will be used soon to hold
(surprise!) a list of registers. Register lists are consecutive, so we only need
to record the start register plus the number of registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118351 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d79b12cd176dd5f05559770b71ad3fd7e7b8e9f3 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118341 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
12f40e9a6305fe7553ebce19346cb55874073fc7 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118341 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f88785ad0d60c11d68ebf8e33f441451aabeb22f 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118340 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a60f157b7c6fb60b33598fa5143ed8cb91aa5107 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Fix grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118340 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
54a49c15d0c66ab57fe4b53fc6fb664996685268 06-Nov-2010 Bill Wendling <isanbard@gmail.com> MatchRegisterName() returns 0 if it can't match the register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118339 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d68fd9c79eeb30980c18dc3f74b2da839bb259f3 06-Nov-2010 Bill Wendling <isanbard@gmail.com> MatchRegisterName() returns 0 if it can't match the register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118339 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
bba89fe20c43653b51833e09ae4c7f85725830e3 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Use TryParseRegister() instead of MatchRegisterName(). The former returns -1
while the latter doesn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118338 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1d6a26507bfd75758f5c8a29bccf577784ead751 06-Nov-2010 Bill Wendling <isanbard@gmail.com> Use TryParseRegister() instead of MatchRegisterName(). The former returns -1
while the latter doesn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118338 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a65c81e50c67504c740ab90e8f3caa81f7fefbd4 06-Nov-2010 Eric Christopher <echristo@apple.com> Make sure we have movw on the target before using it.

Fixes 8559.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118333 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5e262bc94342b4ce277206cb739b98b80b8b0d2b 06-Nov-2010 Eric Christopher <echristo@apple.com> Make sure we have movw on the target before using it.

Fixes 8559.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118333 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e745b1374ab8a9bc8e477a19927c2db578188bfb 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Hook up the '.code {16|32}' directive to the streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118310 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2a301704ea76535f0485d5c3b75664b323249bdb 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Hook up the '.code {16|32}' directive to the streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118310 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
eb1a4ca9168820d466a290657384d5f620eddf84 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Hook up the '.thumb_func' directive to the streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118307 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
642fc9c24ba7c43a4a962c6c05cfffce713d7de7 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Hook up the '.thumb_func' directive to the streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118307 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
38b40a962f4b843fd57e828d3d314190e146c0a8 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix past-o.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118304 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
83c4018fcca18fe9c281c3943fc58a17621636c4 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Fix past-o.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118304 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c74e86be08dc9b31392d1dd57555d51df6cdc3fd 05-Nov-2010 Jim Grosbach <grosbach@apple.com> MC'ize the '.code 16' and '.thumb_func' ARM directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118301 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ce79299f78bb04e76e1860ab119b85d69f3a19c7 05-Nov-2010 Jim Grosbach <grosbach@apple.com> MC'ize the '.code 16' and '.thumb_func' ARM directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118301 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c3e911ee314e6a33634fc5e646ecda96cded9fca 05-Nov-2010 Owen Anderson <resistor@mac.com> Disallow the certain NEON modified-immediate forms when generating vorr or vbic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118300 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
36fa3ea566c66b42e4dd7b4394be2f1e071647b8 05-Nov-2010 Owen Anderson <resistor@mac.com> Disallow the certain NEON modified-immediate forms when generating vorr or vbic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118300 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
04be6cbe163fbbc6dff7c99650040ff8a0084241 05-Nov-2010 Jim Grosbach <grosbach@apple.com> MC'ize simple ARMConstantValue entry emission (with a FIXME).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118295 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8da0a5785ce4f4b891fbe272177c6be14019bcc7 05-Nov-2010 Jim Grosbach <grosbach@apple.com> MC'ize simple ARMConstantValue entry emission (with a FIXME).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118295 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
aa03b79b6c46cbc9fcfafb016c35ad8b7587f8a7 05-Nov-2010 Owen Anderson <resistor@mac.com> Add codegen and encoding support for the immediate form of vbic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118291 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
080c09229739ec2b13f7bccc361994a8d26b4ed2 05-Nov-2010 Owen Anderson <resistor@mac.com> Add codegen and encoding support for the immediate form of vbic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118291 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
8b08f587372c756d2084c448cf259f0711fbfd38 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Enable MachO writing for ARM/Darwin. Lots of stuff still doesn't work
(relocations, e.g.), but this will allow simple things to flow through.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118289 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a55661b6bdb4a635c37cb3acfbf3bb09e1645de2 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Enable MachO writing for ARM/Darwin. Lots of stuff still doesn't work
(relocations, e.g.), but this will allow simple things to flow through.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118289 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
c148d4f949316acad6dad0f8a3ccdfe9bd1ba355 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Allow targets to specify the MachO CPUType/CPUSubtype information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118288 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
c9d1439051d130cfb947ef9ab4a95737c41e2fd1 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Allow targets to specify the MachO CPUType/CPUSubtype information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118288 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
3dcb461d1e721afdd2b90b24b8882f13da0dac2c 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6d87bca865eef4d08828029d973d844a6e992dff 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
05b343ad87802070ad17ed8a1c72ce521714ccbe 04-Nov-2010 Duncan Sands <baldrick@free.fr> In the calling convention logic, ValVT is always a legal type,
and as such can be represented by an MVT - the more complicated
EVT is not needed. Use MVT for ValVT everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118245 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMFastISel.cpp
1e96bab329eb23e4ce8a0dc3cc6b33a3f03d15bf 04-Nov-2010 Duncan Sands <baldrick@free.fr> In the calling convention logic, ValVT is always a legal type,
and as such can be represented by an MVT - the more complicated
EVT is not needed. Use MVT for ValVT everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118245 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMFastISel.cpp
4c4a48e7f8a68674552e761d5750e6bc48e58d9c 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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
c3f42e42a6b87d24db56c596250a0b4d0739035f 04-Nov-2010 Jim Grosbach <grosbach@apple.com> Add ARM fixup info for load/store label references. Probably will need a bit of
tweaking when we start using it for object file emission or JIT, but it's a
start.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118221 91177308-0d34-0410-b5e6-96231b3b80d8
RMFixupKinds.h
RMMCCodeEmitter.cpp
70933266ae73c891d9d1c2f0de72ecd1db8f86df 04-Nov-2010 Jim Grosbach <grosbach@apple.com> Add ARM fixup info for load/store label references. Probably will need a bit of
tweaking when we start using it for object file emission or JIT, but it's a
start.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118221 91177308-0d34-0410-b5e6-96231b3b80d8
RMFixupKinds.h
RMMCCodeEmitter.cpp
da542e4619f687ec9d18571a5b569d670384edc4 04-Nov-2010 Bill Wendling <isanbard@gmail.com> Add encoding for VSTR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118220 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
2f46f1f59c17040f7a2c970342f2f1dcc9b78319 04-Nov-2010 Bill Wendling <isanbard@gmail.com> Add encoding for VSTR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118220 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
5a4535cbcd5b2186a1e79b7937c2555ffc17f3d9 04-Nov-2010 Jim Grosbach <grosbach@apple.com> Teach ARM Target to use the tblgen support for generating an MC'ized
CodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118209 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
MakeLists.txt
akefile
806e80ef42bdb416f409142a1ff1d4e8752baac8 04-Nov-2010 Jim Grosbach <grosbach@apple.com> Teach ARM Target to use the tblgen support for generating an MC'ized
CodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118209 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
MakeLists.txt
akefile
37719467d6f6fd22d931496f5e61822af8cc2488 04-Nov-2010 Owen Anderson <resistor@mac.com> Covert VORRIMM to be produced via early target-specific DAG combining, rather than legalization.
This is both the conceptually correct place for it, as well as allowing it to be more aggressive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118204 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
60f4870c221d0496254c78c6e61bc00e4540fc1b 04-Nov-2010 Owen Anderson <resistor@mac.com> Covert VORRIMM to be produced via early target-specific DAG combining, rather than legalization.
This is both the conceptually correct place for it, as well as allowing it to be more aggressive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118204 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bc47beeb26cd1d56b42bb7e33f82cada92ebcff6 03-Nov-2010 Owen Anderson <resistor@mac.com> Add support for code generation of the one register with immediate form of vorr.
We could be more aggressive about making this work for a larger range of constants,
but this seems like a good start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118201 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
d966817f3cb87897cbec29c967b974924fe939ba 03-Nov-2010 Owen Anderson <resistor@mac.com> Add support for code generation of the one register with immediate form of vorr.
We could be more aggressive about making this work for a larger range of constants,
but this seems like a good start.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118201 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
9abfdcd75b21df5a856feb931028c3a772497de1 03-Nov-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118199 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
35b2de012d9404e3e9e4373e45f41711f752dd3a 03-Nov-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118199 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
1fc7fee3274fee338f3340adbe3074452576a1cd 03-Nov-2010 Eric Christopher <echristo@apple.com> Optimize generated code for integer materialization a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118192 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e5b13cfdd0fc6529f8e2b3704ccaf20369aec486 03-Nov-2010 Eric Christopher <echristo@apple.com> Optimize generated code for integer materialization a bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118192 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0ea841035daa0c15a4c17836c6bcaaa67b1effe9 03-Nov-2010 Owen Anderson <resistor@mac.com> Unlike a lot of NEON instructions, vext isn't _actually_ parameterized by element size. Instead,
all of the different element sizes are pseudo instructions that map down to vext.8 underneath, with
the immediate shifted left to reflect the increased element size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118183 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
7a25825033a53925f6039b77c4cb0b975026b4e1 03-Nov-2010 Owen Anderson <resistor@mac.com> Unlike a lot of NEON instructions, vext isn't _actually_ parameterized by element size. Instead,
all of the different element sizes are pseudo instructions that map down to vext.8 underneath, with
the immediate shifted left to reflect the increased element size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118183 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
50f5f6b7ddd9dafaa17f69a370d897613298247e 03-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add codegen patterns for VST1-lane instructions. Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118176 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d168cef6647c3a02e5b22d8d651e344af6b96fe2 03-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add codegen patterns for VST1-lane instructions. Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118176 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3fb89287dea2a6f61038d3e64dac94c54ecb1030 03-Nov-2010 Bob Wilson <bob.wilson@apple.com> Check for extractelement with a variable operand for the element number.
For NEON we had been assuming this was always an immediate constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118175 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3468c2ee20e26ded1a5182edcc72e36fb09c909b 03-Nov-2010 Bob Wilson <bob.wilson@apple.com> Check for extractelement with a variable operand for the element number.
For NEON we had been assuming this was always an immediate constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118175 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
465b5af7980d8ee7cdf82694791b2fb9748b4684 03-Nov-2010 Duncan Sands <baldrick@free.fr> Simplify uses of MVT and EVT. An MVT can be compared directly
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118169 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
cdfad36b401be6fc709ea4051f9de58e1a30bcc9 03-Nov-2010 Duncan Sands <baldrick@free.fr> Simplify uses of MVT and EVT. An MVT can be compared directly
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118169 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
08903968f7100c2693a113b25b86d2ff39f81b5a 03-Nov-2010 Duncan Sands <baldrick@free.fr> Inside the calling convention logic LocVT is always a simple
value type, so there is no point in passing it around using
an EVT. Use the simpler MVT everywhere. Rather than trying
to propagate this information maximally in all the code that
using the calling convention stuff, I chose to do a mainly
low impact change instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118167 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMFastISel.cpp
1440e8b918d7116c3587cb95f4f7ac7a0a0b65ad 03-Nov-2010 Duncan Sands <baldrick@free.fr> Inside the calling convention logic LocVT is always a simple
value type, so there is no point in passing it around using
an EVT. Use the simpler MVT everywhere. Rather than trying
to propagate this information maximally in all the code that
using the calling convention stuff, I chose to do a mainly
low impact change instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118167 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMFastISel.cpp
a1f6e33543f44e6c03a704ee6b650bfa6bd2ca89 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
RM.td
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMSubtarget.cpp
RMSubtarget.h
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
RM.td
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMSubtarget.cpp
RMSubtarget.h
8ea60bc4c322910d48ce1b1a1cf416e90268cc98 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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
isassembler/ThumbDisassemblerCore.h
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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassembler.cpp
isassembler/ThumbDisassemblerCore.h
6611dcc3423a34a8602c282684e6d418b96c3a9e 03-Nov-2010 Bill Wendling <isanbard@gmail.com> Put the PC encoding in the correct bit position.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118151 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
cdbbec43a837532d6a19e95320361c4b7c215a02 03-Nov-2010 Bill Wendling <isanbard@gmail.com> Put the PC encoding in the correct bit position.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118151 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
25487d9df40fc3bd9cfecfe114e4246fd46ab324 03-Nov-2010 Eric Christopher <echristo@apple.com> Invert these branches by default, it makes assembly comparisons a little
easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118148 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
000cf708effc247ff1e609d0703324b21585a4af 03-Nov-2010 Eric Christopher <echristo@apple.com> Invert these branches by default, it makes assembly comparisons a little
easier to read.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118148 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5a7b47f6e8f8f9ed702ad23497fa0123c722271d 03-Nov-2010 Bill Wendling <isanbard@gmail.com> The MC code couldn't handle ARM LDR instructions with negative offsets:

vldr.64 d1, [r0, #-32]

The problem was with how the addressing mode 5 encodes the offsets. This change
makes sure that the way offsets are handled in addressing mode 5 is consistent
throughout the MC code. It involves re-refactoring the "getAddrModeImmOpValue"
method into an "Imm12" and "addressing mode 5" version. But not to worry! The
majority of the duplicated code has been unified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118144 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrVFP.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
92b5a2eb1646b3c1173a5ff3c0073f24ed5ee6a4 03-Nov-2010 Bill Wendling <isanbard@gmail.com> The MC code couldn't handle ARM LDR instructions with negative offsets:

vldr.64 d1, [r0, #-32]

The problem was with how the addressing mode 5 encodes the offsets. This change
makes sure that the way offsets are handled in addressing mode 5 is consistent
throughout the MC code. It involves re-refactoring the "getAddrModeImmOpValue"
method into an "Imm12" and "addressing mode 5" version. But not to worry! The
majority of the duplicated code has been unified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118144 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrVFP.td
RMMCCodeEmitter.cpp
smParser/ARMAsmParser.cpp
nstPrinter/ARMInstPrinter.cpp
c8436f7fbf40ea841d5f43ba94f3cf48d391a46e 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118141 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
2915eb44301f1943df870efe37c424a6e8bdacfe 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118141 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
391ab2bde46e3f1542dedac9ce71d6c887f7da6e 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove the no longer used 'Modifier' optional operand to the ARM
printOperand() asm printer helper functions. rdar://8425198

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118140 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
0a2287b909634991a8e8aa7a93f81f09375227b1 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove the no longer used 'Modifier' optional operand to the ARM
printOperand() asm printer helper functions. rdar://8425198

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118140 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
5e3d24588bcca470142e76f4d14918c92347bda2 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118139 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
496e2b2908820348163e2271708c40e8e398315c 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118139 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
2cdfb732ae0708ee86b78da051e7abda10982dd3 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
6c35fb1a67dd7e4c71d1a3da6406908ab323577a 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Two sets of changes. Sorry they are intermingled.

1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
"optimize for latency". Call instructions don't have the right latency and
this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
not # of micro-ops since multi-latency instructions is completely executed
even when the predicate is false. Also, some instruction will be "slower"
when they are predicated due to the register def becoming implicit input.
rdar://8598427


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118135 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
8239daf7c83a65a189c352cce3191cdc3bbfe151 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Two sets of changes. Sorry they are intermingled.

1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
"optimize for latency". Call instructions don't have the right latency and
this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
not # of micro-ops since multi-latency instructions is completely executed
even when the predicate is false. Also, some instruction will be "slower"
when they are predicated due to the register def becoming implicit input.
rdar://8598427


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118135 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
51d074eb705869afc6a0aa27a39f7c43c86efe47 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Modify scheduling itineraries to correct instruction latencies (not operand
latencies) of loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118134 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
41957f6eb2271e5f1981b32a873d1b58217c6411 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Modify scheduling itineraries to correct instruction latencies (not operand
latencies) of loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118134 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
e862bb16d8ae4f796caa544a2b0e60ba089c6fca 03-Nov-2010 Eric Christopher <echristo@apple.com> Make sure we're only storing a single bit here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118126 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4c914125c4d1746dd2436cb5b1620efd6182f1db 03-Nov-2010 Eric Christopher <echristo@apple.com> Make sure we're only storing a single bit here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118126 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5a41e328034d22336dc079d46f3457228d6573a4 03-Nov-2010 Owen Anderson <resistor@mac.com> Revert r118097 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118121 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
f431edae5c0c79077451adb6fb0f406f7c7e5368 03-Nov-2010 Owen Anderson <resistor@mac.com> Revert r118097 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118121 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
d9f1faac9a76d2c18b01ff718cddde6c1042935e 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
6d4872f4dc11e8e0c46337eeaac07133ce3b6392 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Obsessive formatting changes. No functionality impact.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118103 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
0800ce71896ccd7f49b37861a8cfbc21b6b10022 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Obsessive formatting changes. No functionality impact.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118103 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
c559f0fb03cab01eb7ef24e208cde5dee9431b3d 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Omit unused parameter name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118099 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
d3a124db4dac3186148aaa4dc60161d30dcfce4c 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Omit unused parameter name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118099 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
0ba4accc5a694014fabd225aac0f460b4e71160b 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Simplify the EncodeInstruction method now that a lot of the special case stuff
is handled with the MC encoder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118098 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
7292e0a6564bb24707eff1c49da9044dd5eaec78 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Simplify the EncodeInstruction method now that a lot of the special case stuff
is handled with the MC encoder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118098 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
0bd06085cca33a63b2ca9ef431cac21f6a5f100f 02-Nov-2010 Owen Anderson <resistor@mac.com> Since these fields are not exactly equivalent to the encoded field, rename them to something with semantic meaning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118097 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
1ba6064437f7cae1d2cd1aa9c8dd50a78e8657e3 02-Nov-2010 Owen Anderson <resistor@mac.com> Since these fields are not exactly equivalent to the encoded field, rename them to something with semantic meaning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118097 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
620a4c21e78c9e6616f911b42a2af8b08f5ffa47 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Rename getAddrModeImm12OpValue to getAddrModeImmOpValue and expand it to work
with immediates up to 16-bits in size. The same logic is applied to other LDR
encodings, e.g. VLDR, but which use a different immediate bit width (8-bits in
VLDR's case). Removing the "12" allows it to be more generic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118094 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrVFP.td
RMMCCodeEmitter.cpp
5df0e0a61d6ac0e8dcf1a600bdc28d3e4a8db0ad 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Rename getAddrModeImm12OpValue to getAddrModeImmOpValue and expand it to work
with immediates up to 16-bits in size. The same logic is applied to other LDR
encodings, e.g. VLDR, but which use a different immediate bit width (8-bits in
VLDR's case). Removing the "12" allows it to be more generic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118094 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrVFP.td
RMMCCodeEmitter.cpp
b203fb2303fc4f88a4d2fc34d12fcb6fe6f4ddbf 02-Nov-2010 Owen Anderson <resistor@mac.com> Rename encoder methods to match naming convention.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118093 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
a2b50b300ec32dc223a82a256a3d93b8eaf41662 02-Nov-2010 Owen Anderson <resistor@mac.com> Rename encoder methods to match naming convention.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118093 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
1fafa35c9c842bee1a2ad7e738aa44b393c6afde 02-Nov-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for the remaining vst variants that we currently generate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118087 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b20594fce621a0b80132a575113c15ad33afc5e9 02-Nov-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for the remaining vst variants that we currently generate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118087 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
091a07af417de8b6c693780bf45ac8c7ffda4c58 02-Nov-2010 Owen Anderson <resistor@mac.com> Tentative encodings for the "single element from one lane" variant of vst1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118084 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e95c946aebbdf42bc637709bfa6899cf275cbe39 02-Nov-2010 Owen Anderson <resistor@mac.com> Tentative encodings for the "single element from one lane" variant of vst1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118084 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
cc41dc0ebd6cef8c8d2a11baea42d33d726d1375 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for basic variants for vst3 and vst4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118082 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a1a45fd25471e1121887b45ddc50f611f3c5f0aa 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for basic variants for vst3 and vst4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118082 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b6e22f527bff9c53edb6397e2e0769a837633d4e 02-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add NEON VST1-lane instructions. Partial fix for Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118069 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
d0c6bc220433fab06bc1507f963ea5883fdc4f69 02-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add NEON VST1-lane instructions. Partial fix for Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118069 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
51374b8d2438ae0bf20b21928a52a37cbf6b5455 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for the basic variants for vst2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118068 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d2f3794e4dba7a397eaae62114fffe46213c7d41 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for the basic variants for vst2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118068 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f4d678aae53f3e67e6b23e82e8f068ec50a0386b 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for the basic form of vst1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118067 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
cfebe3a8b1b5b4654761953a9b695901a1b8eaec 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for the basic form of vst1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118067 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b59ec6ca7f74d32744636e0498a406317f1fff3b 02-Nov-2010 Owen Anderson <resistor@mac.com> Factor out a common encoding class for loads and stores with a lane parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118055 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
d138d7034e8dcfbb55683116a854a1e42d6879a4 02-Nov-2010 Owen Anderson <resistor@mac.com> Factor out a common encoding class for loads and stores with a lane parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118055 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
7ff4fb9c15e492018ea578cb55df8faeabfa636a 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for the rest of the vld instructions that we generate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118053 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMMCCodeEmitter.cpp
f0ea0f2b1575868cd238391868d8f51370041303 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct encodings for the rest of the vld instructions that we generate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118053 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMMCCodeEmitter.cpp
979d96c2dc28c448b0fa371dcffc7fc29eec6291 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Sort bit assignments. Cosmetic change only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118029 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
28b108250d302cca8e71d13f2fe5d954c1d6c33a 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Sort bit assignments. Cosmetic change only.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118029 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
97f1ad08bad32690f482382201fba21040ec54e9 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Revert r114340 (improvements in Darwin function prologue/epilogue), as it broke
assumptions about stack layout. Specifically, LR must be saved next to FP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118026 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMMachineFunctionInfo.h
humb1RegisterInfo.cpp
ab3d00e5350fd4c097e2a5b077da7584692029a7 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Revert r114340 (improvements in Darwin function prologue/epilogue), as it broke
assumptions about stack layout. Specifically, LR must be saved next to FP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118026 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMMachineFunctionInfo.h
humb1RegisterInfo.cpp
1ecf448d79815235fc8d5ba8838a2ced577ebd96 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vld2, vld3, and vld4 basic variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117997 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
cf667be17b479fe276fd606b8fd72ccfa3065bb8 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vld2, vld3, and vld4 basic variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117997 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
849220554f8011978d22de887d18650395d91e27 02-Nov-2010 Eric Christopher <echristo@apple.com> Remove an assert - it's possible to be hit, and we just want to avoid
handling those cases for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117996 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4053e63a4b2f54446e29ef5bdad64e43b3bf52d6 02-Nov-2010 Eric Christopher <echristo@apple.com> Remove an assert - it's possible to be hit, and we just want to avoid
handling those cases for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117996 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b62cd2bd322a2bd8290860514ea896e08ff89d99 02-Nov-2010 Eric Christopher <echristo@apple.com> Whitespeace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117995 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
61d69da051f5e45ebca4b78f3cec21370de25061 02-Nov-2010 Eric Christopher <echristo@apple.com> Whitespeace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117995 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
24c58bc0e2000c7304d3b5e3d27e95ec7e375e3c 02-Nov-2010 Eric Christopher <echristo@apple.com> No really, no thumb1 for arm fast isel. Also add an informative comment as
to what someone would need to do to support thumb1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117994 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
aaa8df4cad59e41bebba47ce2b4c74c1f0a23c77 02-Nov-2010 Eric Christopher <echristo@apple.com> No really, no thumb1 for arm fast isel. Also add an informative comment as
to what someone would need to do to support thumb1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117994 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7a5e5e37c2d70b111072ab1c47d4536513996675 02-Nov-2010 Owen Anderson <resistor@mac.com> Attempt to provide correct encodings for a number of other vld1 variants, which we can't test
since we can neither generate nor parse them at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117988 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e85bd773e64e5e6e33a3c9b57129c4c4703ba82f 02-Nov-2010 Owen Anderson <resistor@mac.com> Attempt to provide correct encodings for a number of other vld1 variants, which we can't test
since we can neither generate nor parse them at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117988 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
58932668cea35e2d94e4675ef7d503a85afafcc6 02-Nov-2010 Owen Anderson <resistor@mac.com> Add aesthetic break.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117986 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
b552174a8c784299c476c3235c56a1eca88e2a23 02-Nov-2010 Owen Anderson <resistor@mac.com> Add aesthetic break.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117986 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
92ccf4e164683b68c5dfb8b66fb619a6c571ac86 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for the "multiple single elements" form of vld.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117984 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
d9aa7d30aa277fba319ee4bcdb862cd79f1aabe5 02-Nov-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for the "multiple single elements" form of vld.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117984 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
75c6ac64ad47d9bcfc923623c7be3211499d9886 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Explicitly check for non-consant reference in an LDRi12 instruction. Add FIXME
for handling the fixup necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117978 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
9af3d1c0dc2250793ada1ca6cfa98e9f1253f7f9 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Explicitly check for non-consant reference in an LDRi12 instruction. Add FIXME
for handling the fixup necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117978 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
be127d05f5580698d478a5b686532199023edc9e 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117977 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
a502423d1e4db0376ab3e1e45a7e9df79cc43952 02-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117977 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
8ba606daa503d4af7688d37eea00d5c847bcaab6 02-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for alignment operands on VLD1-lane instructions.
This is another part of the fix for Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117976 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
665814b6be3e44fdb84bcf1b7e5c933b60fbf280 02-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add support for alignment operands on VLD1-lane instructions.
This is another part of the fix for Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117976 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
f4eec5031ee9ccba75b159217cbe901249f8df5e 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Missed reverting this bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117971 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
cd944a424cbc15f9a83137a08f14c96bfe268bc5 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Missed reverting this bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117971 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
6e61c624543627a3c4597ff1478f9d1517213877 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Minor cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117969 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
160accad6b0c466fe7d9e18ea1eb63d4b26e0106 02-Nov-2010 Bill Wendling <isanbard@gmail.com> Minor cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117969 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7a5bb4807c5570753a80a7f1ff15b05a507b0dc1 01-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add NEON VLD1-lane instructions. Partial fix for Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117964 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
b796bbb6de19872c0c1921b8b3f05206dd33c97d 01-Nov-2010 Bob Wilson <bob.wilson@apple.com> Add NEON VLD1-lane instructions. Partial fix for Radar 8599955.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117964 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
28f7f4d40dd4b765dd9c77f2f4c0f8ca874d3a1c 01-Nov-2010 Bill Wendling <isanbard@gmail.com> Move the machine operand MC encoding patterns to the parent classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
c2bf50245f86805e95d01a243e7de3641c5ab7a8 01-Nov-2010 Bill Wendling <isanbard@gmail.com> Move the machine operand MC encoding patterns to the parent classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
53b2e23459e1c21c51bf220e7a548baf69217dfd 01-Nov-2010 Bill Wendling <isanbard@gmail.com> When we look at instructions to convert to setting the 's' flag, we need to look
at more than those which define CPSR. You can have this situation:

(1) subs ...
(2) sub r6, r5, r4
(3) movge ...
(4) cmp r6, 0
(5) movge ...

We cannot convert (2) to "subs" because (3) is using the CPSR set by
(1). There's an analogous situation here:

(1) sub r1, r2, r3
(2) sub r4, r5, r6
(3) cmp r4, ...
(5) movge ...
(6) cmp r1, ...
(7) movge ...

We cannot convert (1) to "subs" because of the intervening use of CPSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117950 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
40a5eb18b031fa1a5e9697e21e251e613d441cc5 01-Nov-2010 Bill Wendling <isanbard@gmail.com> When we look at instructions to convert to setting the 's' flag, we need to look
at more than those which define CPSR. You can have this situation:

(1) subs ...
(2) sub r6, r5, r4
(3) movge ...
(4) cmp r6, 0
(5) movge ...

We cannot convert (2) to "subs" because (3) is using the CPSR set by
(1). There's an analogous situation here:

(1) sub r1, r2, r3
(2) sub r4, r5, r6
(3) cmp r4, ...
(5) movge ...
(6) cmp r1, ...
(7) movge ...

We cannot convert (1) to "subs" because of the intervening use of CPSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117950 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0b76671fa0cc53d874ca88b382e3bd1cb5831be4 01-Nov-2010 Bob Wilson <bob.wilson@apple.com> NEON does not support truncating vector stores. Radar 8598391.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
24645a1a6d317acfc16303237704f32364fb2f0f 01-Nov-2010 Bob Wilson <bob.wilson@apple.com> NEON does not support truncating vector stores. Radar 8598391.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
56cadba21ed7d2fb1459a85f0b76ce9cdba264b5 01-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117936 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
469ebbe148b18a78963e8bc3fa7ae8e5700d8d27 01-Nov-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117936 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b86829a9a21a937381103bb9cc5cb842ffe49fbf 01-Nov-2010 Jim Grosbach <grosbach@apple.com> Add 'IsThumb' predicate to patterns marked as 'IsThumb1Only'. The latter gates
codegen using the patterns; the latter gates the assembler recognizing the
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117931 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
6797f89815d9e26ae6b6856273e6a96ff5e135ea 01-Nov-2010 Jim Grosbach <grosbach@apple.com> Add 'IsThumb' predicate to patterns marked as 'IsThumb1Only'. The latter gates
codegen using the patterns; the latter gates the assembler recognizing the
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117931 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
6898286c29fe741d57c1d2b93cf5b457bc761e4d 01-Nov-2010 Jim Grosbach <grosbach@apple.com> Mark ARM subtarget features that are available for the assembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117929 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
833c93c7958dbbd9d648f331091fbfbeabf342e6 01-Nov-2010 Jim Grosbach <grosbach@apple.com> Mark ARM subtarget features that are available for the assembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117929 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
c0fa459df9069566c3ce1a646333a89e0a7d3a8b 01-Nov-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117927 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d4462a5a4feae0293ca14376ff25d8bb72dd12a9 01-Nov-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117927 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3dd1cbe73ac70920e1580715618a596941411a85 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
RMInstrThumb2.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
RMInstrThumb2.td
abc59f047ea072c84adc1fa6f701f2261312c877 01-Nov-2010 Bill Wendling <isanbard@gmail.com> Move instruction encoding bits into the parent class and remove the temporary
*_Encode classes. These instructions are the only ones which use those classes,
so a subclass isn't necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117906 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
69661191ce9f4e8a2fa00391a0708905caccf52c 01-Nov-2010 Bill Wendling <isanbard@gmail.com> Move instruction encoding bits into the parent class and remove the temporary
*_Encode classes. These instructions are the only ones which use those classes,
so a subclass isn't necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117906 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
d5630c0c279382a70fc95c2ce97d28e5dd6d2c6c 01-Nov-2010 Chris Lattner <sabre@nondot.org> reject instructions that contain a \n in their asmstring. Mark
various X86 and ARM instructions that are bitten by this as isCodeGenOnly,
as they are.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117884 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
4d1189f3857c627a5e771207e486b00cb22c36be 01-Nov-2010 Chris Lattner <sabre@nondot.org> reject instructions that contain a \n in their asmstring. Mark
various X86 and ARM instructions that are bitten by this as isCodeGenOnly,
as they are.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117884 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
19634b2d42b66e6e5e9718f8adbaa9d6984642bc 31-Oct-2010 Chris Lattner <sabre@nondot.org> fix the !eq operator in tblgen to return a bit instead of an int.

Use this to make the X86 and ARM targets set isCodeGenOnly=1
automatically for their instructions that have Format=Pseudo,
resolving a hack in tblgen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117862 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
150d20e8fcadda6600bbb2e188c17a35b8ec7cbd 31-Oct-2010 Chris Lattner <sabre@nondot.org> fix the !eq operator in tblgen to return a bit instead of an int.

Use this to make the X86 and ARM targets set isCodeGenOnly=1
automatically for their instructions that have Format=Pseudo,
resolving a hack in tblgen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117862 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
f258fc2d6781c945b366838e0012f5bf20b7213f 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
db58982dcf4a5525ccb0542a6eac8213db785cdc 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
3bf6befe61f238194ab53c0b460d31d24ebd92b2 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
7a5bb18d0fee8c1ce32a0d161856337505962614 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
cd6d92367bd2a08e6455c6cd8713ba679b6c0fcc 30-Oct-2010 Eric Christopher <echristo@apple.com> Make sure we have a legal type (and simple) before continuing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117848 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
76d61478dff97d10ed01ae071f9fff1a24001009 30-Oct-2010 Eric Christopher <echristo@apple.com> Make sure we have a legal type (and simple) before continuing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117848 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9307dcddf8b61a3cd161ef3c2b40a6079014c505 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117787 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7644971232f21a5d5e232b72bc815ef26163e06d 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Add FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117787 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
b0fc3893740e5de4ba7342d102f0b9a501370100 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117782 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4aaf59d8ed5e565632314a1eeb7cf5a1fe1fdbe0 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117782 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e54264ce81ab1f28a3a8c40a0a93cc1e0c860c5f 30-Oct-2010 Chris Lattner <sabre@nondot.org> simplify this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117771 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
dba34d874d0ac8c334f03d770b80c6ee2f12808a 30-Oct-2010 Chris Lattner <sabre@nondot.org> simplify this code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117771 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
74a33b27463eefdf57e65ac2f7a60dad2b3fe4f7 30-Oct-2010 Chris Lattner <sabre@nondot.org> split MaybeParseRegister into its two logical uses, eliminating malloc+free traffic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117769 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e5658fa15ebb733e0786a96c1852c7cf590d5b24 30-Oct-2010 Chris Lattner <sabre@nondot.org> split MaybeParseRegister into its two logical uses, eliminating malloc+free traffic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117769 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b94eff0d0f262e753e122687d215feb7c227474c 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Avoid re-evaluating MI.getNumOperands() every iteration of the loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117766 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
4b5236c9660784ef09d355e0e4523d8b05fd14b1 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Avoid re-evaluating MI.getNumOperands() every iteration of the loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117766 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
81daf43d4cdb0f276efe03b615e77ee41d3e69d6 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
RMBaseInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.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
RMBaseInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
8e744e3ebcd112345c2abe72a28d308bf5e55d96 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Encode the register list operands for ARM mode LDM/STM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117753 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
6b5252db2db5eeeadec4602329ac56beb6dea54a 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Encode the register list operands for ARM mode LDM/STM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117753 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
62799ffc207b9f9054ce261ff9d8b211807462ef 30-Oct-2010 Bill Wendling <isanbard@gmail.com> Some instructions end with an "ls" prefix, but it doesn't indicate that they are
conditional. Check for those instructions explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117747 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
52925b60f1cd4cf810524ca05b00a207a926ab9f 30-Oct-2010 Bill Wendling <isanbard@gmail.com> Some instructions end with an "ls" prefix, but it doesn't indicate that they are
conditional. Check for those instructions explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117747 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2513dceb8c4a135b9dd9f24f5a439640f060cdd5 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
RMInstrThumb2.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
RMInstrThumb2.td
4ad47e374eb0ee8e3de2fd752fb06bbcd26243f6 30-Oct-2010 Jim Grosbach <grosbach@apple.com> 80 column fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117741 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
c4bc2111a75dc1ba2383a7021dc95750b3398efe 30-Oct-2010 Jim Grosbach <grosbach@apple.com> 80 column fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117741 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d8f6e42e51b99cddc618965c4c5ec46924bdb0cf 30-Oct-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117740 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
d8a11c25fa64c152628cfcf5f9d36eb60242b302 30-Oct-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117740 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
9bfe04956edacefd08e23c130d623b4dcdd15ac4 30-Oct-2010 Jim Grosbach <grosbach@apple.com> s/getNEONVcvtImm32/getNEONVcvtImm32OpValue/ to be consistent with other operand
encoder functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117738 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
0d2d2e92461781d11a8a055720e7ddfa4c8eee28 30-Oct-2010 Jim Grosbach <grosbach@apple.com> s/getNEONVcvtImm32/getNEONVcvtImm32OpValue/ to be consistent with other operand
encoder functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117738 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
51c1d4a748e88f79417e0976b53c1701d7f49b35 30-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix fpscr <-> GPR latency info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117737 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMScheduleA8.td
RMScheduleA9.td
e09206d4d7683e2a421104c5cb83f7808ba4b06e 30-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix fpscr <-> GPR latency info.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117737 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMScheduleA8.td
RMScheduleA9.td
8c7dc4348d7fb9745f998a806bfdc53d33191018 29-Oct-2010 Jim Grosbach <grosbach@apple.com> add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117718 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3df518e67edaf358154af394cc99d21435b7b118 29-Oct-2010 Jim Grosbach <grosbach@apple.com> add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117718 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
222da5d31f0a1423ec94d6252a1d36236cd26ba8 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Convert ARM::MOVi2pieces to a true pseudo-instruction and expand it in
the ARMExpandPseudos pass rather than during the asm lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117714 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMExpandPseudoInsts.cpp
RMInstrInfo.cpp
RMInstrInfo.td
8e0a3eb95784c76f3a73abf815a0143613068f72 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Convert ARM::MOVi2pieces to a true pseudo-instruction and expand it in
the ARMExpandPseudos pass rather than during the asm lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117714 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMExpandPseudoInsts.cpp
RMInstrInfo.cpp
RMInstrInfo.td
82575e011ca82b1a4a89860a48c0f49d20a75000 29-Oct-2010 Eric Christopher <echristo@apple.com> Handle comparison values we already have - this fixes the consumer-typeset
failure for llvm-gcc on arm fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117710 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0e6233bfd75a12b9e56507086a37816240ca877a 29-Oct-2010 Eric Christopher <echristo@apple.com> Handle comparison values we already have - this fixes the consumer-typeset
failure for llvm-gcc on arm fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117710 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
64da73d968671c9c6f9df67342cd16f64ef01d04 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM::MOVi32imm is expanded in ARMExpandPseudoInsts, so there's no need to
handle it in the asm lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117707 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a3c1629ff58812250de8848c42bfd3dbb5098436 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM::MOVi32imm is expanded in ARMExpandPseudoInsts, so there's no need to
handle it in the asm lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117707 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
64e19824c18ae7fa4e3c497ed859afa19f25126b 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117703 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e317b13a2d3c2ae6eb462f7c7ecfc45663750116 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117703 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3507570425e390334c876c634250920f5648e42c 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM encoding information for CLREX, SWP and SWPB. Add comment for sjlj pseudos and a FIXME for TLS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117702 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
f32ecc69e51b45bd5c0ec93b393aee535f43c66a 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM encoding information for CLREX, SWP and SWPB. Add comment for sjlj pseudos and a FIXME for TLS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117702 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
aa4b1bfd5615a0186faabd8f6b7eda2b8e6e68bb 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM mode LDREX*/STREX* binary encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117695 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
86875a2463be6c0ac4df121c3319e3e1f73dcdda 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM mode LDREX*/STREX* binary encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117695 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
e8e0b0722a5492cb8436dcb8d57849e9411d08c6 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding information for ARM conditional move instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117687 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
27e900888e3ce05233eceef995ed8847353f6109 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding information for ARM conditional move instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117687 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d9818d9f3d989f528a4ae03fa3f3a826a066c9b7 29-Oct-2010 Evan Cheng <evan.cheng@apple.com> Avoiding overly aggressive latency scheduling. If the two nodes share an
operand and one of them has a single use that is a live out copy, favor the
one that is live out. Otherwise it will be difficult to eliminate the copy
if the instruction is a loop induction variable update. e.g.

BB:
sub r1, r3, #1
str r0, [r2, r3]
mov r3, r1
cmp
bne BB

=>

BB:
str r0, [r2, r3]
sub r3, r3, #1
cmp
bne BB

This fixed the recent 256.bzip2 regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117675 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
089751535d6e9adf65842e2ca5867bf9a70e1e95 29-Oct-2010 Evan Cheng <evan.cheng@apple.com> Avoiding overly aggressive latency scheduling. If the two nodes share an
operand and one of them has a single use that is a live out copy, favor the
one that is live out. Otherwise it will be difficult to eliminate the copy
if the instruction is a loop induction variable update. e.g.

BB:
sub r1, r3, #1
str r0, [r2, r3]
mov r3, r1
cmp
bne BB

=>

BB:
str r0, [r2, r3]
sub r3, r3, #1
cmp
bne BB

This fixed the recent 256.bzip2 regression.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117675 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2bf1ccefc98fa5a0aed0b997fa18ad5eeaf0aa1c 29-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Don't schedule nodes with only MVT::Flag and MVT::Other values for latency.
- Compute CopyToReg use operand latency correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117674 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d7e473c629a5e4fb1584fb5c5c1b0c1e142fdc8f 29-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Don't schedule nodes with only MVT::Flag and MVT::Other values for latency.
- Compute CopyToReg use operand latency correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117674 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a0f84fa67baf067119047380157293165f09417c 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Handle ARM addrmode5 instructions with an offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117672 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
80eb233a3ce1a6f2e6c0847cb3e456d735e37569 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Handle ARM addrmode5 instructions with an offset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117672 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
baaadc0c041f03553dd0a1b3327395480c3dd7c7 29-Oct-2010 John Thompson <john.thompson.jtsoftware@gmail.com> Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117667 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
44ab89eb376af838d1123293a79975aede501464 29-Oct-2010 John Thompson <John.Thompson.JTSoftware@gmail.com> Inline asm multiple alternative constraints development phase 2 - improved basic logic, added initial platform support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117667 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
57c3f4fc5dc37ddb8ba0026db0db6eed4a5dc536 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Revert 117660. Apparently it's not as trivial as that...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117663 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d8d716fad3eefce98fac5a76a70250d89fcf9a20 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Revert 117660. Apparently it's not as trivial as that...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117663 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7394cfa8dbb4b5eceb1e38ff56d18a7a7a227561 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM addrmode5 instructions have neither writeback nor post-indexed modes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117660 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
da54c6dd4f4e54d654722390311bdab502badc3a 29-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM addrmode5 instructions have neither writeback nor post-indexed modes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117660 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e6ab23f37a074b658eb0962d6329bf8a610b0b59 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117651 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
16c7425cff6ac3d0a4a9c56779bdfa91b2e8e863 29-Oct-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117651 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
20f45f07f15886725d4e89c77ff947a3a9d8b538 29-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> ARMAsmParser: Plug a memory leak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117648 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
61a4d56a03c051834ee25d8248fa9f434e7e8c19 29-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> ARMAsmParser: Plug a memory leak.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117648 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ebc772c2d549bc596c3553990b51d3060c0b7411 29-Oct-2010 Eric Christopher <echristo@apple.com> Add an unreachable to silence warning - the switch is actually
fully enumerated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117647 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c223e2b10b4753a63dfe7e6980c650b179139983 29-Oct-2010 Eric Christopher <echristo@apple.com> Add an unreachable to silence warning - the switch is actually
fully enumerated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117647 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5fb3b7fca47d8e6b9d94af56a9b8d546f0b8569a 29-Oct-2010 Chris Lattner <sabre@nondot.org> add simple support for addrmode5 operands, allowing
vldr.64 to work. I have no idea if this is fully right, but
it is in the right direction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
14b93851cc7611ae6c2000f1c162592ead954420 29-Oct-2010 Chris Lattner <sabre@nondot.org> add simple support for addrmode5 operands, allowing
vldr.64 to work. I have no idea if this is fully right, but
it is in the right direction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smParser/ARMAsmParser.cpp
ca209b7e9d30d9c0065c94675444234335ac8095 28-Oct-2010 Chris Lattner <sabre@nondot.org> give better error diagnostics, for example:

t.s:1:14: error: invalid operand for instruction
vldr.64 d17, [r0]
^

instead of:

t.s:1:1: error: unrecognized instruction
vldr.64 d17, [r0]
^



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117611 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e73d4f8ec7af68fc0f67811e4e004562ab538014 28-Oct-2010 Chris Lattner <sabre@nondot.org> give better error diagnostics, for example:

t.s:1:14: error: invalid operand for instruction
vldr.64 d17, [r0]
^

instead of:

t.s:1:1: error: unrecognized instruction
vldr.64 d17, [r0]
^



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117611 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
8aee3f10dd8cfec46d0beb1581e63b86b4310621 28-Oct-2010 Chris Lattner <sabre@nondot.org> hook up getOpcodeName for ARM so that "llc -show-mc-inst" includes
the opcode string in the inst dump, e.g.:
vmov r2, r3, d17 @ encoding: [0x31,0x2b,0x53,0xec]
@ <MCInst #989 VMOVRRD
@ <MCOperand Reg:68>
@ <MCOperand Reg:69>
@ <MCOperand Reg:19>
@ <MCOperand Imm:14>
@ <MCOperand Reg:0>>

The "VMOVRRD" is new.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117609 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
6274ec48b3a3e1fbaf3a359868d53a76f20a4245 28-Oct-2010 Chris Lattner <sabre@nondot.org> hook up getOpcodeName for ARM so that "llc -show-mc-inst" includes
the opcode string in the inst dump, e.g.:
vmov r2, r3, d17 @ encoding: [0x31,0x2b,0x53,0xec]
@ <MCInst #989 VMOVRRD
@ <MCOperand Reg:68>
@ <MCOperand Reg:69>
@ <MCOperand Reg:19>
@ <MCOperand Imm:14>
@ <MCOperand Reg:0>>

The "VMOVRRD" is new.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117609 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
ff341a00bd32474f3d5f00e05c3bba0a7c9cfd57 28-Oct-2010 Chris Lattner <sabre@nondot.org> move a method out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117605 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fa42fad8bf7b0058ba031a275e1e8ce53b2cb1ad 28-Oct-2010 Chris Lattner <sabre@nondot.org> move a method out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117605 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
75a503f2b099b45ab991976436f974862fe871d3 28-Oct-2010 Chris Lattner <sabre@nondot.org> remove the rest of hte owningptr's, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117603 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
550276ee5bb3e115d4d81156dceffb9d3d78823a 28-Oct-2010 Chris Lattner <sabre@nondot.org> remove the rest of hte owningptr's, no functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117603 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ae56607709f815c0b4b305ebcaf51497f07055e2 28-Oct-2010 Jim Grosbach <grosbach@apple.com> PLD, PLDW, PLI encodings, plus refactor their use of addrmode2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
ab682a2090f795d0b67f29889622da0a74cd97c3 28-Oct-2010 Jim Grosbach <grosbach@apple.com> PLD, PLDW, PLI encodings, plus refactor their use of addrmode2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
3a8e9696997a8e15fecb2fe88a098d5acd8eb0c6 28-Oct-2010 Chris Lattner <sabre@nondot.org> rearrange ParseRegisterList.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117560 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c0ddfaa134fe60c09686906b3a8f489531653453 28-Oct-2010 Chris Lattner <sabre@nondot.org> rearrange ParseRegisterList.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117560 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d07f95acf87b7b1ea2ab557ad67f31f48a5f4a06 28-Oct-2010 Chris Lattner <sabre@nondot.org> refactor some code to simplify it, eliminating some owningptr's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117559 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3a69756e392942bc522193f38d7f33958ed3b131 28-Oct-2010 Chris Lattner <sabre@nondot.org> refactor some code to simplify it, eliminating some owningptr's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117559 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1c84f66defee7f096924b517f08b401a6d88054d 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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMScheduleA9.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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMScheduleA9.td
9c25d0a6067d2770fb86a0a0ffeb4ac57a2f6c1d 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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMScheduleA9.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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMScheduleA9.td
9b76f895552a9beaf5227722ba0fc581da1607b1 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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMScheduleA9.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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMScheduleA9.td
12f17ed2f11df462996a2aec58ff194931c77c99 28-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vtbl and vtbx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117513 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
cfd0e1f3ae97ac20b92649b4a6c75930b1f8b19e 28-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vtbl and vtbx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117513 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ffb791d782f639b2c54cd72e61fbb388d93c9406 28-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vext, vtrn, vuzp, and vzip.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117512 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3eff4af42ddbac97807348eadd292ff5f276fe69 28-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vext, vtrn, vuzp, and vzip.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117512 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
759896d89df9f554538ec7bd94787380da7356b2 28-Oct-2010 Bob Wilson <bob.wilson@apple.com> Fix compiler warnings about signed/unsigned comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117511 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1fa9d301a83569e8b0f4224097e0869c8a06f879 28-Oct-2010 Bob Wilson <bob.wilson@apple.com> Fix compiler warnings about signed/unsigned comparisons.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117511 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
33c79277a205027b67c0f615d3025e5e6392fb62 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Shifter ops are not always free. Do not fold them (especially to form
complex load / store addressing mode) when they have higher cost and
when they have more than one use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117509 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
f40deed62f4f0126459ed7bfd1799f4e09b1aaa7 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Shifter ops are not always free. Do not fold them (especially to form
complex load / store addressing mode) when they have higher cost and
when they have more than one use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117509 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
f9ea7dde3e92919ea1716e38c1ad3aac7bb7a9bb 28-Oct-2010 Jim Grosbach <grosbach@apple.com> Refactor ARM STR/STRB instruction patterns into STR{B}i12 and STR{B}rs, like
the LDR instructions have. This makes the literal/register forms of the
instructions explicit and allows us to assign scheduling itineraries
appropriately. rdar://8477752

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117505 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMFastISel.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
7e3383c007f53b3a00675af225e428cb66ddf404 28-Oct-2010 Jim Grosbach <grosbach@apple.com> Refactor ARM STR/STRB instruction patterns into STR{B}i12 and STR{B}rs, like
the LDR instructions have. This makes the literal/register forms of the
instructions explicit and allows us to assign scheduling itineraries
appropriately. rdar://8477752

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117505 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMFastISel.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
16a78721a9a60678667fbada8f8d3e4a016f4618 28-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for NEON vcvt, which has its own special immediate encoding
for specifying fractional bits for fixed point conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117501 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
498ec20703c89d0c2890b0967791f0f5f2b59a2f 28-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for NEON vcvt, which has its own special immediate encoding
for specifying fractional bits for fixed point conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117501 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrNEON.td
RMMCCodeEmitter.cpp
ea78cafaeb6cc121cbe1a9de384a8556d9b3459b 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117496 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6b15639e267575a2c95f89d6b266e0fcd9231d91 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117496 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2648baadf69171dcc003aafddc9fede8b23c3d2e 27-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for the get_lane and set_lane variants of vmov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117495 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
d2fbdb7f5c85d2191514953bdba0fae7b788e623 27-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for the get_lane and set_lane variants of vmov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117495 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
86524951ec98dee8f6dd930da6902b6abafde2c6 27-Oct-2010 Jim Grosbach <grosbach@apple.com> JIT imm12 encoding for constant pool entry references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117483 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
ccf72caa92ba03fcaf348f9d8c7d14eb5738a31e 27-Oct-2010 Jim Grosbach <grosbach@apple.com> JIT imm12 encoding for constant pool entry references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117483 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
162cec8eae0dea7c65303386bc0414b5b43f9f55 27-Oct-2010 Bob Wilson <bob.wilson@apple.com> SelectionDAG shuffle nodes do not allow operands with different numbers of
elements than the result vector type. So, when an instruction like:

%8 = shufflevector <2 x float> %4, <2 x float> %7, <4 x i32> <i32 1, i32 0, i32 3, i32 2>

is translated to a DAG, each operand is changed to a concat_vectors node that appends 2 undef elements. That is:

shuffle [a,b], [c,d] is changed to:
shuffle [a,b,u,u], [c,d,u,u]

That's probably the right thing for x86 but for NEON, we'd much rather have:

shuffle [a,b,c,d], undef

Teach the DAG combiner how to do that transformation for ARM. Radar 8597007.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117482 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f20700ca773acb0d79ce69ad5834e00884ad31f0 27-Oct-2010 Bob Wilson <bob.wilson@apple.com> SelectionDAG shuffle nodes do not allow operands with different numbers of
elements than the result vector type. So, when an instruction like:

%8 = shufflevector <2 x float> %4, <2 x float> %7, <4 x i32> <i32 1, i32 0, i32 3, i32 2>

is translated to a DAG, each operand is changed to a concat_vectors node that appends 2 undef elements. That is:

shuffle [a,b], [c,d] is changed to:
shuffle [a,b,u,u], [c,d,u,u]

That's probably the right thing for x86 but for NEON, we'd much rather have:

shuffle [a,b,c,d], undef

Teach the DAG combiner how to do that transformation for ARM. Radar 8597007.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117482 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
08db1849b78a233df0b965cb723b8e81e8457d68 27-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM JIT fix for LDRi12 and company.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117478 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
f31430f6ecea74681a53d1e4cb64b0f93635fc58 27-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM JIT fix for LDRi12 and company.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117478 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
119ab1e696e8598417c180540e2c9a86851d2817 27-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vdup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117475 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
f587a9352a80bc62d9d521d5051c69d1fefecca7 27-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vdup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117475 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
4dcf14aadbfaa68953607b11dc5008f7a0cce1ae 27-Oct-2010 Jim Grosbach <grosbach@apple.com> The new LDR* instruction patterns should handle the necessary encoding of
operands in the TableGen'erated bits, so we don't need to do the additional
magic explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117461 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
093177d5cde06dcb63829320f12195c32485a6d1 27-Oct-2010 Jim Grosbach <grosbach@apple.com> The new LDR* instruction patterns should handle the necessary encoding of
operands in the TableGen'erated bits, so we don't need to do the additional
magic explicitly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117461 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
f9e0bc96b43264280564d36212a35f3c72af4ce9 27-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vsli and vsri.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117459 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0745c389d903bf9d8a8705ff49bea818a6be6c52 27-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vsli and vsri.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117459 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
134fc4be37ee4e3d065c741914c54953a639b766 27-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vsra and vrsra.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117458 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
dd31ed67e67ffa9c7817d96d69e98c0eab8d1e90 27-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vsra and vrsra.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117458 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
aac41af01f1e73d8fcc86a4fea2006c9f8366a05 27-Oct-2010 Jim Grosbach <grosbach@apple.com> The immediate operands of an LDRi12 instruction doesn't need the addrmode2
encoding tricks. Handle the 'imm doesn't fit in the insn' case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117454 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
063efbf569e46776093ddf50099c98fdbb362167 27-Oct-2010 Jim Grosbach <grosbach@apple.com> The immediate operands of an LDRi12 instruction doesn't need the addrmode2
encoding tricks. Handle the 'imm doesn't fit in the insn' case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117454 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
20a934901bf3c119dab32c9da3dc6a722c7d08e7 27-Oct-2010 Jim Grosbach <grosbach@apple.com> LDRi12 machine instructions handle negative offset operands normally (simple
integer values), not with the addrmode2 encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117429 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
nstPrinter/ARMInstPrinter.cpp
77aee8e22c36257716c2df2f275724765704f20c 27-Oct-2010 Jim Grosbach <grosbach@apple.com> LDRi12 machine instructions handle negative offset operands normally (simple
integer values), not with the addrmode2 encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117429 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
nstPrinter/ARMInstPrinter.cpp
7a6ca274b860b2a4b431cff58592bfe594cebfc2 27-Oct-2010 Jim Grosbach <grosbach@apple.com> One more spot where the new arm mode LDR instruction representation
doesn't need the additional addrmode2 register operand. Missed it the first
time around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117421 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
f85dd04bfaba4b7d57833d576127439628cb2931 27-Oct-2010 Jim Grosbach <grosbach@apple.com> One more spot where the new arm mode LDR instruction representation
doesn't need the additional addrmode2 register operand. Missed it the first
time around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117421 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
26add5beb46ea01a903e3f2ebce235d452be90da 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Split ARM::LDRB into LDRBi12 and LDRBrs. Adjust accordingly. Continuing on
rdar://8477752.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117419 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFastISel.cpp
RMInstrInfo.cpp
RMInstrInfo.td
c1d30212e911d1e55ff6b25bffefb503708883c3 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Split ARM::LDRB into LDRBi12 and LDRBrs. Adjust accordingly. Continuing on
rdar://8477752.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117419 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMFastISel.cpp
RMInstrInfo.cpp
RMInstrInfo.td
2964f10a37f43f383d668a28d0ec3f42101b0053 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Since I parameterized this bit, I should probably actually use said parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117418 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
28e3fe961f2c4d6ce5317770f660c56cae3d2ec6 27-Oct-2010 Jim Grosbach <grosbach@apple.com> Since I parameterized this bit, I should probably actually use said parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117418 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e0575bb95eb09385d756e63241bb5086e92adcd5 27-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vqshl, vqshrn, vqshrun, vqrshl, vqshrn, and vqrshrun.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117411 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
86ed2324a6d2fa54d22afa96520de9e7c9fba28d 27-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vqshl, vqshrn, vqshrun, vqrshl, vqshrn, and vqrshrun.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117411 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f39c0c29d39e1b49391b1cf69f026ae330d734a3 27-Oct-2010 Jim Grosbach <grosbach@apple.com> First part of refactoring ARM addrmode2 (load/store) instructions to be more
explicit about the operands. Split out the different variants into separate
instructions. This gives us the ability to, among other things, assign
different scheduling itineraries to the variants. rdar://8477752.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117409 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
RMMCCodeEmitter.cpp
nstPrinter/ARMInstPrinter.cpp
3e5561247202bae994dd259a2d8dc4eff8f799f3 27-Oct-2010 Jim Grosbach <grosbach@apple.com> First part of refactoring ARM addrmode2 (load/store) instructions to be more
explicit about the operands. Split out the different variants into separate
instructions. This gives us the ability to, among other things, assign
different scheduling itineraries to the variants. rdar://8477752.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117409 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMFastISel.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
RMMCCodeEmitter.cpp
nstPrinter/ARMInstPrinter.cpp
61fc7978c680b19bfb7d97e6d55d23779de17930 26-Oct-2010 Owen Anderson <resistor@mac.com> Correct NEON encodings for vshrn, vrshl, vrshr, vrshrn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117402 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
632c235a316e38e5d0c6d66498064bc3e391fab1 26-Oct-2010 Owen Anderson <resistor@mac.com> Correct NEON encodings for vshrn, vrshl, vrshr, vrshrn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117402 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
42a946a67108aff039e90e3b0ef78ce2d243c898 26-Oct-2010 Owen Anderson <resistor@mac.com> Simplify classes for shift instructions, which are never commutable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117398 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ac92262b61368d32a2435ab7ab17e68c82dfadd1 26-Oct-2010 Owen Anderson <resistor@mac.com> Simplify classes for shift instructions, which are never commutable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117398 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
868e1b24881262ae2c33ed236b6c97295b2854c8 26-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vshl, register and immediate forms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117394 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
3557d00a388585b8827d3e864cb8cd24ee42368a 26-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vshl, register and immediate forms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117394 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
e052f6574c25f9d94e14f84e5a5cc9a6657fbb65 26-Oct-2010 Jim Grosbach <grosbach@apple.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117388 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
0eb7d06ab12bd66d04ea2329f71ceb2e8022f83a 26-Oct-2010 Jim Grosbach <grosbach@apple.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117388 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
88f689ec95297d17374817f4e66dc528576b8ed8 26-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke extraneous comment. It's applicable elsewhere, but not in this func.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117387 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c3baf62800b149bbd966e5dcd11bce498f428b72 26-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke extraneous comment. It's applicable elsewhere, but not in this func.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117387 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
746c17a29ba8dd07962eb7f53e390b83a4649c57 26-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encoding for vpadal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117380 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
bc4118bd36d90bf7fba68d6b274afb089f295e98 26-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encoding for vpadal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117380 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b811e9f3ed71b10ed8aa0b5358dcb88dd40d83e9 26-Oct-2010 Owen Anderson <resistor@mac.com> Add NEON encodings for vmov and vmvn of immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117374 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
a88ea03bf22ba098f1b7d3471d98f3303dcbd33f 26-Oct-2010 Owen Anderson <resistor@mac.com> Add NEON encodings for vmov and vmvn of immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117374 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
b674a439d5771e3e9fd6874261263e3c845e5fe2 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> Use instruction itinerary to determine what instructions are 'cheap'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117348 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
c8141dfc7f983cb04e65d8acd6bcbdc8e4b8a0ae 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> Use instruction itinerary to determine what instructions are 'cheap'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117348 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
7014ec913509a830f1f2c3cdc44069d49d6eb208 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> NEON vmov's are in Neon domain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117347 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
0e9996ca94ac84c10aeddfb9b6300b2b89b08fe2 26-Oct-2010 Evan Cheng <evan.cheng@apple.com> NEON vmov's are in Neon domain.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117347 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
d5629ba7c887c6af40d56199ae892b0945bd6a0c 26-Oct-2010 Bob Wilson <bob.wilson@apple.com> Tidy up redundant check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117331 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
b3a6817d06ab88f410012b5c5cc17fc4f07058c3 26-Oct-2010 Bob Wilson <bob.wilson@apple.com> Tidy up redundant check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117331 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
549c7a3a26421ab124acb61530d1a9aa8612573b 26-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Produce the headers directly in the Finish method. This allows us to use
the existing streamer methods that are endian safe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117323 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
3336384239e563bdc5f3dbb8affec6c1e9ffbc47 26-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Produce the headers directly in the Finish method. This allows us to use
the existing streamer methods that are endian safe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117323 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2d88e9b93d3df7e98ad2494c5500637237f8faef 25-Oct-2010 Owen Anderson <resistor@mac.com> Add correct encodings for NEON vabal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117315 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5258b619667c54d3f07c12031fa0d75595a25527 25-Oct-2010 Owen Anderson <resistor@mac.com> Add correct encodings for NEON vabal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117315 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8b230969f52dad57e5749a4e8cf300296c5c7196 25-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vaba.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117309 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
410aebc670ea1ae0412dc2bbe0b4b79f25e53ce0 25-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vaba.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117309 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
89880a03240e2b76c67f8bb3e220cd50debc0c07 25-Oct-2010 Shih-wei Liao <sliao@google.com> Enabling bcc to do host-side cross-compile. So we can soon do a build-time preopt, similar to dexopt.

Change-Id: I82085a058bfc61a0dfcf6394e59f12986b728c76
isassembler/Android.mk
1d4b6e31212c9cbdbaa0cb6fc310de178276d438 25-Oct-2010 Owen Anderson <resistor@mac.com> Attempt to provide correct encodings for NEON vbit and vbif, even though we can't test them at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117294 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
31e6ed890a5336779fa191a98af1fc0513380180 25-Oct-2010 Owen Anderson <resistor@mac.com> Attempt to provide correct encodings for NEON vbit and vbif, even though we can't test them at the moment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117294 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f65436f35dcdb1d675266d772d6e3457160077ea 25-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vbsl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117293 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4110b4325da839e17dae901996b2263a1c672c87 25-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vbsl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117293 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
638d1ca07a09c765bd088465d991df39cfdf818f 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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
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
RMInstrThumb2.td
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
316194f7a2b84dda91624c57fcca3588309c1ded 25-Oct-2010 Owen Anderson <resistor@mac.com> Add correct instruction encodings for vbic, vorn, and vmvn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117282 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
162875a9f3be40bfccc07c29ea4ad19f599b9ee4 25-Oct-2010 Owen Anderson <resistor@mac.com> Add correct instruction encodings for vbic, vorn, and vmvn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117282 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
c95b18e74a6307055622ff0f6adfd52f5b3d8228 25-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a virtual destructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4921e2356ef8f3b3f9ebd0c154b091c3d5dd2ce4 25-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a virtual destructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
31385c81e48178a332da4738bc7257e989cd1459 25-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vand, veor, and vorr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117279 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
8c71eff59439708a61a2c65919ccf9c2791d1f1b 25-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vand, veor, and vorr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117279 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
2843791b39af563edc3cb12340cd5557022c48cb 25-Oct-2010 Owen Anderson <resistor@mac.com> Add NEON encoding tests for vcgt and vacgt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117276 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d0c5b6170f97aff20dbc1e7f24e56a7cfdcb653c 25-Oct-2010 Owen Anderson <resistor@mac.com> Add NEON encoding tests for vcgt and vacgt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117276 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9100a0c00cb340fad7a918343373814c60f30ddf 25-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for emitting ARM file attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117275 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMBuildAttrs.h
cecbc3d28277ff4916326311cbf87335ed05d106 25-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for emitting ARM file attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117275 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
RMAsmPrinter.cpp
RMBuildAttrs.h
ee07255730ce63803c7e76a4a9fbe38dd2fc9a3a 25-Oct-2010 Owen Anderson <resistor@mac.com> Add tests for NEON encodings of vcge and vacge.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117274 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
10c15e5d584d8f9ee44740eca3991a63bb45a90d 25-Oct-2010 Owen Anderson <resistor@mac.com> Add tests for NEON encodings of vcge and vacge.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117274 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1c3451623acf65d36cf937999b8a3d654e1fd5fb 25-Oct-2010 Owen Anderson <resistor@mac.com> Add a warning about our inability to test the encoding of vceq with immediate zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117273 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4fe20bbd668528a82254e4fb9152daa4d30af684 25-Oct-2010 Owen Anderson <resistor@mac.com> Add a warning about our inability to test the encoding of vceq with immediate zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117273 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
84284868627fd84ad2a70828c5423c26f3683e8a 12-Oct-2010 Bob Wilson <bob.wilson@apple.com> PR8359: The ARM backend may end up allocating registers D16 to D31 when
"-mattr=+vfp3" is specified. However, this will not work for hardware that
only supports 16 registers. Add a new flag to support -"mattr=+vfp3,+d16".
Patch by Jan Voung!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116310 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMRegisterInfo.td
RMSubtarget.cpp
RMSubtarget.h
39571b6c608d92496df41b2cf01cbfd79f645351 23-Oct-2010 Eric Christopher <echristo@apple.com> Move rejection of NEON parameters earlier in fast isel call processing,
note that we can actually handle some f64 arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117209 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a4633f5d7458f4d04e4bf89be48d3b14e1fae044 23-Oct-2010 Eric Christopher <echristo@apple.com> Move rejection of NEON parameters earlier in fast isel call processing,
note that we can actually handle some f64 arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117209 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a70d37154f528d30af1c320fd2888974e949dac4 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Move the remaining attribute macros to systematic names based on the attribute
name and prefixed with 'LLVM_'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117203 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
19e57025d458d3cb50804fd821fd89b868a819bd 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Move the remaining attribute macros to systematic names based on the attribute
name and prefixed with 'LLVM_'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117203 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
61c583f564379ef0dce4ae770450a3ab65c94c74 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Switch attribute macros to use 'LLVM_' as a prefix. We retain the old names
until other LLVM projects using these are cleaned up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117200 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
100c267249d1d03c4f96eede9877a4f9f54f2247 23-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Switch attribute macros to use 'LLVM_' as a prefix. We retain the old names
until other LLVM projects using these are cleaned up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117200 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
b0fb18dd0edc43750f124e9c62b7c1a42633b3e2 23-Oct-2010 Evan Cheng <evan.cheng@apple.com> Enable ARM fastcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117194 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5c2d428f43e83912e8f20e6f917fe11236741bfb 23-Oct-2010 Evan Cheng <evan.cheng@apple.com> Enable ARM fastcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117194 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
39ab4ffb397f1695f74a3f0408476f43cf2db294 23-Oct-2010 Evan Cheng <evan.cheng@apple.com> Latency between CPSR def and branch is zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117192 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
dd9dd6f857604abdeb5213648ffe50c10ccc59b9 23-Oct-2010 Evan Cheng <evan.cheng@apple.com> Latency between CPSR def and branch is zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117192 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
fe28399f15ff797837190cfd008b15b42beabc47 23-Oct-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117188 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a9a968d1ef199ba113e63ef0928d266123203fb8 23-Oct-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117188 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6c93a37e3d99f220b4261aadc8a1141a954c7604 23-Oct-2010 Gabor Greif <ggreif@gmail.com> fix memory-layout assumption which only holds on little-endian systems

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117176 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
41f31ef28eb10e6938e491987e3c1d74742ea520 23-Oct-2010 Gabor Greif <ggreif@gmail.com> fix memory-layout assumption which only holds on little-endian systems

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117176 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
889a7718ef1a8daf816a0e2d4c6a5ec2113d15b7 23-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM mode encoding information for CLZ, RBIT, REV*, and PKH*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117165 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
f8da5f5dfa5e847d76bf20d0ec4940e3ca51d275 23-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM mode encoding information for CLZ, RBIT, REV*, and PKH*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117165 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
19694bcf496c44bd130a947ed2dcf4219da590f5 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Transfer implicit ops when forming load multiple and return instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117151 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
b179b46cc558c720d23a066c768bad71f975eb93 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Transfer implicit ops when forming load multiple and return instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117151 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ab95b475706b2cd8d2d65aed14b619d7fcbf30de 22-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vqdmlal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117134 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9b264972734a96b7956d3ff7ad6d7b5dcf5baf39 22-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vqdmlal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117134 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ae04b160aef1c8d7fa8b81af3ad73c83b52a4cb1 22-Oct-2010 Jim Grosbach <grosbach@apple.com> Add the encoding information for the rest of the ARM mode multiply instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117133 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
385e136dce9f77ad949f54277b33b31c0d1f1588 22-Oct-2010 Jim Grosbach <grosbach@apple.com> Add the encoding information for the rest of the ARM mode multiply instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117133 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cba865d02ff96797849b5ef6d4afda1e39c9b5d7 22-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for NEON vmlal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117131 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
92205842ca21952929eef1571a9b5b6c758540e0 22-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct encodings for NEON vmlal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117131 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
151955782797b345201b84a3bee1a9c5a4c82296 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117128 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1f8b40d51c0e1bb7fce5a69c2fadc656bfef3092 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117128 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6249ff562403a21fffe869d7c4777a39bc6091c8 22-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vmla.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117126 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
18341e9e31b95ff865530e04662f540e2cdf3382 22-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vmla.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117126 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
53895dc78a01908964f0097572cb204dfa0ac922 22-Oct-2010 Jim Grosbach <grosbach@apple.com> More ARM multiply instuction binary encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117121 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
3870b750e6d8af533926138e670f4643a5953e42 22-Oct-2010 Jim Grosbach <grosbach@apple.com> More ARM multiply instuction binary encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117121 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
de6850078d82b519d7063961728815ead281b27f 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add fastcc cc: pass and return VFP / NEON values in registers. Controlled by -arm-fastcc for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117119 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
76f920d316dc6a9e5e77c8e36f9312d1708e376b 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add fastcc cc: pass and return VFP / NEON values in registers. Controlled by -arm-fastcc for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117119 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
75bc3537410d8911225a6b115ba9809256243648 22-Oct-2010 Jim Grosbach <grosbach@apple.com> Parameterize a bit of ARM encoding information, simplifying some instruction
definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117114 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
929a7056d8fa54a45471d2861034e3faa11e232e 22-Oct-2010 Jim Grosbach <grosbach@apple.com> Parameterize a bit of ARM encoding information, simplifying some instruction
definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117114 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
68706787649a67e1b60fc5221014ef2032e39dbe 22-Oct-2010 Jim Grosbach <grosbach@apple.com> More ARM multiply instruction encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117108 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
9463d0e400d4bac590960ba5593d7850870f7187 22-Oct-2010 Jim Grosbach <grosbach@apple.com> More ARM multiply instruction encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117108 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
324a6e60434f1486a273d458801cd2a5bf897710 22-Oct-2010 Wesley Peck <peckw@wesleypeck.com> Making the e_machine configurable by the target backend in ELFObjectWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117099 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
eecb858ca86fa949c06f819d6127e2ac68d165c8 22-Oct-2010 Wesley Peck <peckw@wesleypeck.com> Making the e_machine configurable by the target backend in ELFObjectWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117099 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
502d3260380621c3f3eefff5c0f6dffdae3cd85d 22-Oct-2010 Eric Christopher <echristo@apple.com> Add some basic ret instruction support to arm fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117085 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4f512efee9198eb38bf190b0c3fe50429a065d15 22-Oct-2010 Eric Christopher <echristo@apple.com> Add some basic ret instruction support to arm fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117085 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
848c950d0857b4a7c93dbee3669744f002dac9f3 22-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM binary encoding for some of the multiply instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117080 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f50af8b5b87c8f8af0ef5bea17d5c09145e603a7 22-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM binary encoding for some of the multiply instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117080 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
264f3008d8853ec73757a25290af8e0dd0f0b43d 22-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM binary encodings for MVN variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117076 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3686046a2cad2e3d62c7fbee9aadae1bf242fa4a 22-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM binary encodings for MVN variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117076 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d6eaaca5d353ffb9936b7ed95333e5b08f095a53 22-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM Binary encoding information for BFC/BFI instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117072 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
3fea19105d4929ad694f0b6272de31924c9f9f09 22-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM Binary encoding information for BFC/BFI instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117072 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
24c792186d46fad9566dced3560e6fddeaa44001 21-Oct-2010 Eric Christopher <echristo@apple.com> These don't need to be virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117068 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1778772d1ba9a434dc98a96cbb1b97028d6cd49c 21-Oct-2010 Eric Christopher <echristo@apple.com> These don't need to be virtual.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117068 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
84ee7410380ba441c35ed4bed2ccb4e3a52b2f5f 21-Oct-2010 Owen Anderson <resistor@mac.com> Move the encoding logic for Q registers into getMachineOpValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117060 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMMCCodeEmitter.cpp
90d4cf931477b497553a9f2d0ed53377dd5dd88c 21-Oct-2010 Owen Anderson <resistor@mac.com> Move the encoding logic for Q registers into getMachineOpValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117060 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMMCCodeEmitter.cpp
4fed4fe9661ad5a924ab5b16ffbbe9af3f74ea72 21-Oct-2010 Owen Anderson <resistor@mac.com> ARM encodes Q registers as 2xregno (i.e. the number of the D register that corresponds to the lower
half of the Q register), rather than with just regno. This allows us to unify the encodings for
a lot of different NEON instrucitons that differ only in whether they have Q or D register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117056 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMInstrFormats.td
RMInstrNEON.td
d451f888b85d01caa586b0d45bacb41836fd2c31 21-Oct-2010 Owen Anderson <resistor@mac.com> ARM encodes Q registers as 2xregno (i.e. the number of the D register that corresponds to the lower
half of the Q register), rather than with just regno. This allows us to unify the encodings for
a lot of different NEON instrucitons that differ only in whether they have Q or D register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117056 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMInstrFormats.td
RMInstrNEON.td
f7a1d96e192555ed915694011cf3aedf9ea28009 21-Oct-2010 Eric Christopher <echristo@apple.com> Handle storing args to the stack for calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117055 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5b924809e4a62ddc0221cd355e834ecec22bbf40 21-Oct-2010 Eric Christopher <echristo@apple.com> Handle storing args to the stack for calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117055 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3d27e168afcb40195a43cc6c770908f5dec85b95 21-Oct-2010 Eric Christopher <echristo@apple.com> More load/store refactoring, call reg+offset simplification from within
the emitter to handle the addresses. Only simplify the offset if we need
to - also fix bug where in addrmode 5 we weren't dividing the offset by
4, which showed up due to not always lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117051 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
212ae937bb9b52bb1f27f02cb0c28496c4d1e2b9 21-Oct-2010 Eric Christopher <echristo@apple.com> More load/store refactoring, call reg+offset simplification from within
the emitter to handle the addresses. Only simplify the offset if we need
to - also fix bug where in addrmode 5 we weren't dividing the offset by
4, which showed up due to not always lowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117051 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
83134cbec8dc2102211223c1429e507889482f42 21-Oct-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117050 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3ab5658a127d78c4bcf2b4a69fb838f14f833f0a 21-Oct-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117050 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
582ec605747376a33a1c0adbbbee0c150f370e80 21-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vhadd and vrhadd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117047 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1e93466c3a5556db0bd87755e10e2938c2a43c1f 21-Oct-2010 Owen Anderson <resistor@mac.com> Add correct NEON encodings for vhadd and vrhadd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117047 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
79b09c92d03e49100aa896926f0d251c1ccce50c 21-Oct-2010 Owen Anderson <resistor@mac.com> Add correct encodings for NEON vaddw.s* and vaddw.u*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117040 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9d50559bae511cd75ea61efb7189e4b954ab4175 21-Oct-2010 Owen Anderson <resistor@mac.com> Add correct encodings for NEON vaddw.s* and vaddw.u*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117040 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
70f4bb6f4aedebe57c1f342e648d302aa1d1d895 21-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vaddl.u* and vaddl.s*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117039 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e0e6dc3f4ec31c98f6860c56cad406d3882db428 21-Oct-2010 Owen Anderson <resistor@mac.com> Provide correct NEON encodings for vaddl.u* and vaddl.s*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117039 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
22032b23faae599c46b70d8074e6e18911791223 21-Oct-2010 Duncan Sands <baldrick@free.fr> The return value of this call is not used, so no point
in assigning it to a variable (gcc-4.6 warning).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117024 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
dbbd99faf1d661f03a9dfc1551d7537c34d64bee 21-Oct-2010 Duncan Sands <baldrick@free.fr> The return value of this call is not used, so no point
in assigning it to a variable (gcc-4.6 warning).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117024 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
64e3d440c0311c5f12ad8b286b1db0d8d1f48831 21-Oct-2010 Andrew Trick <atrick@apple.com> putback r116983 and fix simple-fp-encoding.ll tests


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116992 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
5b7a825ec5551fd1dff8c9f280cc203da3fdedd9 21-Oct-2010 Andrew Trick <atrick@apple.com> putback r116983 and fix simple-fp-encoding.ll tests


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116992 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
7eda5e481d44f7f8d32ef0386ed731559cb0e9f3 21-Oct-2010 Owen Anderson <resistor@mac.com> Revert r116983, which is breaking all the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116987 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
d9707e3d852622197133a73dcb788a7fcd364015 21-Oct-2010 Owen Anderson <resistor@mac.com> Revert r116983, which is breaking all the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116987 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
adf3ce0c20eef93999643fa0dbacd7f3d214fb69 21-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add missing scheduling itineraries for transfers between core registers and VFP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116983 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
d6865de2d205d501e20d312ac66463be57dc44a1 21-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add missing scheduling itineraries for transfers between core registers and VFP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116983 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
a3281b83e2ff2893bc55ab69b3ac69140ce237ae 21-Oct-2010 Owen Anderson <resistor@mac.com> Implement correct encodings for NEON vadd, both integer and floating point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116981 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d7795540d0538fb79e70d0519858d463ac4375af 21-Oct-2010 Owen Anderson <resistor@mac.com> Implement correct encodings for NEON vadd, both integer and floating point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116981 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
41d387eae8d4204ed77578efe2f729b1c1a9112d 21-Oct-2010 Eric Christopher <echristo@apple.com> Custom lower f64 args passed in integer registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116977 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2d8f6fe610fa859370c38cfbe38ff809a3a417de 21-Oct-2010 Eric Christopher <echristo@apple.com> Custom lower f64 args passed in integer registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116977 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4da55a384402b2c67a426b7d66d15360ea5b29b4 21-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encoding for moving a value between two ARM core registers and a doublework
extension register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116970 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
01aabdac44af241a9a70c3d6ef8d5007e3e80ce1 21-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encoding for moving a value between two ARM core registers and a doublework
extension register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116970 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2f37e157aafd3c7495d74e6081e598bc3a19db9e 21-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for movement between ARM core registers and single-precision
registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116961 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
7d31a169af3c49f54e8dd59bb3a75b37afad890b 21-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for movement between ARM core registers and single-precision
registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116961 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
2af133efaa100bfa78b45517a1c9a422a0b191b0 21-Oct-2010 Dale Johannesen <dalej@apple.com> Fix crash introduced in 116852. 8573915.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116955 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e4d31593c5b0693480e697d7aeb0a24edcf53870 21-Oct-2010 Dale Johannesen <dalej@apple.com> Fix crash introduced in 116852. 8573915.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116955 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6586b37895f3b5f81ee931c3c5b6432c4311ff3f 20-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Remove remaining uses of ATTRIBUTE_UNUSED on variables, and delete three
#includes in the process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116919 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1cd9708f5cc13995a4e84ef498e4162a47f8b4f5 20-Oct-2010 Chandler Carruth <chandlerc@gmail.com> Remove remaining uses of ATTRIBUTE_UNUSED on variables, and delete three
#includes in the process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116919 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e70edf893e5e61a41db7298c8678c00873f2fb65 20-Oct-2010 Eric Christopher <echristo@apple.com> Fix a TODO by removing some unnecesary copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116915 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3659ac22c0dcb64d69aa9b80d9979caf0cab2e4f 20-Oct-2010 Eric Christopher <echristo@apple.com> Fix a TODO by removing some unnecesary copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116915 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e55933d0aa8c7d75a8b9ad254fd35cabcb846f70 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Fix backwards conditional.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116897 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
b8e67fc92b0a508e3782b782baa98a6d56d5d7ea 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Fix backwards conditional.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116897 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
6978ccafa38030a6ef71e19a4337190656946dc3 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Add dynamic realignment when rematerializing the base register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116886 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
8b95c3ebfbd492c2ac863df93e40c11fc2e914fd 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Add dynamic realignment when rematerializing the base register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116886 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
a9d3b097b4cca190eda88ea3d7c6db829fd3e6de 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke a commented out bit that got missed a while back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116883 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f6d7df6f21abcf15cfa10a6ac7fbb2f7c959093d 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke a commented out bit that got missed a while back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116883 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
06c918d2981b0b470eb4e25642150303264381e8 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do any
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116879 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
humb1RegisterInfo.cpp
e4ad387a5a88dae20f0f7578e55170bbc8eee2a9 20-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do any
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116879 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
humb1RegisterInfo.cpp
ebe92ab52810713fe79e53bfdf3ce1869ccc84e3 19-Oct-2010 Jim Grosbach <grosbach@apple.com> Update comments to remove obsolete references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116863 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
8155ea4c3a656d32b0ddd93de6e7bbca4ace867a 19-Oct-2010 Jim Grosbach <grosbach@apple.com> Update comments to remove obsolete references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116863 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
a2aaae34d15fc9e8010bdd69f5f58b7926779f4b 19-Oct-2010 Dale Johannesen <dalej@apple.com> Enable using vdup for vector constants which are splat of
integers by default, and remove the controlling flag, now
that LICM will hoist such vdup's. 8003375.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116852 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
575cd148cedec66af0adc266c5d7ecdbe1641d7e 19-Oct-2010 Dale Johannesen <dalej@apple.com> Enable using vdup for vector constants which are splat of
integers by default, and remove the controlling flag, now
that LICM will hoist such vdup's. 8003375.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116852 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
21e36b85449fb02a67f818137045fb6b919e78c9 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-enable register pressure aware machine licm with fixes. Hoist() may have
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116845 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
2312842de0c641107dd04d7e056d02491cc781ca 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-enable register pressure aware machine licm with fixes. Hoist() may have
erased the instruction during LICM so UpdateRegPressureAfter() should not
reference it afterwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116845 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
1ea11fd65ecb7650ec9346aa24e1b716af04a59a 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Revert r116781 "- Add a hook for target to determine whether an instruction def
is", which breaks some nightly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116816 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
98694138025fdb0cec0cda5727201ad00ded3d63 19-Oct-2010 Daniel Dunbar <daniel@zuster.org> Revert r116781 "- Add a hook for target to determine whether an instruction def
is", which breaks some nightly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116816 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
ca4762cf48c713cfeda2ca8262853590c25e2a1d 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add a hook for target to determine whether an instruction def is
"long latency" enough to hoist even if it may increase spilling. Reloading
a value from spill slot is often cheaper than performing an expensive
computation in the loop. For X86, that means machine LICM will hoist
SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
instructions.
- Enable register pressure aware machine LICM by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116781 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
11e8b74a7ae9ecd59b64180a59143e39bc3b9514 19-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add a hook for target to determine whether an instruction def is
"long latency" enough to hoist even if it may increase spilling. Reloading
a value from spill slot is often cheaper than performing an expensive
computation in the loop. For X86, that means machine LICM will hoist
SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON
instructions.
- Enable register pressure aware machine LICM by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116781 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
0d9ab2b69eab06125e83e90d49ab4aeaaaa8e2d4 19-Oct-2010 Bob Wilson <bob.wilson@apple.com> Support alignment for NEON vld-lane and vst-lane instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116776 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3454ed9545d10064d84e45ad9a9ea26dddc255ba 19-Oct-2010 Bob Wilson <bob.wilson@apple.com> Support alignment for NEON vld-lane and vst-lane instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116776 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
442972471d2bdf42adf6c431c81272654999eb91 19-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM encoding information for [SU]SAT* instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116768 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
70987fbc60a8e6788668f44eba56c34ef17c7672 19-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM encoding information for [SU]SAT* instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116768 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ef22a13c3afc82eeb7cfd0da8c6389cce9aa0a0e 19-Oct-2010 Eric Christopher <echristo@apple.com> Revert r116220 - thus turning arm fast isel back on by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116762 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6e5367d6a35e7d4cde8ddb8d56b706d5b8dffbd0 19-Oct-2010 Eric Christopher <echristo@apple.com> Revert r116220 - thus turning arm fast isel back on by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116762 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
48c2c93170baeb4c25558777774c8bd5eb51ac94 18-Oct-2010 Bill Wendling <isanbard@gmail.com> Don't recompute MachineRegisterInfo in the Optimize* method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116750 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
b41ee96d76ccf1eec2fd898def4cfd7c16868708 18-Oct-2010 Bill Wendling <isanbard@gmail.com> Don't recompute MachineRegisterInfo in the Optimize* method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116750 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
ee87fbe536d77d59616e3922a89985248ce176af 18-Oct-2010 Jim Grosbach <grosbach@apple.com> For Thumb2, try to use frame pointer references for stack slots even when a
base register is available. rdar://8525298

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116729 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
5c57639c283479a7b1c66e27a745d31b310291c4 18-Oct-2010 Jim Grosbach <grosbach@apple.com> For Thumb2, try to use frame pointer references for stack slots even when a
base register is available. rdar://8525298

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116729 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e1cf4e2d274f45f9fd3a2db61f8ec77828064da3 18-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM addrmode4 instructions (ldm, stm and friends) can't encode an immediate
offset for stack references. Make sure we take that into account when
deciding whether to reserver an emergency spill slot for the register
scavenger. rdar://8559625

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116714 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
0f0127f4a686ed55e5b8344d576999259f8c2297 18-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM addrmode4 instructions (ldm, stm and friends) can't encode an immediate
offset for stack references. Make sure we take that into account when
deciding whether to reserver an emergency spill slot for the register
scavenger. rdar://8559625

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116714 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
902a96d9d420880a0eb8b99d2c6774c9397c1eee 18-Oct-2010 Jim Grosbach <grosbach@apple.com> Grammar tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116712 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e038a206df7df6f799be8e3a308101b77a3414ce 18-Oct-2010 Jim Grosbach <grosbach@apple.com> Grammar tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116712 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
960dfa264fbf0ee4de6b5366fc76252ac65674fb 18-Oct-2010 Eric Christopher <echristo@apple.com> Remove the check for invalid calling conventions. Testing shows that they're
working just fine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116698 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4cf34c6c041cebc1d816d178654c6bbb7737cc4e 18-Oct-2010 Eric Christopher <echristo@apple.com> Remove the check for invalid calling conventions. Testing shows that they're
working just fine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116698 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fe9c44207ddc57ef5c25da738f799251b426f932 18-Oct-2010 Eric Christopher <echristo@apple.com> Lift arg promotion from the X86 backend. This should be unified at some point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116694 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fa87d6675212d5ca04725b7e541156f58c4ab40b 18-Oct-2010 Eric Christopher <echristo@apple.com> Lift arg promotion from the X86 backend. This should be unified at some point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116694 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
89313fdc6461b1ace33b2d7f10328025e5671e89 17-Oct-2010 Eric Christopher <echristo@apple.com> Now that we handle all allocas via a non-SP reg offset remove all of the
special case handling for ARM::SP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116688 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
404be0c04f8a984e21f650c2bcd7b277c6fa6a84 17-Oct-2010 Eric Christopher <echristo@apple.com> Now that we handle all allocas via a non-SP reg offset remove all of the
special case handling for ARM::SP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116688 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bf3066497b14bfcb327122ee22f21a68195cf9f5 17-Oct-2010 Eric Christopher <echristo@apple.com> Allow more load types to be materialized through the allocas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116683 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ec8bf972f5a270c80c7dca05151c9063be646e2b 17-Oct-2010 Eric Christopher <echristo@apple.com> Allow more load types to be materialized through the allocas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116683 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
39e561285e94219d97ff1ba23ffd10d153d5f7ad 17-Oct-2010 Eric Christopher <echristo@apple.com> Optimize GEP off of intermediate allocas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116681 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d56d61af0190ee8024eb71dd4138ed7861f20adc 17-Oct-2010 Eric Christopher <echristo@apple.com> Optimize GEP off of intermediate allocas.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116681 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8ef49aa3ce3ff4cffc801154ada968ac93e6cb72 17-Oct-2010 Eric Christopher <echristo@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116680 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7208dbf2d58a8eeff755907494d77af052db207b 17-Oct-2010 Eric Christopher <echristo@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116680 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e8e7d0198cdd46ada3d069b6d64a523409c8114e 17-Oct-2010 Eric Christopher <echristo@apple.com> Turn on AddOperator folding in GEP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116679 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dc0b0ef6cd593a7eb502ca0842fa1f653cb68140 17-Oct-2010 Eric Christopher <echristo@apple.com> Turn on AddOperator folding in GEP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116679 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fe6a2943cb3e514642f71bb703320dc36d96ee50 17-Oct-2010 Eric Christopher <echristo@apple.com> Use the i12 immediate versions of the load instructions - they're handled
more in the post-passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116678 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
45c607134b396ebdb8eb0cefe831e6ab2e37deac 17-Oct-2010 Eric Christopher <echristo@apple.com> Use the i12 immediate versions of the load instructions - they're handled
more in the post-passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116678 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
41bee2a4296949ca0d3dd6e83726efdcf96cf0b1 16-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a MCObjectFormat class so that code common to all targets that use a
single object format can be shared.

This also adds support for

mov zed+(bar-foo), %eax

on ELF and COFF targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116675 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
f230df9af4012f9510de664b6d62b128e26a5861 16-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a MCObjectFormat class so that code common to all targets that use a
single object format can be shared.

This also adds support for

mov zed+(bar-foo), %eax

on ELF and COFF targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116675 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
ad001767b03b71a2b993999244f25932c6e4eefd 16-Oct-2010 Eric Christopher <echristo@apple.com> Fix some funky formatting that got through.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116653 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
47650ece374315ce4ff5e483f6165ae37752f230 16-Oct-2010 Eric Christopher <echristo@apple.com> Fix some funky formatting that got through.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116653 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
aac45b3f7244c975f23f170ea10e8d9d24ec17fa 16-Oct-2010 Bill Wendling <isanbard@gmail.com> ARMCodeEmitter::emitMiscInstruction is dead. Long live
ARMCodeEmitter::emitMiscInstruction!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116644 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
07fda9f9b61c7f072987bbc2731690f6b5d5fd5c 16-Oct-2010 Bill Wendling <isanbard@gmail.com> ARMCodeEmitter::emitMiscInstruction is dead. Long live
ARMCodeEmitter::emitMiscInstruction!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116644 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
a0e37a131229159615bd028fce9b0bb398bc6332 16-Oct-2010 Eric Christopher <echristo@apple.com> Make sure offset is 0 for load/store register to the stack call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116640 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
c9a91fdaf99a138e9d0aee648c7bc5d04ac385cd 16-Oct-2010 Eric Christopher <echristo@apple.com> Make sure offset is 0 for load/store register to the stack call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116640 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
12e4cd62feb46991247f07e40ee4b6653a7613bb 16-Oct-2010 Eric Christopher <echristo@apple.com> Formatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116635 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.h
00ed59a968f3a41c36c5c01f6b3215f539d679a8 16-Oct-2010 Eric Christopher <echristo@apple.com> Formatting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116635 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.h
50aa85ad232c366aa1a7f6f7eed974f1f00784ba 16-Oct-2010 Eric Christopher <echristo@apple.com> Fix else if -> if in store machinery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116628 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
315030ca74f7c3cf8bf7f7d29da667ac9fc45bb0 16-Oct-2010 Eric Christopher <echristo@apple.com> Fix else if -> if in store machinery.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116628 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4bdc3ababa80019f0fa14cebd579a3bc9b74fa2e 15-Oct-2010 Bill Wendling <isanbard@gmail.com> Reformatting. No functionalogicality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116625 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2695d8edd132b19e6a598e0a784205cdc4c12d09 15-Oct-2010 Bill Wendling <isanbard@gmail.com> Reformatting. No functionalogicality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116625 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
793ab52691dd8800d0ab6bc5865538ab25f1daeb 15-Oct-2010 Eric Christopher <echristo@apple.com> Refactor ARM fast-isel reg + offset to be a base + offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116622 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a32242564220e66a4f0fea8c173b0094ded2aa5e 15-Oct-2010 Eric Christopher <echristo@apple.com> Refactor ARM fast-isel reg + offset to be a base + offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116622 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a66e845b571af4ed717626dc04fc3e4137f04cab 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding information for the various ARM saturating add/sub instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116612 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5ad01c7728b9c1aab2ddca4d6a97ee6693accb9b 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding information for the various ARM saturating add/sub instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116612 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bac8cadd510bf3fb5b7031cd66e5c8fe9176cac0 15-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM binary encoding information for RSB and RSC instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116604 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
84760885e1cb9f8a63243500338907e516b4c9cb 15-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM binary encoding information for RSB and RSC instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116604 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d55143b96b0f91c340f046082dfaeba8a65ba264 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Don't mark argument value stores as immutable, as otherwise the post-RA
scheduler may reorder loads from them before the stores and other such
badness. PR8347. Patch by David Meyer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116602 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fd52906478a17c1459607a9e458578d4289cdfa6 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Don't mark argument value stores as immutable, as otherwise the post-RA
scheduler may reorder loads from them before the stores and other such
badness. PR8347. Patch by David Meyer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116602 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b4f4f6dce6202b925fbb8ba7c5392ac18fa1b849 15-Oct-2010 Bob Wilson <bob.wilson@apple.com> Use simple RegState::Define flag instead of getDefRegState(true).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116601 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
01b35c25deee3d4cab339e620c12c721e627d609 15-Oct-2010 Bob Wilson <bob.wilson@apple.com> Use simple RegState::Define flag instead of getDefRegState(true).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116601 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
ac1bd0fe61662071fc7d5adae767ea320670d70a 15-Oct-2010 Eric Christopher <echristo@apple.com> Expand GEP handling for constant offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116594 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2896df897cc7d1bd3d211f6a8f47081a1a929bb2 15-Oct-2010 Eric Christopher <echristo@apple.com> Expand GEP handling for constant offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116594 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e8bc8902a5d916361133406be8c7da3eaa7ecadb 15-Oct-2010 Jim Grosbach <grosbach@apple.com> When expanding the MOVsr[la]_flag pseudos, the CPSR implicit def becomes
an explicit def. Make sure to capture that properly. rdar://8556556

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116591 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
6bdc8ae2916d20740790e0618692df7dac598cd0 15-Oct-2010 Jim Grosbach <grosbach@apple.com> When expanding the MOVsr[la]_flag pseudos, the CPSR implicit def becomes
an explicit def. Make sure to capture that properly. rdar://8556556

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116591 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
2f751b9419e7522209befd932b4b73360544bdbd 15-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM mode encoding information for UBFX and SBFX instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116588 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
8abe32af38b66bf4577526b23b6af6ec7eb6c155 15-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM mode encoding information for UBFX and SBFX instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116588 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
0b1d74325eea1ba67f169a31125c733138f249c2 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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
29f073ea18c5bc2db06ec872fe5e1656380ef26c 15-Oct-2010 Bob Wilson <bob.wilson@apple.com> ARM instructions that are both predicated and set the condition codes
have been printed with the "S" modifier after the predicate. With ARM's
unified syntax, they are supposed to go in the other order. We fixed this
for Thumb when we switched to unified syntax but missed changing it for
ARM. Apparently we don't generate these instructions often because no one
noticed until now. Thanks to Bill Wendling for the testcase!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116563 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
cfbece50f602c561c5eac046bcfc9a07c8c006cb 15-Oct-2010 Bob Wilson <bob.wilson@apple.com> ARM instructions that are both predicated and set the condition codes
have been printed with the "S" modifier after the predicate. With ARM's
unified syntax, they are supposed to go in the other order. We fixed this
for Thumb when we switched to unified syntax but missed changing it for
ARM. Apparently we don't generate these instructions often because no one
noticed until now. Thanks to Bill Wendling for the testcase!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116563 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
eba354614ad3dea9cca53d606473e4ff00d76e8a 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding info for extension instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116560 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
197a8df6405511e78265b09b6b313c30e7679094 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding info for extension instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116560 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
178db3353b224ac791f08742c7d8386a1746e8af 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Add missing Rd encoding for MOVs instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116537 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
58456c0b041f47734a990030eff205a4f429f1da 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Add missing Rd encoding for MOVs instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116537 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9fe3098523d0cb5a8a43e36f78460e6899580134 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Refactor the MOVsr[al]_flag and RRX pseudo-instructions to really be pseudos
and let the ARMExpandPseudoInsts pass fix them up into the real (MOVs)
instruction form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116534 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.td
7032f922b12746b73d6316578b0aea2d812b07b4 15-Oct-2010 Jim Grosbach <grosbach@apple.com> Refactor the MOVsr[al]_flag and RRX pseudo-instructions to really be pseudos
and let the ARMExpandPseudoInsts pass fix them up into the real (MOVs)
instruction form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116534 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrInfo.td
7c165e244d6747a51f74568588240dc8eaef5542 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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
fa1f28703d8404689439243a5230b820639b9732 14-Oct-2010 Jim Grosbach <grosbach@apple.com> MOVi16 and MOVT ARM mode encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116498 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1de588df69ceb999dd4680679cc3fe519bf9a124 14-Oct-2010 Jim Grosbach <grosbach@apple.com> MOVi16 and MOVT ARM mode encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116498 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a3b7637051d177f4244751792b43b1214a50bbb9 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Simplify encoding information and add 'dst' operand info for TAILJMP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116488 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2d294f564b1eed29682b11d7165ea5800015cfcf 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Simplify encoding information and add 'dst' operand info for TAILJMP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116488 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0aa96f8072bfce0b29130a3a102f7d632c37df13 14-Oct-2010 Oscar Fuentes <ofv@wanadoo.es> Remove explicit dependency of LLVMARMCodeGen on LLVMARMAsmPrinter. It
creates a cyclic dependency that breaks the build when
BUILD_SHARED_LIBS=ON

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116480 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
7bd698153db1403cbe8cc7cd8a250d4cd815d603 14-Oct-2010 Oscar Fuentes <ofv@wanadoo.es> Remove explicit dependency of LLVMARMCodeGen on LLVMARMAsmPrinter. It
creates a cyclic dependency that breaks the build when
BUILD_SHARED_LIBS=ON

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116480 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
5dc9789269709ea6e5d8119d659ad0ba119a8e83 14-Oct-2010 Eric Christopher <echristo@apple.com> Handle more complex GEP based loads and add a few TODOs to deal with
GEP + alloca.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116474 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
eae8439771a9dafd09e32026ca42bb81cceb2af1 14-Oct-2010 Eric Christopher <echristo@apple.com> Handle more complex GEP based loads and add a few TODOs to deal with
GEP + alloca.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116474 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a4776de44edaa3c84035632c60247b97eab08ff2 14-Oct-2010 Bill Wendling <isanbard@gmail.com> Add support for vmov.f64/.f32 encoding. There's a bit of a hack going on
here. The f32 in FCONSTS is handled as a double instead of a float in the
code. So the encoding of the immediate into the instruction isn't exactly in
line with the documentation in that regard. But given that we know it's handled
as a double, it doesn't cause any harm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116471 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMMCCodeEmitter.cpp
bbbdcd453d22258cb4dd217eddf016668fcebf84 14-Oct-2010 Bill Wendling <isanbard@gmail.com> Add support for vmov.f64/.f32 encoding. There's a bit of a hack going on
here. The f32 in FCONSTS is handled as a double instead of a float in the
code. So the encoding of the immediate into the instruction isn't exactly in
line with the documentation in that regard. But given that we know it's handled
as a double, it doesn't cause any harm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116471 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMMCCodeEmitter.cpp
4d2cc190d1bf1881d2e6d87425e22d27e218a791 14-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encoding for 'fmstat'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116466 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
946a2740a54fe2cd57509999384239101bf5b9df 14-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encoding for 'fmstat'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116466 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
8f81224f2931eec7fdcfbcbb524f0f3601a59860 14-Oct-2010 Bill Wendling <isanbard@gmail.com> - Add encodings for multiply add/subtract instructions in all their glory.
- Add missing patterns for some multiply add/subtract instructions.
- Add encodings for VMRS and VMSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116464 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
88cf038436a142611424c895c601731ffa7c993f 14-Oct-2010 Bill Wendling <isanbard@gmail.com> - Add encodings for multiply add/subtract instructions in all their glory.
- Add missing patterns for some multiply add/subtract instructions.
- Add encodings for VMRS and VMSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116464 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
5065379300cee7f37baed59f787f941452385f41 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Regenerate. No functional change, just cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116459 91177308-0d34-0410-b5e6-96231b3b80d8
RMPerfectShuffle.h
bd38acfa6ffabac94453eddf37e6e1272feda53b 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Regenerate. No functional change, just cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116459 91177308-0d34-0410-b5e6-96231b3b80d8
RMPerfectShuffle.h
cc38f2c329d4bbf432ffc8d19c4db6c8fa72274f 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Detabify and clean up 80 column violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116454 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
55561d188246e128e6c452d2e254cfd9fd359f2e 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Detabify and clean up 80 column violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116454 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
2bb253820d01f955c1bac57db217ca153cbdbe90 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
RMFastISel.cpp
RMInstrNEON.td
RMInstrThumb2.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
RMFastISel.cpp
RMInstrNEON.td
RMInstrThumb2.td
75954c8db8c6ddeaadedce4d7429115f77c69b8a 14-Oct-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116450 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
3a37866e53c6beb615300e2444e2c1b3a7647f3c 14-Oct-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116450 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
f8f6e7c727c42eb923b4331f29f65c9b179788ef 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116449 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b4b07b93ea9a107637cc1ab2c6b8cca9caea0590 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116449 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
be5e46fb3f83b315669e3f6269443d2abc7303d2 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Add operand encoding bits for SMC and SVC in ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116447 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
06ef444e5cd85264a4e6eb0059b0c2174e4bbe61 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Add operand encoding bits for SMC and SVC in ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116447 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
11bd124dad9f3d14ca16d0fc4b36a7ee14982b5a 14-Oct-2010 Jim Grosbach <grosbach@apple.com> More encoding cleanup. Also add register Rd operands for indirect branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116444 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
832859d062458ebb467209aad10c2a76511be8f6 14-Oct-2010 Jim Grosbach <grosbach@apple.com> More encoding cleanup. Also add register Rd operands for indirect branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116444 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
50f7ae208dbecdab729df45bc906316948ace7bd 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Simplify some ARM encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116440 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a7dbc1ead75c99c16fee398c2b85adedccebffc3 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Simplify some ARM encoding information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116440 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8d64d50631b30c75611df69228efac152c692619 13-Oct-2010 Eric Christopher <echristo@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116438 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a9c575110f6a8b1aeadefe5728393bb20697b5c5 13-Oct-2010 Eric Christopher <echristo@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116438 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
90f3e2092c7a0af5bf0751e2eed66a9a15e9a9d8 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME. The ADR instruction is a bit odd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116437 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6c354fd3f5321f4afddd90543cce46c0a1bd8404 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME. The ADR instruction is a bit odd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116437 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cab2a3b65c595425cf0f2e93260e3f9c954d60e1 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Refactor the ARM 'setend' instruction pattern. Use a single instruction pattern
and handle the operand explicitly. Flesh out encoding information. Add an
explicit disassembler testcase for the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116432 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
b3af5de2d97c30355b8109e149326b0664d34085 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Refactor the ARM 'setend' instruction pattern. Use a single instruction pattern
and handle the operand explicitly. Flesh out encoding information. Add an
explicit disassembler testcase for the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116432 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
53b5ced0d44ea1445d7956241f267810504d018d 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add MC encodings for VCVT* instrunctions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116431 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
67a704de03b7466c3bd696c3d40780d277134d57 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add MC encodings for VCVT* instrunctions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116431 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
cb474728b11ba4dc7f1c90f1e0f24af0201f45dd 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
596307e13325f071bc9709793b58e2d9fd7125cc 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c1f66a5e36e0294300ab3a2478db3eed15f0ea82 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Make a few more bits of some simple instructions explicit. nop, yield, wfe,
wfi, sel, sev and bkpt. All would disassemble properly before, but more
explicitness is good, especially with the integrated assembler coming in
the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116427 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fa7d2cb6803b166ac9f75bb5ae7dcfd84c983854 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Make a few more bits of some simple instructions explicit. nop, yield, wfe,
wfi, sel, sev and bkpt. All would disassemble properly before, but more
explicitness is good, especially with the integrated assembler coming in
the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116427 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
21698a2600710fbd9f80ae90be81295bfbb63085 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add ARM mode encoding for [SU]XT[BH] and [SU]XTA[BH] instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116421 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
b35ad41fef5d1edd9495f708fb7eae1a0a94ef9d 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add ARM mode encoding for [SU]XT[BH] and [SU]XTA[BH] instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116421 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMMCCodeEmitter.cpp
d98b3ea750bd3d93775a07db563ed40c67823166 13-Oct-2010 Shih-wei Liao <sliao@google.com> Fix Bug #3092270. Make clang and llvm agree on v128.

Change-Id: I50deafde09216b09ce6cb8762b31601fb62b6a51
RMTargetMachine.cpp
d859535fb4ca65ec6a664b7c9d97546e9b2ecede 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Fix encoding for compares. No Rd register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116414 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e822f9450992774a2058163d0572538375e74051 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Fix encoding for compares. No Rd register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116414 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
38956c2d2cd2c3e09df68a800e0528d36c82f8e9 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add ARM mode operand encoding information for ADDE/SUBE instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116412 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
24989ecc70ad7bbbfc135fe341484ef4fdeabd09 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add ARM mode operand encoding information for ADDE/SUBE instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116412 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9383983e5c15188c1673de7642ca23e6dcf8115f 13-Oct-2010 Eric Christopher <echristo@apple.com> Start handling more global variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116401 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ede42b0a22fdb57eb70d0d8c780dc5d3283397c0 13-Oct-2010 Eric Christopher <echristo@apple.com> Start handling more global variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116401 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a71a41e8376ae6c82e285433401bc3c44b22564a 13-Oct-2010 Evan Cheng <evan.cheng@apple.com> Limit load / store issues (at least until we have a true multi-issue aware scheduler).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116389 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
14ce175216c452996ce9af04aa5749cb3c2c31dc 13-Oct-2010 Evan Cheng <evan.cheng@apple.com> Limit load / store issues (at least until we have a true multi-issue aware scheduler).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116389 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
8f053b42ce6cd046fea17cee9f16be1201ed8348 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VNEG and VSQRT. Also add encodings for VMOV, but not a test
just yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116386 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
6932643a371b7a6dcc0c2b4f3a38b6b18759da87 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VNEG and VSQRT. Also add encodings for VMOV, but not a test
just yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116386 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
a56cbbaa9eb434aa4a2eb1975d2a91e9cfbe1d09 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VCVT instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116385 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
54908dd72b1c6add6f3d074df1b67060e5b57025 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VCVT instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116385 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
b561a4f1c3b698dcbe637dfcf9bf3603e6fa4aa8 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add ARM encoding information for comparisons, forced-cc-out arithmetics, and
arithmetic-with-carry-in instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116384 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
89c898f8af3e96db25fe4986b7e7f27663ebe26a 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add ARM encoding information for comparisons, forced-cc-out arithmetics, and
arithmetic-with-carry-in instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116384 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
97c79342075f6147de07f50a60d9988610b75cf0 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add VCMPZ and VABS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116383 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
1fc6d8837f03471b815a9312091b9432939b49fc 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add VCMPZ and VABS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116383 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
c67e1a38f5cb899f005ee58dad75e5b3e0d71aa1 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Refactor VCMP instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116379 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
cd776862544518e215b5af8a294f5026ee844684 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Refactor VCMP instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116379 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
e631d79977c636c471178ae9a5f90a96df645dac 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add the rest of the ARM so_reg encoding options (register shifted register)
and move to a custom operand encoder. Remove the last of the special handling
stuff from ARMMCCodeEmitter::EncodeInstruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116377 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
ef324d704425a372aeba5fc91bee4d81635121f3 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add the rest of the ARM so_reg encoding options (register shifted register)
and move to a custom operand encoder. Remove the last of the special handling
stuff from ARMMCCodeEmitter::EncodeInstruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116377 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
40fbeab26c8a18eda1017cd503ad79aede9e4a36 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VNMUL[SD].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116375 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
5a1fd8cf68a120e0f4a1e71773422a7d5a284a50 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VNMUL[SD].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116375 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
da32e820dce9b67f3c018bc06883d0e400ae64b3 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VDIV and VMUL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116370 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
caa3d467ab849ebf671441f3adf1ecda715e98fe 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encodings for VDIV and VMUL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116370 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
24ad3be2dbdf34a342afe90a17a4ec846a2c16de 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Move the ARM so_imm encoding into a custom operand encoder and remove the
explicit handling of the instructions referencing it from the MC code
emitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116367 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
2a6a93d5425b38546de2b6674719d52f565171d8 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Move the ARM so_imm encoding into a custom operand encoder and remove the
explicit handling of the instructions referencing it from the MC code
emitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116367 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMMCCodeEmitter.cpp
aa6b803399296d49ef4aa01cc01ded63271a9b9a 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Refactor some of the encoding logic into a base class. This keeps us from having
to add 10+ lines to every instruction.

It may turn out that we can move this base class into it's parent class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116362 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
52061f83e77cc6ad6c3d9afec7749b899585308b 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Refactor some of the encoding logic into a base class. This keeps us from having
to add 10+ lines to every instruction.

It may turn out that we can move this base class into it's parent class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116362 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2b80f415f24e44b5c8859b7ddf3939bdf657a64c 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add custom encoder for the 's' bit denoting whether an ARM arithmetic
instruction should set the processor status flags or not. Remove the now
unnecessary special handling for the bit from the MCCodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116360 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
08bd54987f4ae482de13436e7254ff08b23f825f 13-Oct-2010 Jim Grosbach <grosbach@apple.com> Add custom encoder for the 's' bit denoting whether an ARM arithmetic
instruction should set the processor status flags or not. Remove the now
unnecessary special handling for the bit from the MCCodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116360 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMMCCodeEmitter.cpp
34c2b09f9dac7f8d16b2d6872a3df9eff68c48ff 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encoding for VSUB and VCMP.

Fear not! I'm going to try a refactoring right now. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116359 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
dd3bc112e6545634d9700c777c975f072128a51b 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Add encoding for VSUB and VCMP.

Fear not! I'm going to try a refactoring right now. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116359 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
c61b506b71447e1abb7a63a57ba75b4b066617af 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Encoding for VADDD. Plus a test for the VFP instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116348 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
174777bb2b0a1896afb5dc5ff96a91d162d00149 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Encoding for VADDD. Plus a test for the VFP instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116348 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
402e7837014eb9c664ed6fb0442b031da0711752 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Split out the "size" field from the encoding. The newer documentation has it as
a separate bit in the coding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116347 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a0c14ef8f6a41184c65a7904e70efa268ab241f9 13-Oct-2010 Bill Wendling <isanbard@gmail.com> Split out the "size" field from the encoding. The newer documentation has it as
a separate bit in the coding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116347 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a7dc0ed7f42e88d9f258b5bc76675890598b9fc0 12-Oct-2010 Eric Christopher <echristo@apple.com> Fix thinko in arm fast isel alloca rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116339 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
558cf007b5ed92324156b29861a0acbf95442278 12-Oct-2010 Eric Christopher <echristo@apple.com> Fix thinko in arm fast isel alloca rewrite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116339 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
edf21333934799675b2762c312f610cdce2e5a20 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM-mode VADD.F32 instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116338 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
499e886fe6c0ad02e0079734733dd7dde03d2940 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Encoding for ARM-mode VADD.F32 instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116338 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
96d02f96f26f3230c288cb6858c7e07601821dae 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Add MOVi ARM encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116321 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
f59818b81ad75e43727bf8143b64386c82b77fe9 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Add MOVi ARM encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116321 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
2aa6740ece4aa0a89674cd530bb9c7c240051abc 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke unused wrapper function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116318 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
8e157302f4991b08a625b05238e01d12c82a2976 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke unused wrapper function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116318 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
fc21fbe8a9a13089b60ab00839c74c27f4808282 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Add encoding information for the remainder of the generic arithmetic
ARM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116313 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
0de6ab3c43ed2143d661115dddf1480545236c91 12-Oct-2010 Jim Grosbach <grosbach@apple.com> Add encoding information for the remainder of the generic arithmetic
ARM instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116313 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
d369c9a38dfba58dcec49c53236eb951d3733286 12-Oct-2010 Bob Wilson <bob.wilson@apple.com> PR8359: The ARM backend may end up allocating registers D16 to D31 when
"-mattr=+vfp3" is specified. However, this will not work for hardware that
only supports 16 registers. Add a new flag to support -"mattr=+vfp3,+d16".
Patch by Jan Voung!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116310 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMRegisterInfo.td
RMSubtarget.cpp
RMSubtarget.h
77f42b52781b6923924a93b8ab338d183887a592 12-Oct-2010 Bob Wilson <bob.wilson@apple.com> PR8359: The ARM backend may end up allocating registers D16 to D31 when
"-mattr=+vfp3" is specified. However, this will not work for hardware that
only supports 16 registers. Add a new flag to support -"mattr=+vfp3,+d16".
Patch by Jan Voung!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116310 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMRegisterInfo.td
RMSubtarget.cpp
RMSubtarget.h
7a0a1d517870d6eeca1350107b162fef97f8b11d 12-Oct-2010 Eric Christopher <echristo@apple.com> Rework alloca handling so that we can load or store from casted
address that we've looked through.

Fixes compilation problems in tramp3d from earlier patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116296 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
15418779419923dc9222cd804d409c1878b5e3b1 12-Oct-2010 Eric Christopher <echristo@apple.com> Rework alloca handling so that we can load or store from casted
address that we've looked through.

Fixes compilation problems in tramp3d from earlier patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116296 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
454c4dcd8d4557d37c748bf0e586a2d8b608b587 12-Oct-2010 Eric Christopher <echristo@apple.com> Handle a wider arrangement of loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116284 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5532433a574043b516aec26a4dd4b6c8d7fc551e 12-Oct-2010 Eric Christopher <echristo@apple.com> Handle a wider arrangement of loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116284 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
95bf689428749685464fc127aed50633bb8e5427 12-Oct-2010 Evan Cheng <evan.cheng@apple.com> More ARM scheduling itinerary fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116266 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
08cec1ef27d4f27320f871cf17fd742196465232 12-Oct-2010 Evan Cheng <evan.cheng@apple.com> More ARM scheduling itinerary fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116266 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
5763060a005b28bc6f8946ffd28ad17de728433a 12-Oct-2010 Jim Grosbach <grosbach@apple.com> MC machine encoding for simple aritmetic instructions that use a shifted
register operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116259 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
42fac8ee3bc02e18a5887800e812af762b45b9eb 12-Oct-2010 Jim Grosbach <grosbach@apple.com> MC machine encoding for simple aritmetic instructions that use a shifted
register operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116259 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.h
RMInstrInfo.td
RMMCCodeEmitter.cpp
7fbd5ff30035a562c6c7731ade9ad766345a3c64 12-Oct-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Second set of ARM/MC/ELF changes.

Added ARM specific ELF section types.
Added AttributesSection to ARMElfTargetObject
First step in unifying .cpu assembly tag with ELF/.o
llc now asserts on actual ELF emission on -filetype=obj :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116257 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
RMTargetObjectFile.cpp
RMTargetObjectFile.h
17b443df4368acfad853d09858c033c45c468d5c 12-Oct-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Second set of ARM/MC/ELF changes.

Added ARM specific ELF section types.
Added AttributesSection to ARMElfTargetObject
First step in unifying .cpu assembly tag with ELF/.o
llc now asserts on actual ELF emission on -filetype=obj :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116257 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
RMTargetObjectFile.cpp
RMTargetObjectFile.h
9b468318b87b52ff393ddaa9ba2defc70cba97e2 12-Oct-2010 Evan Cheng <evan.cheng@apple.com> Proper VST scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116251 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
60ff87914fcafd82fb123f03b17827ab7b2c3ab3 12-Oct-2010 Evan Cheng <evan.cheng@apple.com> Proper VST scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116251 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
9906ead3d25adb55167fee0f4c7dc9a1c5db4383 12-Oct-2010 Eric Christopher <echristo@apple.com> Use a sane mechanism for that assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116249 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5f9e8b971bc4cf1f34901389ef9fe3b6344a0a9c 12-Oct-2010 Eric Christopher <echristo@apple.com> Use a sane mechanism for that assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116249 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a879c9b1ca41a7780ca8ad9501428ecb2d3ef12e 11-Oct-2010 Eric Christopher <echristo@apple.com> We're not going to handle dynamic allocas anywhere else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116240 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
050d16c2a978eda86a5b6dc56d6f0cea10963b9c 11-Oct-2010 Eric Christopher <echristo@apple.com> We're not going to handle dynamic allocas anywhere else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116240 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5208a656d2d6be52684aed2e9951ac763f5d0bde 11-Oct-2010 Eric Christopher <echristo@apple.com> Make sure that the call stack adjustments have default operands. Also
leave custom lowerings for later.

Fixes some nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116232 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fb0b892f7ebee68760645dd220f88bd9177cf2e4 11-Oct-2010 Eric Christopher <echristo@apple.com> Make sure that the call stack adjustments have default operands. Also
leave custom lowerings for later.

Fixes some nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116232 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8480a5d4505148aeedec17a21843ee72dc70051d 11-Oct-2010 Eric Christopher <echristo@apple.com> Found a bug turning this on by default. Disable again for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116220 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8ff9a9da0a2efc7e901c79e62689b49a38454063 11-Oct-2010 Eric Christopher <echristo@apple.com> Found a bug turning this on by default. Disable again for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116220 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
97b641d25151519c33adeb7fb1e1bac870a5a5d4 11-Oct-2010 Eric Christopher <echristo@apple.com> Fix help text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116218 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fa6b29dacdb268301d8e3f58356071c998b2b8a5 11-Oct-2010 Eric Christopher <echristo@apple.com> Fix help text.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116218 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b59f37a31f76c53064c2b46c966783e25257ce6a 11-Oct-2010 Eric Christopher <echristo@apple.com> Change flag from Enable to Disable since we're enabled by default.
Also don't use fast-isel on non-darwin since it's untested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116217 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
feadddd6b6c029bc77d6c11a7a637689d15cc7b4 11-Oct-2010 Eric Christopher <echristo@apple.com> Change flag from Enable to Disable since we're enabled by default.
Also don't use fast-isel on non-darwin since it's untested.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116217 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
34e67a7429900b00fbec1e4c1c462281fc359fe6 11-Oct-2010 Jim Grosbach <grosbach@apple.com> More binary encoding stuff, taking advantage of the new "by name" operand
matching in tblgen to do the predicate operand.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116213 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
62547267f088a060d7c1084a40d740645efe86d1 11-Oct-2010 Jim Grosbach <grosbach@apple.com> More binary encoding stuff, taking advantage of the new "by name" operand
matching in tblgen to do the predicate operand.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116213 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
7b94d0052ab50d5144bf6befb18605f880c523c8 11-Oct-2010 Eric Christopher <echristo@apple.com> Turn on arm fast isel by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116212 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a2efc5ff6ecc7dfca66b51030510afd004732217 11-Oct-2010 Eric Christopher <echristo@apple.com> Turn on arm fast isel by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116212 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a64c092761e7ffb9c920283a8396df43943e5c89 11-Oct-2010 Francois Pichet <pichet2000@gmail.com> MSVC hangs on compilation of ARMDisassembler.cpp. PR6866 applied to ARM target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116201 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/CMakeLists.txt
12657762432211d97b8c6831666d93c8fd7c903e 11-Oct-2010 Francois Pichet <pichet2000@gmail.com> MSVC hangs on compilation of ARMDisassembler.cpp. PR6866 applied to ARM target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116201 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/CMakeLists.txt
098ca99ad1de07ef2117d8fe0f4bfad3cb9d4301 10-Oct-2010 Zonr Chang <zonr@google.com> Fix VFP register encoding.

A VFP register in Rd/Rn/Rm is encoded as (Vd:D)/(Vn:N)/(Vm:M) if it's a
single-precision register, (D:Vd)/(N:Vn)/(M:Vn) if it's a double-precision
register.

Change-Id: Ib6c2ea23328b5e71012ea8b1375c38700100c96b
RMCodeEmitter.cpp
6035b159275db5e56c2e7ad0d8ef847ca207da0e 11-Oct-2010 Eric Christopher <echristo@apple.com> Copy and pasteo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116198 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a1640d9ed9e0e9860614944f79a40ae66ecf56fc 11-Oct-2010 Eric Christopher <echristo@apple.com> Copy and pasteo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116198 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5f973ec92e00ddfce13bc28c63fed4f98945747f 11-Oct-2010 Eric Christopher <echristo@apple.com> Whitespace cleanup in ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116197 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dccd2c3c4346dd6625b80fcac9caa1be99731c9c 11-Oct-2010 Eric Christopher <echristo@apple.com> Whitespace cleanup in ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116197 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
19294cd7de39df380eb74053e96b2c43c7567666 11-Oct-2010 Eric Christopher <echristo@apple.com> Add srem libcall support to ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116196 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6a880d6ba8e489fc85d18cfbc5f8f6187d438630 11-Oct-2010 Eric Christopher <echristo@apple.com> Add srem libcall support to ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116196 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
35f730b219fd4d1e064c8d13a6e41320c3e14ae7 11-Oct-2010 Eric Christopher <echristo@apple.com> Add i8 sdiv support for ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116195 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7bdc4de4e71e3c9c8d82504b99d03bbec3c06ec3 11-Oct-2010 Eric Christopher <echristo@apple.com> Add i8 sdiv support for ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116195 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ed8242af5b9ff73811f79f9d39b9f245ce5e68e1 11-Oct-2010 Eric Christopher <echristo@apple.com> Implement select handling for ARM fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116194 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3bbd396853c7645791417bc795bab4662235ec10 11-Oct-2010 Eric Christopher <echristo@apple.com> Implement select handling for ARM fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116194 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ed4fc768a36d1b39c79f8ceb0948181557143bcf 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add VLD4 scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116143 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
10dc63feeb7847f867a6f35179312f4079981ad3 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add VLD4 scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116143 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
2af3d163beb659492fbb69ea5a591f2666a8f48c 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Finish vld3 and vld4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116140 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
84f69e8436d522cb3a772766ba67a1d7658dfdf5 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Finish vld3 and vld4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116140 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
ec35db65470411f371135ad2c5213981e6ea66a8 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Complete vld2 instruction itineries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116136 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
40bb6836f64ca5c60f759896805fcc163e305a4d 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Complete vld2 instruction itineries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116136 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
60461c143c37b84ca2f4d1528163986aa1fb1492 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Multiply instructions are issued on pipeline 0. They do not need to reserve pipeline 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116135 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
8ae6ffacdd115c096213332928441ff3776704a4 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Multiply instructions are issued on pipeline 0. They do not need to reserve pipeline 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116135 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
2977595ff379b14b2e03622bbb237abaf384d766 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Correct some load / store instruction itinerary mistakes:
1. Cortex-A8 load / store multiplies can only issue on ALU0.
2. Eliminate A8_Issue, A8_LSPipe will correctly limit the load / store issues.
3. Correctly model all vld1 and vld2 variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116134 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
d2ca8135496ff7945e8a708dccb26b482e563a63 09-Oct-2010 Evan Cheng <evan.cheng@apple.com> Correct some load / store instruction itinerary mistakes:
1. Cortex-A8 load / store multiplies can only issue on ALU0.
2. Eliminate A8_Issue, A8_LSPipe will correctly limit the load / store issues.
3. Correctly model all vld1 and vld2 variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116134 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
6e7c85e3896d8089c195d46e3eca8148f5c7a64c 09-Oct-2010 Bill Wendling <isanbard@gmail.com> Check to make sure that the iterator isn't at the beginning of the basic block
before decrementing. <rdar://problem/8529919>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116126 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0aa38b9381a5be42abd4f5ca5baa8c2930d148d3 09-Oct-2010 Bill Wendling <isanbard@gmail.com> Check to make sure that the iterator isn't at the beginning of the basic block
before decrementing. <rdar://problem/8529919>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116126 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
311ed85ec58a80fcb4617951a103909279bf40c6 09-Oct-2010 Eric Christopher <echristo@apple.com> Fix the store part of this as well. Fixes smg2000.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116123 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e93417bcc8940191396d7fa977e2c8d713bd85f6 09-Oct-2010 Eric Christopher <echristo@apple.com> Fix the store part of this as well. Fixes smg2000.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116123 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5a899b38b0b69f6600fb9687e484f99eac214be5 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Implement a few more binary encoding bits. Still very early stage proof-of-
concept level stuff at this point, but it is generally working for those
instructions that know how to map the operands.

This patch fills in the register operands for add/sub/or/etc instructions
and adds the conditional execution predicate encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116112 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
56ac907c57fcfddfd650238f03c856a9d55987e5 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Implement a few more binary encoding bits. Still very early stage proof-of-
concept level stuff at this point, but it is generally working for those
instructions that know how to map the operands.

This patch fills in the register operands for add/sub/or/etc instructions
and adds the conditional execution predicate encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116112 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMCCodeEmitter.cpp
6a153f291b60c7afbc8ce9f96c5468476474addf 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Reapply 116059, this time without the fatfingered pasto at the top.

''const'ify getMachineOpValue() and associated helpers.'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116067 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
3e09413c2cec4552532e0ab5006ca80f86897905 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Reapply 116059, this time without the fatfingered pasto at the top.

''const'ify getMachineOpValue() and associated helpers.'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116067 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
e2c730c6288b85f7017358078cd5e8d8b3e977f0 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Reverting 116059. Bots are unhappy with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116064 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
2cee75a2543395b6b4bd89173bedb1d1520b26f9 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Reverting 116059. Bots are unhappy with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116064 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
34ddd8145c4c02d31e11d3eace357e87d8ea51c7 08-Oct-2010 Jim Grosbach <grosbach@apple.com> 'const'ify getMachineOpValue() and associated helpers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116059 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
461caba214ae577e05c3ce55b568cf09533617bb 08-Oct-2010 Jim Grosbach <grosbach@apple.com> 'const'ify getMachineOpValue() and associated helpers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116059 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
5dfdc1f818cc0cbf2570dc5f396629ab7a8dc310 08-Oct-2010 Bob Wilson <bob.wilson@apple.com> Change register allocation order for ARM VFP and NEON registers to put the
callee-saved registers at the end of the lists. Also prefer to avoid using
the low registers that are in register subclasses required by certain
instructions, so that those registers will more likely be available when needed.
This change makes a huge improvement in spilling in some cases. Thanks to
Jakob for helping me realize the problem.

Most of this patch is fixing the testsuite. There are quite a few places
where we're checking for specific registers. I changed those to wildcards
in places where that doesn't weaken the tests. The spill-q.ll and
thumb2-spill-q.ll tests stopped spilling with this change, so I added a bunch
of live values to force spills on those tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116055 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
7d24705f6538688937f571961d41c7bb2985c7e3 08-Oct-2010 Bob Wilson <bob.wilson@apple.com> Change register allocation order for ARM VFP and NEON registers to put the
callee-saved registers at the end of the lists. Also prefer to avoid using
the low registers that are in register subclasses required by certain
instructions, so that those registers will more likely be available when needed.
This change makes a huge improvement in spilling in some cases. Thanks to
Jakob for helping me realize the problem.

Most of this patch is fixing the testsuite. There are quite a few places
where we're checking for specific registers. I changed those to wildcards
in places where that doesn't weaken the tests. The spill-q.ll and
thumb2-spill-q.ll tests stopped spilling with this change, so I added a bunch
of live values to force spills on those tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116055 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
fa6eeaf22c4bd93c5b78354409660c9ee2868efd 08-Oct-2010 Eric Christopher <echristo@apple.com> Move to thumb2 loads, fixes a problem with incoming registers
as thumb1.

Fixes lencod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116027 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7a56f33583a331bd1d6de57af3fa03085889ecfb 08-Oct-2010 Eric Christopher <echristo@apple.com> Move to thumb2 loads, fixes a problem with incoming registers
as thumb1.

Fixes lencod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116027 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
baeb93832017e185982e72c60de76df848379fb4 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Enable binary encoding of some simple instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116022 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
58f38bfa2457d4729a5bdacde193dc7c7d25ac9e 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Enable binary encoding of some simple instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116022 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
251fa75c98f1f716d36929d3b29872aad7c2d52c 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Make <target>CodeEmitter::getBinaryCodeForInstr() a const method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116018 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
bade37bb8b83deefa166776b1b5185c237a42e71 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Make <target>CodeEmitter::getBinaryCodeForInstr() a const method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116018 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMMCCodeEmitter.cpp
d4980995131997af5179c527ff134960185ca9e2 08-Oct-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116002 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
344d9db97062736cd66da6c07baa9108b6cfa419 08-Oct-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116002 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
a270576d6da83e2a5dd4636828d1323c21366957 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Trivial MC code emitter shell. No instruction forms actually handled yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115993 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
d6d4b42ba473657b6d30242962f0d0fb23fe126e 08-Oct-2010 Jim Grosbach <grosbach@apple.com> Trivial MC code emitter shell. No instruction forms actually handled yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115993 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
19e2c510219b024c748054675ed16fab587ac02c 07-Oct-2010 Jim Grosbach <grosbach@apple.com> Include the auto-generated bits for machine encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115987 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
9af82ba42b53905f580f8c4270626946e3548654 07-Oct-2010 Jim Grosbach <grosbach@apple.com> Include the auto-generated bits for machine encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115987 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
e03ff9903a65f2a76c99956a0a4bf761d8991272 07-Oct-2010 Eric Christopher <echristo@apple.com> Remember to promote load/store types for stack to register size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115984 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
df1f5a924e89fc2f744681677ca03c68aae5bc34 07-Oct-2010 Eric Christopher <echristo@apple.com> Remember to promote load/store types for stack to register size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115984 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
13a418ceeced0e5aa09f5cf47728902b3a467ece 07-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM instruction don't have instruction prefixes, so remove the helper functions
for them from the MCCodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115975 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
ae93ed1dd7fdb92239bbf255017e0d2ae82d434a 07-Oct-2010 Jim Grosbach <grosbach@apple.com> ARM instruction don't have instruction prefixes, so remove the helper functions
for them from the MCCodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115975 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
2b9e155bad4e1418b124cd240597b1861c447515 07-Oct-2010 Eric Christopher <echristo@apple.com> Use the correct register class for load instructions - fixes
compilation of MultiSource/Benchmarks/Bullet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115907 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ee56ea62431081a2333eb47df3fa4dfcd425cb54 07-Oct-2010 Eric Christopher <echristo@apple.com> Use the correct register class for load instructions - fixes
compilation of MultiSource/Benchmarks/Bullet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115907 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9814e7d444f8ddd69983101abe02e6f97528ffac 07-Oct-2010 Eric Christopher <echristo@apple.com> Use the correct register class here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115906 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5d18d92aad587381b5d9ecf0aeb3c2eb1530ee61 07-Oct-2010 Eric Christopher <echristo@apple.com> Use the correct register class here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115906 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7ed7b7e9bd1d8fc40b95004ee859478a06b05dbc 07-Oct-2010 Eric Christopher <echristo@apple.com> Use the thumb2 conditional move instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115905 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
338c253d7ebfff4495697911e07cf6ee1724015f 07-Oct-2010 Eric Christopher <echristo@apple.com> Use the thumb2 conditional move instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115905 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
66d5959b0f565868ba87f0fdfdc0c30d595d4f1d 07-Oct-2010 Eric Christopher <echristo@apple.com> Remove in-progress assertion, add TODO.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115904 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1107734e223a140962e220ba64ea62227ffcbe20 07-Oct-2010 Eric Christopher <echristo@apple.com> Remove in-progress assertion, add TODO.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115904 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f8910dbd30406c3856931522b09fa87aeb515549 07-Oct-2010 Evan Cheng <evan.cheng@apple.com> Model operand cycles of vldm / vstm; also fixes scheduling itineraries of vldr / vstr, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115898 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMInstrVFP.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
5a50ceeaea980962c1982ad535226c7ab06c971c 07-Oct-2010 Evan Cheng <evan.cheng@apple.com> Model operand cycles of vldm / vstm; also fixes scheduling itineraries of vldr / vstr, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115898 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMInstrVFP.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
fc7f62afd73adbb065e190e9d638af6ab9c2910c 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
5492a1d971627bede4f228880a18aaae5d8c75f7 07-Oct-2010 Jim Grosbach <grosbach@apple.com> Allow use of the 16-bit literal move instruction in CMOVs for ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115884 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
3bbdcea49abddea69d124e7ef055c9fdaa8d12f6 07-Oct-2010 Jim Grosbach <grosbach@apple.com> Allow use of the 16-bit literal move instruction in CMOVs for ARM mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115884 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
60fd09674ee9adab2203726a41da52aba8784007 07-Oct-2010 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115860 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
fa7fb64fad0e46e7329e4ba84a1edec5e979c31a 07-Oct-2010 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115860 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
301ea92b5d9757fd7793551f46b289c8a01bf8bf 07-Oct-2010 Jason W Kim <jason.w.kim.2009@gmail.com> First in a sequence of ARM/MC/*ELF* specific work.
Lifted the EmitRawText calls to ARMAsmPrinter::emitAttribute()
Added ARMAsmPrinter::emitAttributes() (plural s).
TODO:
.cpu attribute needs to be refactored



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115859 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
def9ac48b779a4cb0b1d1486286cda157a2fe86e 07-Oct-2010 Jason W Kim <jason.w.kim.2009@gmail.com> First in a sequence of ARM/MC/*ELF* specific work.
Lifted the EmitRawText calls to ARMAsmPrinter::emitAttribute()
Added ARMAsmPrinter::emitAttributes() (plural s).
TODO:
.cpu attribute needs to be refactored



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115859 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBuildAttrs.h
26a3a018bef3647a14b5a37f0e30ba1805260144 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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
5f4935560852f9d569a37b0904542eabdaa2e251 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Kill of the vestiges of the 'call' Modifier (no longer needed for PLT).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115845 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
nstPrinter/ARMInstPrinter.cpp
1d6111c5ac97c321782637b2cd72e2c3e4d3d694 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Kill of the vestiges of the 'call' Modifier (no longer needed for PLT).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115845 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
nstPrinter/ARMInstPrinter.cpp
a9afe6a57c38fb10677711fdc387c0f287d0f7e8 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Now that VDUPfqf and VDUPfdfare properly pseudos, kill the no-longer-needed
"lane" operand modifier.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115843 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
nstPrinter/ARMInstPrinter.cpp
35636281c7ab6eb128b4ced6bf7ae0b6b8458dd2 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Now that VDUPfqf and VDUPfdfare properly pseudos, kill the no-longer-needed
"lane" operand modifier.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115843 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
nstPrinter/ARMInstPrinter.cpp
58b821ea848c832e62237de80f2195c6c347397c 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Change the NEON VDUPfdf and VDUPfqf pseudo-instructions to actually be
pseudo instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115840 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
65dc30340cf874307eae11ec1195a1cd6d27fb13 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Change the NEON VDUPfdf and VDUPfqf pseudo-instructions to actually be
pseudo instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115840 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrNEON.td
f63de95cc76ce3c5235263555941f7cf515c3f2f 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a 'pattern' arg to the ARM PseudoNeonI class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115831 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
7cd2729d2a2ded13ba35f85575b64383f198f976 06-Oct-2010 Jim Grosbach <grosbach@apple.com> Add a 'pattern' arg to the ARM PseudoNeonI class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115831 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
5a3d6058fbb3c011f6b16f938ce811882546f11a 06-Oct-2010 Jim Grosbach <grosbach@apple.com> target operand flag values aren't a bitmask

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115798 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4dea941c8de1b40717f5b788c993c325e9f7540c 06-Oct-2010 Jim Grosbach <grosbach@apple.com> target operand flag values aren't a bitmask

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115798 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5cb06cba2dffe2a72ba3fcc947b0c265232355c8 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
ceeb10aad381af39671a41f58ff163aaae34d3ce 06-Oct-2010 Chris Lattner <sabre@nondot.org> replace stuff like:

let AsmString = !strconcat(
!strconcat(!strconcat(opc, "${p}"), !strconcat(".", dt)),
!strconcat("\t", asm));

with:

let AsmString = !strconcat(opc, "${p}", ".", dt, "\t", asm);

:)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115720 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
78caacc2266e504eca315844203b3f727c27fbd0 06-Oct-2010 Chris Lattner <sabre@nondot.org> replace stuff like:

let AsmString = !strconcat(
!strconcat(!strconcat(opc, "${p}"), !strconcat(".", dt)),
!strconcat("\t", asm));

with:

let AsmString = !strconcat(opc, "${p}", ".", dt, "\t", asm);

:)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115720 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
19dc10866650192e3f9bf7b3ee68e2e0beb08718 06-Oct-2010 Eric Christopher <echristo@apple.com> Comment out fastisel debugging message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115717 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e540a6f94a4011e6ecefe9e21c3f2b3b581fd6c1 06-Oct-2010 Eric Christopher <echristo@apple.com> Comment out fastisel debugging message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115717 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f9684587d83ae39d21171b0e185e6a59b1bdc75e 06-Oct-2010 Eric Christopher <echristo@apple.com> Random cleanup and make the intermediate register in fptosi a
32-bit fp reg, not 64-bit.

Fixes SingleSource.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115711 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
022b7fb045973531a1b05f4f0dae28fd836c9890 06-Oct-2010 Eric Christopher <echristo@apple.com> Random cleanup and make the intermediate register in fptosi a
32-bit fp reg, not 64-bit.

Fixes SingleSource.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115711 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
80d9232d209e00abb1a0fc1c04d384734e10dcb5 05-Oct-2010 Jim Grosbach <grosbach@apple.com> Increase the number of bits used internally by the ARM target to represent the
addressing mode from four to five.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115645 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
d86609fca46ac9e186557d2d7b12f029febecf0e 05-Oct-2010 Jim Grosbach <grosbach@apple.com> Increase the number of bits used internally by the ARM target to represent the
addressing mode from four to five.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115645 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
48f77fe80fdca3f5a11e15acc958c1183af063c9 05-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> fix MSVC 2010 build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115594 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f000a7a212590bfd45e23c05bff5e1b683d25dd6 05-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> fix MSVC 2010 build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115594 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ffe08f1b5115ac20ca8bcf06c92bcaaeab8feb59 05-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Cleanup Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115593 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2bbb76909126db5bed6bde84b16d94ab5de4d372 05-Oct-2010 Michael J. Spencer <bigcheesegs@gmail.com> Cleanup Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115593 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
4727ac53eaffedf69630a630c10dbd9fceaefa64 03-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Jim Asked us to move DataLayout on ARM back to the most specialized classes. Do
so and also change X86 for consistency.

Investigating if this can be improved a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115469 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
0febc4657b0edbf16b55ca5365d2b6aab45be7c5 03-Oct-2010 Rafael Espindola <rafael.espindola@gmail.com> Jim Asked us to move DataLayout on ARM back to the most specialized classes. Do
so and also change X86 for consistency.

Investigating if this can be improved a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115469 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
b563f3ea5b22b6b0aaf6d1c34424813e03b032e9 03-Oct-2010 Evan Cheng <evan.cheng@apple.com> Major changes to Cortex-A9 itinerary.
1. Model dual issues as two FUs.
2. Model the pipelines correctly: two symmetric ALUs, the multiplier is a
dependent pipeline on ALU0.
The changes do not have much impact on codegen right now. But I plan to make
pre-RA scheduler multi-issue aware which should take good advantage of the
changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115457 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
ec45f60cab671b0e7e2c1768395310bed7c74525 03-Oct-2010 Evan Cheng <evan.cheng@apple.com> Major changes to Cortex-A9 itinerary.
1. Model dual issues as two FUs.
2. Model the pipelines correctly: two symmetric ALUs, the multiplier is a
dependent pipeline on ALU0.
The changes do not have much impact on codegen right now. But I plan to make
pre-RA scheduler multi-issue aware which should take good advantage of the
changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115457 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
fcc5063bcc917ffe13c085e0e1cb7a06812c9f5a 02-Oct-2010 Eric Christopher <echristo@apple.com> Start on lowering global addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115390 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
890dbbec5773fb4d3823e3102d403d79900b08bc 02-Oct-2010 Eric Christopher <echristo@apple.com> Start on lowering global addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115390 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
73b55ea192583f82c54ba3f6b8ae99422da478a8 02-Oct-2010 Jim Grosbach <grosbach@apple.com> PrintSpecial() can go away now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115376 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.h
443e625d8a2198c1793833fa1754f78e2492f4c3 02-Oct-2010 Jim Grosbach <grosbach@apple.com> PrintSpecial() can go away now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115376 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/ARMInstPrinter.h
b5c35d50da767a1f37896a024a1b1a8d331b77ae 02-Oct-2010 Eric Christopher <echristo@apple.com> Stub out constant GV handling, fixes C++ eh tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115375 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
c9932f6f60827e31395d5254fda73f03257963ae 02-Oct-2010 Eric Christopher <echristo@apple.com> Stub out constant GV handling, fixes C++ eh tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115375 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e3260ba1f26845dda20ab0c8637934e47f1983fd 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
RMAsmPrinter.cpp
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.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
RMAsmPrinter.cpp
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
76cea02299a10bb041c38215dee4f88355106e2b 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke a bunch of no-longer-needed comment-only asm strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115370 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
adde5da63895d9c68c07c53c25083f6e4e9e8a65 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke a bunch of no-longer-needed comment-only asm strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115370 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4c66d6599df041744cde788827658bffd700f7da 02-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix r115332: correctly model AGU / NEON mux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115365 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
055028215d53759a46fcc61fe95cda4a4bdf3a35 02-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix r115332: correctly model AGU / NEON mux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115365 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
97d3291809ac35f2551f8d71bd7ff190ac4f45a2 02-Oct-2010 Owen Anderson <resistor@mac.com> Thread the determination of branch prediction hit rates back through the if-conversion heuristic APIs. For now,
stick with a constant estimate of 90% (branch predictors are good!), but we might find that we want to provide
more nuanced estimates in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115364 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
e3cc84a43d6a4bb6c50f58f3dd8e60e28787509e 02-Oct-2010 Owen Anderson <resistor@mac.com> Thread the determination of branch prediction hit rates back through the if-conversion heuristic APIs. For now,
stick with a constant estimate of 90% (branch predictors are good!), but we might find that we want to provide
more nuanced estimates in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115364 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
3ec104aa69da2d9677e2268e8b4ac2a4d882a0ba 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Rename the AsmPrinter directory to InstPrinter for those targets that have
been MC-ized for assembly printing. MSP430 is mostly so, but still has the
asm printer and lowering code in the printer subdir for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115360 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
smPrinter/CMakeLists.txt
smPrinter/Makefile
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
nstPrinter/CMakeLists.txt
nstPrinter/Makefile
akefile
7ac1609a3b81504d269bf967060241c309771f23 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Rename the AsmPrinter directory to InstPrinter for those targets that have
been MC-ized for assembly printing. MSP430 is mostly so, but still has the
asm printer and lowering code in the printer subdir for the moment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115360 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
smPrinter/CMakeLists.txt
smPrinter/Makefile
nstPrinter/ARMInstPrinter.cpp
nstPrinter/ARMInstPrinter.h
nstPrinter/CMakeLists.txt
nstPrinter/Makefile
akefile
5fd189c81a2df52a0cbfaf30c21c52b88301434e 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix scheduling infor for vmovn and vshrn which I broke accidentially.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115354 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMScheduleA8.td
ef0ccad72559e51cca878590c40aed06d286dc54 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> Fix scheduling infor for vmovn and vshrn which I broke accidentially.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115354 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMScheduleA8.td
f2e515d314d3651199a4f90d5ce39e52fd79fa40 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add operand cycles for vldr / vstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115353 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
df9da6a0336e40ef78da2cb467d2ea0015a01db8 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> Add operand cycles for vldr / vstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115353 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
50ed1bbd11e637b0a0ddbd939748d570d7a436d5 01-Oct-2010 Eric Christopher <echristo@apple.com> Direct calls only for arm fast isel for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115350 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e6ca6771e330a0590d529d94f72201c05d0cf6f8 01-Oct-2010 Eric Christopher <echristo@apple.com> Direct calls only for arm fast isel for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115350 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
14d61a579b356441eedef8ceaef025afa1dd23fd 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> NEON scheduling info fix. vmov reg, reg are single cycle instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115344 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
cae6a12a999ef9434f110950d453814ab41d2156 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> NEON scheduling info fix. vmov reg, reg are single cycle instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115344 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
fb3dade3906887cde4e14399796964baddb24569 01-Oct-2010 Eric Christopher <echristo@apple.com> Fix thinko on store instructions. Fixes test_indvars failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115342 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
45547b844d6a1cd69d6f71ec304948896c89bf43 01-Oct-2010 Eric Christopher <echristo@apple.com> Fix thinko on store instructions. Fixes test_indvars failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115342 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bd3e51a313193f11126b098d2a444528192d9b1b 01-Oct-2010 Owen Anderson <resistor@mac.com> Make the spelling of the flags for old-style if-conversion heuristics consistent between ARM and Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115341 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
00d4f48168eae664e1f8fefc17a912c05b878513 01-Oct-2010 Owen Anderson <resistor@mac.com> Make the spelling of the flags for old-style if-conversion heuristics consistent between ARM and Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115341 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
90bf97bb79885e0ead7ccfece4d7dcb325ba9400 01-Oct-2010 Owen Anderson <resistor@mac.com> Provide an option to restore old-style if-conversion heuristics for Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115339 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
humb2InstrInfo.h
aa9f0a57d03b1eef5a58c48b05f6657d2a5a0d0a 01-Oct-2010 Owen Anderson <resistor@mac.com> Provide an option to restore old-style if-conversion heuristics for Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115339 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
humb2InstrInfo.h
f4bf950374787eae2d778e48dcb3abc4c995d553 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> Per Cortex-A9 pipeline diagram. AGU (core load / store issue) and NEON/FP issue are multiplexed. Model it correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115332 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
7c3423f4138fde8c38e87894e72f6658cee8cc7b 01-Oct-2010 Evan Cheng <evan.cheng@apple.com> Per Cortex-A9 pipeline diagram. AGU (core load / store issue) and NEON/FP issue are multiplexed. Model it correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115332 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
56e513b9786d85d01d551e6744c8be8adedb4036 01-Oct-2010 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115314 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
bffa1a5cf3de7d46c71fea93835c6e84f33674e3 01-Oct-2010 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115314 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
76c25b039aba3d31a8f7b4ae03334bac585baa51 01-Oct-2010 Eric Christopher <echristo@apple.com> Implement double return values in calls. Fixes
SingleSource/Regression/C/casts.c.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115246 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
14df88282bf897403db6ac1dc20ad01a0ae79835 01-Oct-2010 Eric Christopher <echristo@apple.com> Implement double return values in calls. Fixes
SingleSource/Regression/C/casts.c.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115246 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
038e3a35b69cc1591ebcb1f384b3a9bb672e5ba8 01-Oct-2010 Owen Anderson <resistor@mac.com> Temporarily add a flag to make it easier to compare the new-style ARM if
conversion heuristics to the old-style ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115239 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b3c04ec956247a984b3113a01cfbfad91e5ca5b3 01-Oct-2010 Owen Anderson <resistor@mac.com> Temporarily add a flag to make it easier to compare the new-style ARM if
conversion heuristics to the old-style ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115239 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7f7e8331e9c81dd001e81a8f9ab2b362191c2c2f 01-Oct-2010 Eric Christopher <echristo@apple.com> Movement and cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115225 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
086378597df590e6401abf90d0b5edb09bbaa297 01-Oct-2010 Eric Christopher <echristo@apple.com> Movement and cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115225 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
006b8284a3ebe6c5860c05c615505ef3c0fc460e 30-Sep-2010 Eric Christopher <echristo@apple.com> Start of generalized call support for ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115203 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f9764fa14fc6e168956bd53e696e8aa4e7b5d42e 30-Sep-2010 Eric Christopher <echristo@apple.com> Start of generalized call support for ARM fast isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115203 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f380e252b7c91150e3d1b991c01d733f9e34a267 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Nuke a few more unused asm strings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115193 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
a3fbadfcd882f9f15bda7c1213b5ff52d6582a10 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Nuke a few more unused asm strings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115193 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
a29700f5e904147b19152401e14fe090c922448d 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Move getPointerSize() to the base class since it's not dependent on MachO
vs. ELF

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115180 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
3787a40e038d6444a1b0e93f1cdc55fb006a5392 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Move getPointerSize() to the base class since it's not dependent on MachO
vs. ELF

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115180 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
af5eab57945e5ada32b01b82928bba4d8c265222 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove extraneous ';'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115176 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
af2a8b21f1a172f1d8156c502bc59f9d1335168f 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove extraneous ';'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115176 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a1eada6425624de8f74f5a64b25daee5c1a2c81e 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
a31eb15fec5b7897e67254ab17aa1b8faac1bee0 30-Sep-2010 Kevin Enderby <enderby@apple.com> Adds getPointerSize() to the AsmBackend which will be needed by the final patch
for the dwarf .loc support to emit dwarf line number tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115153 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
8ebf66236e1a0a3f6796abcbf6be83eb6a55e3fa 30-Sep-2010 Kevin Enderby <enderby@apple.com> Adds getPointerSize() to the AsmBackend which will be needed by the final patch
for the dwarf .loc support to emit dwarf line number tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115153 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
6a566e9d951ef68d6fdc3e1c5ad90e672e8cd00f 30-Sep-2010 Jim Grosbach <grosbach@apple.com> 80 column fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115149 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2f24c4ece09f1157c5cb29357d91d2a0d77eb57c 30-Sep-2010 Jim Grosbach <grosbach@apple.com> 80 column fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115149 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
542a0940a9f259cda1901c416e8c8688d23d5085 30-Sep-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Fix two tiny issues (ARM does not need COFF) and comment sanity.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115147 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
a4c27248b5ddba8c821889abf8c222950b3426ef 30-Sep-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Fix two tiny issues (ARM does not need COFF) and comment sanity.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115147 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
4fed2a8336f26d84851fea2cb1ae165b1e80148e 30-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115136 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
f73fd7278f2bebd435c84c55a79db8ccb07d3534 30-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115136 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
48cac28aed85f0d54885ba396fa4bbb626396dd2 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove misplaced ';'. Make buildbots happy, hopefully.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115135 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
87dc3aa2d87871f1affc6f3f2fa587c7b6725d83 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove misplaced ';'. Make buildbots happy, hopefully.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115135 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmBackend.cpp
34990b4f9cdf3ae85e86932bc06f2be736af6de0 30-Sep-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Tiny patch for proof-of-concept cleanup of ARMAsmPrinter::EmitStartOfAsmFile()
Small test for sanity check of resulting ARM .s file.
Tested against -r115129.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115133 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
afd1cc25786f68ca56a63d29ea2bd297990e9f81 30-Sep-2010 Jason W Kim <jason.w.kim.2009@gmail.com> Tiny patch for proof-of-concept cleanup of ARMAsmPrinter::EmitStartOfAsmFile()
Small test for sanity check of resulting ARM .s file.
Tested against -r115129.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115133 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
973b31a55125174f29e6cc5b317de17831bab38d 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
5e8145d8fe5a8a5ed2f9ccb59d389a6eef6cf653 30-Sep-2010 Jason W Kim <jason.w.kim.2009@gmail.com> I added a new file ARMAsmBackend which stubs out in similar ways to
the eqv X86 class.
For now, I split the ELFARMAsmBackend from the DarwinARMAsmBackend
(also mimicking X86)

Tested against -r115126



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115129 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmBackend.cpp
RMTargetMachine.cpp
MakeLists.txt
d4d4f4f488d46a9743a0c494b42b22a1b15e0e7d 30-Sep-2010 Jason W Kim <jason.w.kim.2009@gmail.com> I added a new file ARMAsmBackend which stubs out in similar ways to
the eqv X86 class.
For now, I split the ELFARMAsmBackend from the DarwinARMAsmBackend
(also mimicking X86)

Tested against -r115126



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115129 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmBackend.cpp
RMTargetMachine.cpp
MakeLists.txt
4c07ed51a71943f07d6ef00615f399389d2e72e7 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Now that the pseudos that needed this are all custom lowered, we can go back
to an empty PrintSpecial()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115128 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
a4e97de71d7dd890eb9f705710bd094f0fa7ac49 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Now that the pseudos that needed this are all custom lowered, we can go back
to an empty PrintSpecial()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115128 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
8a8e5fe14352aaeb0ccc1c9cda5698d004dac093 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Nuke it from orbit. It's the only way to be sure.

(Kill the dead non-MC asm printer for the ARM target.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115127 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
2317e40539aac11da00bd587b5f0def04d989769 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Nuke it from orbit. It's the only way to be sure.

(Kill the dead non-MC asm printer for the ARM target.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115127 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
e5ae8136455a0d920c957629e9a5e2c496a2f33c 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
4b7451800f06c328e1cd33b96d9aa79ed33bae82 30-Sep-2010 Eric Christopher <echristo@apple.com> Refactor arm fast isel libcall handling so that pieces can be used
for generic call handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115105 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a9a7a1a9a557cc03d1fed6cba3f27520be5274c0 30-Sep-2010 Eric Christopher <echristo@apple.com> Refactor arm fast isel libcall handling so that pieces can be used
for generic call handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115105 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3ace4f36ced9f788c7e06afd1bc76a41fad8539e 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
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.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
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
b71f561c52dc16e823fef3f5a2801abbec594bd7 30-Sep-2010 Eric Christopher <echristo@apple.com> Add a convenience variable so I'm not chasing all over looking for
a context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115094 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8cf6c60710c7924bcd0235f37e4d613f9abf7dc6 30-Sep-2010 Eric Christopher <echristo@apple.com> Add a convenience variable so I'm not chasing all over looking for
a context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115094 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
326c3ac04b4344149c2cab663c0e27e342146727 29-Sep-2010 Jim Grosbach <grosbach@apple.com> Add specializations of addrmode2 that allow differentiating those forms
which require the use of the shifter-operand. This will be used to split
the ldr/str instructions such that those versions needing the shifter operand
can get a different scheduling itenerary, as in some cases, the use of the
shifter can cause different scheduling than the simpler forms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115066 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
828916203a731c5031fbe440f1fc6cdf82b2e711 29-Sep-2010 Jim Grosbach <grosbach@apple.com> Add specializations of addrmode2 that allow differentiating those forms
which require the use of the shifter-operand. This will be used to split
the ldr/str instructions such that those versions needing the shifter operand
can get a different scheduling itenerary, as in some cases, the use of the
shifter can cause different scheduling than the simpler forms.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115066 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
1bcb1b4fc19f798f3922f9d6eed4b709845b91e7 29-Sep-2010 Bob Wilson <bob.wilson@apple.com> Increase ARM APCS preferred alignment for i64 and f64 from 32 bits to 64 bits.
LDM/STM instructions can run one cycle faster on some ARM processors if the
memory address is 64-bit aligned. Radar 8489376.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115047 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMSubtarget.h
7122ba7efb5430d724ed3a0ac86fa7f7185b43ba 29-Sep-2010 Bob Wilson <bob.wilson@apple.com> Increase ARM APCS preferred alignment for i64 and f64 from 32 bits to 64 bits.
LDM/STM instructions can run one cycle faster on some ARM processors if the
memory address is 64-bit aligned. Radar 8489376.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115047 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMSubtarget.h
16981f3fcf2eda510393df72581b4eab042e7f20 29-Sep-2010 Jim Grosbach <grosbach@apple.com> Add braces for legibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115043 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
be91232900776c23d4b327be7bc3f03f711d11a8 29-Sep-2010 Jim Grosbach <grosbach@apple.com> Add braces for legibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115043 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6c6005eccd76a66ed897310fccf8aa1b90f2937b 29-Sep-2010 Jim Grosbach <grosbach@apple.com> One Printer to rule them all, One Printer to find them,
One Printer to lower them all and in the back end bind them.


(Remove option to use the old non-MC asm printer.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115038 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b454cdaebc6e4543099955ce043258c3903b1a0e 29-Sep-2010 Jim Grosbach <grosbach@apple.com> One Printer to rule them all, One Printer to find them,
One Printer to lower them all and in the back end bind them.


(Remove option to use the old non-MC asm printer.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115038 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
123c7e86b555dae59adb497c43e04b4301d3b386 29-Sep-2010 Gabor Greif <ggreif@gmail.com> improve heuristics to find the 'and' corresponding to 'tst' to also catch opportunities on thumb2
added some doxygen on the way

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115033 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
05642a3eba3f35aa8fdf6aa16d87561560e60af3 29-Sep-2010 Gabor Greif <ggreif@gmail.com> improve heuristics to find the 'and' corresponding to 'tst' to also catch opportunities on thumb2
added some doxygen on the way

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115033 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
3918081b73d24896b8ec4e0f17d27e1bc18ed1b2 29-Sep-2010 Chris Lattner <sabre@nondot.org> implement rdar://8456378 and PR7557 - support for the fstsw,
an instruction that requires a WHOLE NEW wonderful kind of alias.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115015 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7c51a3172cf5104ebeaef22f1366fa634ca00d85 29-Sep-2010 Chris Lattner <sabre@nondot.org> implement rdar://8456378 and PR7557 - support for the fstsw,
an instruction that requires a WHOLE NEW wonderful kind of alias.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115015 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c575a6ad74eadff19e5e632faf241ab24dcbf0ee 29-Sep-2010 Chris Lattner <sabre@nondot.org> change the protocol TargetAsmPArser::MatchInstruction method to take an
MCStreamer to emit into instead of an MCInst to fill in. This allows the
matcher extra flexibility and is more convenient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115014 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7036f8be4df8a1a830ca01afe9497b035a5647d6 29-Sep-2010 Chris Lattner <sabre@nondot.org> change the protocol TargetAsmPArser::MatchInstruction method to take an
MCStreamer to emit into instead of an MCInst to fill in. This allows the
matcher extra flexibility and is more convenient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115014 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
98cd9c0e3f4a221ec699de66f6c6a327f4ba64d6 29-Sep-2010 Eric Christopher <echristo@apple.com> Rework comparison handling to set a register on true/false. This avoids
problems with phi-nodes in blocks that have hard and not virtual registers.

Accordingly update branch handling to compensate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115013 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
229207aa2edaeb872e9f987ad8df3a67455f240c 29-Sep-2010 Eric Christopher <echristo@apple.com> Rework comparison handling to set a register on true/false. This avoids
problems with phi-nodes in blocks that have hard and not virtual registers.

Accordingly update branch handling to compensate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115013 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
629d060ad46c6a512fcd120985e07a410b15b649 29-Sep-2010 Eric Christopher <echristo@apple.com> Remove unnecessary set ahead of time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115011 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f8476e6742d22f97932409e79b59a693df6b5947 29-Sep-2010 Eric Christopher <echristo@apple.com> Remove unnecessary set ahead of time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115011 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1e11b96bdd475390ef783145107b29caa62640b4 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
98d3af863f5d21f782bc8518d4a59137ba46e315 29-Sep-2010 Eric Christopher <echristo@apple.com> Remove assert, add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115009 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
98de5b46039984759f236cf991b0eebd179e9411 29-Sep-2010 Eric Christopher <echristo@apple.com> Remove assert, add comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115009 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8a80e302b07346c988ef58e7501a6d907284f80b 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
03248d8bf693d3d865e4fd8c2110887ec4433e26 29-Sep-2010 Evan Cheng <evan.cheng@apple.com> Add support to model pipeline bypass / forwarding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115005 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
63d66eed16a6ee4e838f2f7a4c8299def0722c20 29-Sep-2010 Evan Cheng <evan.cheng@apple.com> Add support to model pipeline bypass / forwarding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115005 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
973fcf845fcbdf77e166eb49b16d358c30359d77 29-Sep-2010 Eric Christopher <echristo@apple.com> 32-bit constant ints only for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115001 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
744c7c8e1b9bf166ded2b4e0b57638a004a44f8d 29-Sep-2010 Eric Christopher <echristo@apple.com> 32-bit constant ints only for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115001 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
335edd1b5f4d10458376cf20cda536fc291f5a10 29-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Removed a bunch of unnecessary target_link_libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114999 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
3609eb0de2f786ca6917d0388c37c23873dbd247 29-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Removed a bunch of unnecessary target_link_libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114999 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
864e65a8b1191b8f92fd68dd28feef50ef163c43 28-Sep-2010 Owen Anderson <resistor@mac.com> Add a subtarget hook for reporting the misprediction penalty. Use this to provide more precise
cost modeling for if-conversion. Now if only we had a way to estimate the misprediction probability.

Adjsut CodeGen/ARM/ifcvt10.ll. The pipeline on Cortex-A8 is long enough that it is still profitable
to predicate an ldm, but the shorter pipeline on Cortex-A9 makes it unprofitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114995 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMSubtarget.cpp
RMSubtarget.h
654d5440a477b1f6c89b051107e041a331f78e27 28-Sep-2010 Owen Anderson <resistor@mac.com> Add a subtarget hook for reporting the misprediction penalty. Use this to provide more precise
cost modeling for if-conversion. Now if only we had a way to estimate the misprediction probability.

Adjsut CodeGen/ARM/ifcvt10.ll. The pipeline on Cortex-A8 is long enough that it is still profitable
to predicate an ldm, but the shorter pipeline on Cortex-A9 makes it unprofitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114995 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMSubtarget.cpp
RMSubtarget.h
fda713abc03c74dab3ff16b7739494061481c82f 28-Sep-2010 Eric Christopher <echristo@apple.com> Integer materialization needed the same thinko change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114994 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fd60980eb248f44927ea55c1f8d11fa019d318a6 28-Sep-2010 Eric Christopher <echristo@apple.com> Integer materialization needed the same thinko change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114994 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5633d7d7981397593da2839256668dd437af9dbc 28-Sep-2010 Nick Lewycky <nicholas@mxc.ca> Resolve this GCC warning:
ARMTargetMachine.cpp:53: error: control reaches end of non-void function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114992 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
a6136b7156fb8ed9b5ed3fc27296096ea0d5c99e 28-Sep-2010 Nick Lewycky <nicholas@mxc.ca> Resolve this GCC warning:
ARMTargetMachine.cpp:53: error: control reaches end of non-void function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114992 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8a92d8523b69c492e788c6b83f52307bb9e2750f 28-Sep-2010 Anton Korobeynikov <asl@math.spbu.ru> User proper libcall names & condcodes while compiling for ARM EABI.
Patch by Evzen Muller!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114991 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4f922f2cca58d794671afedc22f82d96aeb46afa 28-Sep-2010 Anton Korobeynikov <asl@math.spbu.ru> User proper libcall names & condcodes while compiling for ARM EABI.
Patch by Evzen Muller!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114991 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e527996e6891f18196ca628be56aa31beff2e593 28-Sep-2010 Owen Anderson <resistor@mac.com> Part one of switching to using a more sane heuristic for determining if-conversion profitability.
Rather than having arbitrary cutoffs, actually try to cost model the conversion.

For now, the constants are tuned to more or less match our existing behavior, but these will be
changed to reflect realistic values as this work proceeds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114973 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
b20b85168c0e9819e6545f08281e9b83c82108f0 28-Sep-2010 Owen Anderson <resistor@mac.com> Part one of switching to using a more sane heuristic for determining if-conversion profitability.
Rather than having arbitrary cutoffs, actually try to cost model the conversion.

For now, the constants are tuned to more or less match our existing behavior, but these will be
changed to reflect realistic values as this work proceeds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114973 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
9bc2306405d3c8c38ed949579e388272246227a7 28-Sep-2010 Jim Grosbach <grosbach@apple.com> Factor out dbg_value comment printing and teach MC asm printing to use it.
This should make the arm-linux self-host buildbot happy again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114964 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2d0f53bd6348be3b28ffa53c37e3079bb33dd170 28-Sep-2010 Jim Grosbach <grosbach@apple.com> Factor out dbg_value comment printing and teach MC asm printing to use it.
This should make the arm-linux self-host buildbot happy again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114964 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8c68f5d6edb01207d27c57325eba1cb04dfced6a 28-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Add ARM Disassembler to the CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114949 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
isassembler/ARMDisassembler.cpp
isassembler/CMakeLists.txt
38e1390c29c024d5bbff3063c2a86bceb7bd3e60 28-Sep-2010 Oscar Fuentes <ofv@wanadoo.es> Add ARM Disassembler to the CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114949 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
isassembler/ARMDisassembler.cpp
isassembler/CMakeLists.txt
053e08ef7627a2edc3ee52f75897b437ca300c7d 28-Sep-2010 Eric Christopher <echristo@apple.com> 80-col fixups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114943 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMELFWriterInfo.cpp
RMGlobalMerge.cpp
a99c3e9acd95f5fbfb611e3f807240cd74001142 28-Sep-2010 Eric Christopher <echristo@apple.com> 80-col fixups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114943 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMELFWriterInfo.cpp
RMGlobalMerge.cpp
60b668c67a68ae36db5a8f1676c4baa8babfa294 28-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add a command line option "-arm-strict-align" to disallow unaligned memory
accesses for ARM targets that would otherwise allow it. Radar 8465431.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114941 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
02aba73a9ec04d0de9424422249af3948ca9573a 28-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add a command line option "-arm-strict-align" to disallow unaligned memory
accesses for ARM targets that would otherwise allow it. Radar 8465431.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114941 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
72b926bb743135098e1727804c3750279e63b37e 28-Sep-2010 Eric Christopher <echristo@apple.com> Rework builtin handling and call setup. The builtin handling
now takes a libcall operand, sets up the arguments correctly and
handles stack adjustments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114934 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7ed8ec94d96cc87e768fd5ebe4ddeb04dd56e8ab 28-Sep-2010 Eric Christopher <echristo@apple.com> Rework builtin handling and call setup. The builtin handling
now takes a libcall operand, sets up the arguments correctly and
handles stack adjustments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114934 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e387baadc1716e1b0be54d270f708f25cc4c32c3 28-Sep-2010 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114931 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
5371cabfc26ced514069de95cd04f6311f782716 28-Sep-2010 Eric Christopher <echristo@apple.com> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114931 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7194838a9d1f7770c9bf905ea1fa3eef49adcf99 28-Sep-2010 Eric Christopher <echristo@apple.com> Fix fp constant loads to have a destination register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114930 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f5732c4ee5af93bddeb8f4612441bfdf19237ea3 28-Sep-2010 Eric Christopher <echristo@apple.com> Fix fp constant loads to have a destination register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114930 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9f9d21646c876bcc3ca886a9b2b917d4cc4da4ad 28-Sep-2010 Jim Grosbach <grosbach@apple.com> Enable the MC-ized ARM asm printer. Passing all local tests, so it's time to
enable it for real. Leaving the CL option in place to it's easy to disable it
again if (when) testers find something I've missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114915 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
385cc5eede9f81717b03121baf47b7aa185b5128 28-Sep-2010 Jim Grosbach <grosbach@apple.com> Enable the MC-ized ARM asm printer. Passing all local tests, so it's time to
enable it for real. Leaving the CL option in place to it's easy to disable it
again if (when) testers find something I've missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114915 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d5f2300f8566f801e9704ba67b7ecbc2a278e0de 27-Sep-2010 Jim Grosbach <grosbach@apple.com> ARM-mode eh.sjlj.longjmp MC lowering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114896 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5acb3de8b7cfd5a104722526b731a3c87bb1a46e 27-Sep-2010 Jim Grosbach <grosbach@apple.com> ARM-mode eh.sjlj.longjmp MC lowering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114896 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
66d3b4bc7c47b6fafe795ecff0d3e80858ed627e 27-Sep-2010 Jim Grosbach <grosbach@apple.com> Enable the MC-ized ARM asm printer. Passing all local tests, so it's time to
enable it for real. Leaving the CL option in place to it's easy to disable it
again if (when) testers find something I've missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114892 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
376ce97baca2bcf97ab420313a876214cde7f9df 27-Sep-2010 Jim Grosbach <grosbach@apple.com> Enable the MC-ized ARM asm printer. Passing all local tests, so it's time to
enable it for real. Leaving the CL option in place to it's easy to disable it
again if (when) testers find something I've missed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114892 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
08506221e493316521016e800c0de1fb45d46d59 27-Sep-2010 Daniel Dunbar <daniel@zuster.org> Hard to imagine there are still people using inferior compilers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114862 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
RMTargetMachine.h
3b9569e70db0b5a0d1389384a07fecbea8dc7dc2 27-Sep-2010 Daniel Dunbar <daniel@zuster.org> Hard to imagine there are still people using inferior compilers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114862 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
RMTargetMachine.h
426313624725c39521868263a2a9487abf6a8a70 27-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Odd additional stub framework for the ARM MC ELF emission.
llc now recognizes the "intent" to support MC/obj emission for ARM, but
given that they are all stubs, it asserts on --filetype=obj --march=arm

Patch by Jason Kim.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114856 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
RMELFWriterInfo.h
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
MakeLists.txt
fd9493d74e5429eab44638cd9badbad9090cd713 27-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Odd additional stub framework for the ARM MC ELF emission.
llc now recognizes the "intent" to support MC/obj emission for ARM, but
given that they are all stubs, it asserts on --filetype=obj --march=arm

Patch by Jason Kim.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114856 91177308-0d34-0410-b5e6-96231b3b80d8
RMELFWriterInfo.cpp
RMELFWriterInfo.h
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
MakeLists.txt
b59abc868b75fdd4310c93603cb71089a7587a92 27-Sep-2010 Eric Christopher <echristo@apple.com> Insert missing coherency in comment. Add a quick check for hardware
divide support also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114813 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1127c720ede18f8ffaae4d7d6209569803c24720 27-Sep-2010 Eric Christopher <echristo@apple.com> Insert missing coherency in comment. Add a quick check for hardware
divide support also.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114813 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7802e5e2d2d62b32697a6953746e60e2202700d3 27-Sep-2010 Eric Christopher <echristo@apple.com> Mass rename for Jim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114812 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
43b62beb4cac4337a080c2d3fb8f218a7ffb59c3 27-Sep-2010 Eric Christopher <echristo@apple.com> Mass rename for Jim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114812 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e96a4b04467e75ca151de180d43c34b2b05487e2 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix IIC_iEXTAr itinerary class of Cortex-A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114784 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
5981fc67883bfa74ac13625b05442b54ea7f6a1f 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix IIC_iEXTAr itinerary class of Cortex-A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114784 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
1fb3657d51ef470589d7a7a5361fd6c14029cf2f 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Remove a unused instruction itinerary class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114782 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
27fdcd1c95fb1ded32d5e3876fed3c0f0641ab30 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Remove a unused instruction itinerary class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114782 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
e459ad4380c5eed48471d4dac025f732c909f6d3 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix zero and sign extension instructions scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114780 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
576a3968a2c1607d0ca0d87b28f8509b633e4bf0 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix zero and sign extension instructions scheduling itineraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114780 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
ccba3a6a1ddb723aa799044d9b1c3c5392d0b22d 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
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.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
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
6b530794d75c306471eeb68594209c71072f7a29 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
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.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
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
0793c9ffeea806dbf81fd3b3a8066b435728e9f0 24-Sep-2010 Jim Grosbach <grosbach@apple.com> Add ARM explicit MCInst lowering for the Thumb eh.sjlj.setjmp sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114758 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
433a5785cc8201a8a384f0a5648d3dbac87f9fbc 24-Sep-2010 Jim Grosbach <grosbach@apple.com> Add ARM explicit MCInst lowering for the Thumb eh.sjlj.setjmp sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114758 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5884f8942ef5602d7f29bfec1731b2e7e2d211a4 24-Sep-2010 Evan Cheng <evan.cheng@apple.com> Enable code placement optimization pass for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114746 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fff606d7b2d65495050360056acc65ec667a93b5 24-Sep-2010 Evan Cheng <evan.cheng@apple.com> Enable code placement optimization pass for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114746 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b2a7dae5aecf58c776dbcf760df734c68bbf50b7 24-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix a potential null dereference bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114723 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
de0e11c8f3f9ad60844c210bf68111db6e25f9a9 24-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix a potential null dereference bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114723 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
325fc0b687d114113f2cb557248677be8817ebf0 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
85a5c32287005113b019b2bb105f66a70ccd8c73 24-Sep-2010 Bob Wilson <bob.wilson@apple.com> Set alignment operand for NEON VST instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114709 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
2a6e6161422154ea44f9e653e2d0bbfc3942af2b 24-Sep-2010 Bob Wilson <bob.wilson@apple.com> Set alignment operand for NEON VST instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114709 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
53748dfadb43e5be17e2b3572ea1f172f88019ae 24-Sep-2010 Jim Grosbach <grosbach@apple.com> ARM-mode eh.sjlj.setjmp pseudo MC-inst lowering expansion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114707 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
453900814e5245fd823b2b24ee9da9b5e8b4bfc4 24-Sep-2010 Jim Grosbach <grosbach@apple.com> ARM-mode eh.sjlj.setjmp pseudo MC-inst lowering expansion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114707 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6c5ab7e1bfc83a4b9b267f4cd8e69042b1f4799f 24-Sep-2010 Jim Grosbach <grosbach@apple.com> #+4 --> #4 for consistency with other asm output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114706 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b327e1374025f877f323d47b812e543e350c9885 24-Sep-2010 Jim Grosbach <grosbach@apple.com> #+4 --> #4 for consistency with other asm output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114706 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4c228fedc212271c3f6842614b5c7621a859bfeb 24-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix formatting of output .s code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114705 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
45d6c1777ceb7102db5907fed0e4899a0b006afe 24-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix formatting of output .s code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114705 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f8d2879879cfaf559732c749ce26f3a91c6b55cf 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
5aaa41eb610f9a75bfdd6f8cf339661fa0e07f49 23-Sep-2010 Bob Wilson <bob.wilson@apple.com> Set alignment operand for NEON VLD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114696 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
40ff01a0305403541353ac83f9f498ab67ebe944 23-Sep-2010 Bob Wilson <bob.wilson@apple.com> Set alignment operand for NEON VLD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114696 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1c4637a4c3d7d4e4eda87ca1afde63569bf3f97d 23-Sep-2010 Jim Grosbach <grosbach@apple.com> never mind. I can't read, apparently

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114689 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b2dda4bd346fe9a2795f83f659c0e60191b2e6a0 23-Sep-2010 Jim Grosbach <grosbach@apple.com> never mind. I can't read, apparently

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114689 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8b9a36b52679b633fee66f5d358969513c491218 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix r114632. Return if the only terminator is an unconditional branch after the redundant ones are deleted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114688 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
676e258366dd17a0b4ee6ac66914237ce181202e 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix r114632. Return if the only terminator is an unconditional branch after the redundant ones are deleted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114688 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1706da4737f6ed7b5d3fd37e747e24980b862e59 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix opcode value for the 'trap' instruction, keeping the type suffix on the
constant. Hopefully the non-Darwin bots will like it...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114687 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
24e6f2f802e43af0e3c72ed17fa73e3bc101dc9e 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix opcode value for the 'trap' instruction, keeping the type suffix on the
constant. Hopefully the non-Darwin bots will like it...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114687 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
57394d076cb1b7c080dbe0cced4d30980f2d5c7c 23-Sep-2010 Jim Grosbach <grosbach@apple.com> explicit 'unsigned long' on constant value. Hopefully make bots happier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114686 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5c49b6960967be165cdf5877832772da048e9690 23-Sep-2010 Jim Grosbach <grosbach@apple.com> explicit 'unsigned long' on constant value. Hopefully make bots happier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114686 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2f37999b5b22d74980ef282c7fca4267ea4b7c43 23-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Unbreak build. Jim, please review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114684 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c8ab9eb066f6d35880e3a24436baf21236c921ca 23-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Unbreak build. Jim, please review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114684 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
9ed10a8c494c6bbe77525ad676d9739ffed01b81 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Clean up the 'trap' instruction printing a bit. Non-Darwin assemblers don't
(yet) recognize the 'trap' mnemonic, so we use .short/.long to emit the
opcode directly. On Darwin, however, we do want the mnemonic for more
readable assembly code and better disassembly.

Adjust the .td file to use the 'trap' mnemonic and handle using the binutils
workaround in the assembly printer. Also tweak the formatting of the opcode
values to make them consistent between the MC printer and the old printer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114679 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
2e6ae13bf6e09d844b76b0a12861d25be0842b03 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Clean up the 'trap' instruction printing a bit. Non-Darwin assemblers don't
(yet) recognize the 'trap' mnemonic, so we use .short/.long to emit the
opcode directly. On Darwin, however, we do want the mnemonic for more
readable assembly code and better disassembly.

Adjust the .td file to use the 'trap' mnemonic and handle using the binutils
workaround in the assembly printer. Also tweak the formatting of the opcode
values to make them consistent between the MC printer and the old printer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114679 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
d4d16f04baaf4ff6369630c3090f0a6188a4a3ed 23-Sep-2010 Jim Grosbach <grosbach@apple.com> nuke unused var

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114676 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.h
16c9a64c287dba4c58404b92b3fa9a9089e649f7 23-Sep-2010 Jim Grosbach <grosbach@apple.com> nuke unused var

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114676 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.h
d64d18815e1b650b7f547fd9da766c151f3bd6ef 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> If there are multiple unconditional branches terminating a block, eliminate all
but the first one. Those will never be executed. There was logic to do this
but it was faulty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114632 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
108c8724663354050dc09bb1262c3e4511adf82f 23-Sep-2010 Evan Cheng <evan.cheng@apple.com> If there are multiple unconditional branches terminating a block, eliminate all
but the first one. Those will never be executed. There was logic to do this
but it was faulty.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114632 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
6ccb0331c5a446f4e10e4361adb8e99412a30291 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Add support for ELF PLT references for ARM MC asm printing. Adding a
new VariantKind to the MCSymbolExpr seems like overkill, but I'm not sure
there's a more straightforward way to get the printing difference captured.
(i.e., x86 uses @PLT, ARM uses (PLT)).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114613 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMISelLowering.cpp
RMMCInstLower.cpp
RMMCInstLower.h
637d89fe0eca4fa2b9c95f6c15eb69a99bae83bc 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Add support for ELF PLT references for ARM MC asm printing. Adding a
new VariantKind to the MCSymbolExpr seems like overkill, but I'm not sure
there's a more straightforward way to get the printing difference captured.
(i.e., x86 uses @PLT, ARM uses (PLT)).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114613 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
RMISelLowering.cpp
RMMCInstLower.cpp
RMMCInstLower.h
8cbf3867a659527d2c5b1a66ff4f3cc01c4a9913 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Enable a few additional asserts in MC instruction lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114601 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
b6ec8cae3cf437ea4e3d39ad209a0687df4686c3 23-Sep-2010 Jim Grosbach <grosbach@apple.com> Enable a few additional asserts in MC instruction lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114601 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
f0064aed8b3ab56508e32549da63bca5eb6ee224 23-Sep-2010 Bob Wilson <bob.wilson@apple.com> Change VDUPLANE DAG combiner to just return the result instead of calling
CombineTo to avoid putting the result on the worklist. I don't think it makes
much difference for now, but it might help someday as we add more DAG
combine optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114595 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b68987e4bff7cd269e0cb40b30851e9c2195db99 23-Sep-2010 Bob Wilson <bob.wilson@apple.com> Change VDUPLANE DAG combiner to just return the result instead of calling
CombineTo to avoid putting the result on the worklist. I don't think it makes
much difference for now, but it might help someday as we add more DAG
combine optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114595 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7f60fbdd23156b2d873e9fcf52ccf6bd449d0f95 23-Sep-2010 Bob Wilson <bob.wilson@apple.com> Combine both VMOVDRR(VMOVRRD) and VMOVRRD(VMOVDRR), instead of just doing one
of those. Refactor to share code for handling BUILD_VECTOR(VMOVRRD).
I don't have a testcase that exercises this, but it seems like an obvious
good thing to do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114589 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0b8ccb82527616d0fabe5083e69a05e1950caff2 23-Sep-2010 Bob Wilson <bob.wilson@apple.com> Combine both VMOVDRR(VMOVRRD) and VMOVRRD(VMOVDRR), instead of just doing one
of those. Refactor to share code for handling BUILD_VECTOR(VMOVRRD).
I don't have a testcase that exercises this, but it seems like an obvious
good thing to do.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114589 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e804549cef90325d3e835a35b717f3e49fe4bea8 22-Sep-2010 Jim Grosbach <grosbach@apple.com> add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114578 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f0633e48eb9d70d5db31a7498736ba21a9ee410c 22-Sep-2010 Jim Grosbach <grosbach@apple.com> add FIXME

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114578 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d2799e6b8038234bfb577080d49aa4f460f52d42 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove a few commented out bits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114576 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
bfbe1875934f046eb5cdb107fb5eccd6d86f7db5 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove a few commented out bits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114576 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
e5a72558a47713fb4dd9776bfe3df25a9508605b 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add PrintSpecial() handling for in ARM MC instruction printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
00d01f1a427c34f444f1935911529becfbf1d51e 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add PrintSpecial() handling for in ARM MC instruction printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114563 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
e92e926046a03d1a30ab93411016aa8482780fe1 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add MC instruction printer support for ARM and Thumb1 jump tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114555 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a2244cb38781e596110023399c7902b5ee5087fe 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add MC instruction printer support for ARM and Thumb1 jump tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114555 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7bdff5a29be0e30e5b480f2d644cec89c1f2fa18 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add MC instruction printer support for TB[BH] style thumb2 jump tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114553 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
205a5fa8e4233cdcdc71152c0f8c4334ea9ce2eb 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add MC instruction printer support for TB[BH] style thumb2 jump tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114553 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5a941003c464d59aa0e5ead0be73c45340518454 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Clean up comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114550 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
1b935a3d2e2619c7de2488163fc1501285b53fa3 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Clean up comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114550 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
bf7eb36976d6e715fee5da407beea6ac3a10ca28 22-Sep-2010 Evan Cheng <evan.cheng@apple.com> OptimizeCompareInstr should avoid iterating pass the beginning of the MBB when the 'and' instruction is after the comparison.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114506 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
691e64a54ce899409abe7c131d15ed75e3c1fef5 22-Sep-2010 Evan Cheng <evan.cheng@apple.com> OptimizeCompareInstr should avoid iterating pass the beginning of the MBB when the 'and' instruction is after the comparison.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114506 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
27b1a4a11cbaddd5d4a7227427d7e3caca501550 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add start of support for MC instruction printer of ARM jump tables. Filling in
the rest of it is next up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114500 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
882ef2b76a09cdc39d38756fca71cf6cf25ae590 22-Sep-2010 Jim Grosbach <grosbach@apple.com> Add start of support for MC instruction printer of ARM jump tables. Filling in
the rest of it is next up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114500 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
289b962fae94a50f636ecfac924c78bb4b797e8c 22-Sep-2010 Owen Anderson <resistor@mac.com> Enable target-specific mul-lowering on ARM, even at -Os. Remove a test that this makes
irrelevant, but add a new test for the new, improved functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114494 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
861416757246f7e2d42cc465137d520105f569ab 22-Sep-2010 Owen Anderson <resistor@mac.com> Enable target-specific mul-lowering on ARM, even at -Os. Remove a test that this makes
irrelevant, but add a new test for the new, improved functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114494 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ed3e0638525f4e5bc39d3ecc5d6282b7638ada94 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
6dc99a966d7f72d627750142b8e69e08f967bb3b 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert a couple more places to use the new getStore()



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114463 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fc448ff89b4fb7721de9da0b96fd00c13160c4c7 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert a couple more places to use the new getStore()



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114463 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
daa44a53c9445429820033b1f74f00d5ac6a338f 21-Sep-2010 Bob Wilson <bob.wilson@apple.com> Define the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON load
and store intrinsics are represented with MemIntrinsicSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114454 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
65ffec49f73d1f8856211b107712c58cc9636b78 21-Sep-2010 Bob Wilson <bob.wilson@apple.com> Define the TargetLowering::getTgtMemIntrinsic hook for ARM so that NEON load
and store intrinsics are represented with MemIntrinsicSDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114454 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
6d301553cf248f79299e4ef0ad68fc30a57f12b6 21-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix errant printing of [v]ldm instructions that aren't a pop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114445 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
532baa5d537e6cbfd0642f6f4f10ad9f8571fa85 21-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix errant printing of [v]ldm instructions that aren't a pop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114445 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4e852d5f6d7491b267ff418fb6587fe6212bc889 21-Sep-2010 Gabor Greif <ggreif@gmail.com> Fix buglet when the TST instruction directly uses the AND result.
I am unable to write a test for this case, help is solicited, though...
What I did is to tickle the code in the debugger and verify that we do the right thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114430 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
8ff9bb189ce188452e6cae6ed65cb2745814126c 21-Sep-2010 Gabor Greif <ggreif@gmail.com> Fix buglet when the TST instruction directly uses the AND result.
I am unable to write a test for this case, help is solicited, though...
What I did is to tickle the code in the debugger and verify that we do the right thing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114430 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
3b65acae5390d2c798806fbbb0080f2530771c14 21-Sep-2010 Gabor Greif <ggreif@gmail.com> Move the search for the appropriate AND instruction
into OptimizeCompareInstr.
This necessitates the passing of CmpValue around,
so widen the virtual functions to accomodate.

No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114428 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
04ac81d5db058a3a9492e1aff1f398a8643bfda9 21-Sep-2010 Gabor Greif <ggreif@gmail.com> Move the search for the appropriate AND instruction
into OptimizeCompareInstr.
This necessitates the passing of CmpValue around,
so widen the virtual functions to accomodate.

No functionality changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114428 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
1450c4d3c59001b5b0dd7d2983cc9ba88a949417 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert the targets off the non-MachinePointerInfo of getLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114410 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d1c24ed81c43635d00ff099844a9d0614021a72b 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert the targets off the non-MachinePointerInfo of getLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114410 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c515938bc6c609b156fbf3609a2849091489282d 21-Sep-2010 Chris Lattner <sabre@nondot.org> reimplement memcpy/memmove/memset lowering to use MachinePointerInfo
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114401 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
e72f2027e9116c55a5b39ac72732df8d6c45d37c 21-Sep-2010 Chris Lattner <sabre@nondot.org> reimplement memcpy/memmove/memset lowering to use MachinePointerInfo
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114401 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
b1605b16eee965667b57e2799065399b8a45dad4 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert targets to the new MF.getMachineMemOperand interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114391 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
59db5496f4fc2ef6111569e542f8b65480ef14c1 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert targets to the new MF.getMachineMemOperand interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114391 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
62c323479764f3d64349de86327d4dce8f999f14 20-Sep-2010 Jim Grosbach <grosbach@apple.com> Simplify ARM callee-saved register handling by removing the distinction
between the high and low registers for prologue/epilogue code. This was
a Darwin-only thing that wasn't providing a realistic benefit anymore.
Combining the save areas simplifies the compiler code and results in better
ARM/Thumb2 codegen.

For example, previously we would generate code like:
push {r4, r5, r6, r7, lr}
add r7, sp, #12
stmdb sp!, {r8, r10, r11}
With this change, we combine the register saves and generate:
push {r4, r5, r6, r7, r8, r10, r11, lr}
add r7, sp, #12

rdar://8445635



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114340 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMMachineFunctionInfo.h
humb1RegisterInfo.cpp
1dc335a79f5e899aacc6710dfe08ef20abb6a6c0 20-Sep-2010 Jim Grosbach <grosbach@apple.com> Simplify ARM callee-saved register handling by removing the distinction
between the high and low registers for prologue/epilogue code. This was
a Darwin-only thing that wasn't providing a realistic benefit anymore.
Combining the save areas simplifies the compiler code and results in better
ARM/Thumb2 codegen.

For example, previously we would generate code like:
push {r4, r5, r6, r7, lr}
add r7, sp, #12
stmdb sp!, {r8, r10, r11}
With this change, we combine the register saves and generate:
push {r4, r5, r6, r7, r8, r10, r11, lr}
add r7, sp, #12

rdar://8445635



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114340 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMMachineFunctionInfo.h
humb1RegisterInfo.cpp
a1b373fcaec068186b994f537df0956fc366b7d6 18-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114292 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
895dda6fb541a4c56b58dafaaa767b980b27b0c6 18-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114292 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCCodeEmitter.cpp
50e30a6ab5a4d2c5b9c2227e0a3086444810df56 18-Sep-2010 Eric Christopher <echristo@apple.com> Thumb opcodes for thumb calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114263 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
c109556a0a7f0dca78f60967c3560fcaa27097a0 18-Sep-2010 Eric Christopher <echristo@apple.com> Thumb opcodes for thumb calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114263 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
163da40c4ff7ac029534094dfe4e2cf654d6289c 18-Sep-2010 Eric Christopher <echristo@apple.com> Add addrmode5 fp load support. Swap float/thumb operand adding to handle
thumb with floating point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114256 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6dab137b889d1fafdeee9c70c2b59d549d59163a 18-Sep-2010 Eric Christopher <echristo@apple.com> Add addrmode5 fp load support. Swap float/thumb operand adding to handle
thumb with floating point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114256 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4d394ff9839e1891d27ffa0b1b2acf785805fed1 18-Sep-2010 Eric Christopher <echristo@apple.com> Floating point stores have a 3rd addressing mode type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114254 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b74558ad3e1822f90e363c400bd6c06e94c200e1 18-Sep-2010 Eric Christopher <echristo@apple.com> Floating point stores have a 3rd addressing mode type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114254 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dc6cbaabe08c076fc37e6805a70721ddff9dd08e 18-Sep-2010 Jim Grosbach <grosbach@apple.com> factor out a simple helper function to create a label for PC-relative
instructions (PICADD, PICLDR, et.al.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114243 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
988ce097b7774ebc935ea539f3d88c2dcc3405b2 18-Sep-2010 Jim Grosbach <grosbach@apple.com> factor out a simple helper function to create a label for PC-relative
instructions (PICADD, PICLDR, et.al.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114243 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b0e7f46c5102f9f58f036c3bcae36c99ec727959 18-Sep-2010 Jim Grosbach <grosbach@apple.com> PC-relative pseudo instructions are lowered and printed directly. Any encounter
with one in the generic printing code is an error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
d30cfde935cf5a8649285b6c47abb5e0f6669590 18-Sep-2010 Jim Grosbach <grosbach@apple.com> PC-relative pseudo instructions are lowered and printed directly. Any encounter
with one in the generic printing code is an error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114242 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
6906f3cffe762a39d8617cefb3a8a0f97a14b533 18-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix vmov.f64 disassembly on targets where sizeof(long) != 8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114240 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
92aa1f71230f086ddb3aaf67e18cea6f3d1f3afe 18-Sep-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix vmov.f64 disassembly on targets where sizeof(long) != 8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114240 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
f5091ab8b8a390ff957eb6385929fa2ba2a65487 18-Sep-2010 Jim Grosbach <grosbach@apple.com> Add MC-inst handling for tPICADD

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114237 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
fbd1873041783f388de1c36c5d46c82a9ad46ef3 18-Sep-2010 Jim Grosbach <grosbach@apple.com> Add MC-inst handling for tPICADD

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114237 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
d63697e529cad2142619425de8bca0251c6b0511 18-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add target-specific DAG combiner for BUILD_VECTOR and VMOVRRD. An i64
value should be in GPRs when it's going to be used as a scalar, and we use
VMOVRRD to make that happen, but if the value is converted back to a vector
we need to fold to a simple bit_convert. Radar 8407927.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114233 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
75f0288b7dff1fcb24d9d61ea3e9547ba21382e4 18-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add target-specific DAG combiner for BUILD_VECTOR and VMOVRRD. An i64
value should be in GPRs when it's going to be used as a scalar, and we use
VMOVRRD to make that happen, but if the value is converted back to a vector
we need to fold to a simple bit_convert. Radar 8407927.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114233 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5e0d04ec4c7a3750f470de9fe91d5ed50fca1c10 18-Sep-2010 Jim Grosbach <grosbach@apple.com> Teach the (non-MC) instruction printer to use the cannonical names for push/pop,
and shift instructions on ARM. Update the tests to match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114230 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
e6be85e9ff6bd28c599421a120a8491257c13ebd 18-Sep-2010 Jim Grosbach <grosbach@apple.com> Teach the (non-MC) instruction printer to use the cannonical names for push/pop,
and shift instructions on ARM. Update the tests to match.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114230 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
b20590fa87bdb3b8fb18939a79b80d0f375bf842 18-Sep-2010 Eric Christopher <echristo@apple.com> Rework arm fast isel branch and compare code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114226 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a5b1e6810769bef9a1fd98c69877bdfd75d7b106 18-Sep-2010 Eric Christopher <echristo@apple.com> Rework arm fast isel branch and compare code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114226 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b3bfad0830b03ebf41d18f894c34fbef312dba72 17-Sep-2010 Jim Grosbach <grosbach@apple.com> Hook up verbose asm comment printing for SOImm operands in MC printer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114215 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
74d7e6c64e955f89e6d3d4023d36fd481da4cfc1 17-Sep-2010 Jim Grosbach <grosbach@apple.com> Hook up verbose asm comment printing for SOImm operands in MC printer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114215 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
7c08660fcd4e5e6c331f2a40b60fc6632aa669c3 17-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.h
196b48b708af4bba14f9e3afb6682c0f0098919b 17-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.h
ffb8845ff5344095c7cf4fffb95fc7428e9d47ce 17-Sep-2010 Jim Grosbach <grosbach@apple.com> Add skeleton infrastructure for the ARMMCCodeEmitter class. Patch by Jason Kim!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114195 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMMCCodeEmitter.cpp
MakeLists.txt
568eeedea72c274abbba1310c18a31eef78e14a4 17-Sep-2010 Jim Grosbach <grosbach@apple.com> Add skeleton infrastructure for the ARMMCCodeEmitter class. Patch by Jason Kim!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114195 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMMCCodeEmitter.cpp
MakeLists.txt
edd3d51c636e04a4abf32323a66864df311581ff 17-Sep-2010 Jim Grosbach <grosbach@apple.com> handle the upper16/lower16 target operand flags on symbol references for MC
instruction lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114191 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInfo.h
RMBaseInstrInfo.h
RMMCInstLower.cpp
RMMCInstLower.h
c686e33d12f84e1e1f5c96eadef851d078bab043 17-Sep-2010 Jim Grosbach <grosbach@apple.com> handle the upper16/lower16 target operand flags on symbol references for MC
instruction lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114191 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInfo.h
RMBaseInstrInfo.h
RMMCInstLower.cpp
RMMCInstLower.h
0d1220608d9c2f9db00dcd3cc028b4ce91e0c409 17-Sep-2010 Jim Grosbach <grosbach@apple.com> expand PICLDR MC lowering to handle other PICLDR and PICSTR versions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114183 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a28abbe24568d39414be7ccb7a1f659f40e487e2 17-Sep-2010 Jim Grosbach <grosbach@apple.com> expand PICLDR MC lowering to handle other PICLDR and PICSTR versions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114183 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5c858c88cc35391d076280f8f9227b212467d822 16-Sep-2010 Jim Grosbach <grosbach@apple.com> MC-ization of the PICLDR pseudo. Next up, adding the other variants
(PICLDRB, et. al.) and PICSTR*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114098 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
b74ca9d63104c94b800f2763a654d19f3eb30304 16-Sep-2010 Jim Grosbach <grosbach@apple.com> MC-ization of the PICLDR pseudo. Next up, adding the other variants
(PICLDRB, et. al.) and PICSTR*

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114098 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
8de878701f9be58b71998f3813656d2ba90d1893 16-Sep-2010 Jim Grosbach <grosbach@apple.com> Make sure to promote single precision floats to double before extracting them
from the APFloat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114096 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
1d51c41a457b99d646e3a9b9fae1e913f7a60dc0 16-Sep-2010 Jim Grosbach <grosbach@apple.com> Make sure to promote single precision floats to double before extracting them
from the APFloat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114096 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
2b95a073a2f93f1babe63e250a73dffb031a745e 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> Remove support for "dregpair" operand modifier, now that it is no longer being
used for anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114067 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
de0ae8f83dd8eabc831b0631c20ffa3b53a774f2 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> Remove support for "dregpair" operand modifier, now that it is no longer being
used for anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114067 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
3c2fd42d51214e00fba89d51bd13a15f1d0746c4 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> When expanding ARM pseudo registers, copy the existing predicate operands
instead of using default predicates on the expanded instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114066 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
823611bfba4fb2c1abbba2e59d68432c6d0a9e9a 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> When expanding ARM pseudo registers, copy the existing predicate operands
instead of using default predicates on the expanded instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114066 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
ff8761794ce06ad45a3b5af0ede8aa02aa649e2a 16-Sep-2010 Jim Grosbach <grosbach@apple.com> store MC FP immediates as a double instead of as an APFloat, thus avoiding an
unnecessary dtor for MCOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114064 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
smPrinter/ARMInstPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
a8e47b3319db56675f8e80f4bb015c163110b902 16-Sep-2010 Jim Grosbach <grosbach@apple.com> store MC FP immediates as a double instead of as an APFloat, thus avoiding an
unnecessary dtor for MCOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114064 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
smPrinter/ARMInstPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
2ec9d0c827545a92087078b8b8df1b6afa12f9b1 16-Sep-2010 Shih-wei Liao <sliao@google.com> To get address mode's S-bit, we should use ">=" instead of "!=".
This is in order to prevent missing S bit in ARM code generation.

Change-Id: Ieac28c6a2409c1c0d2d0c46a2b01a34c47841970
RMCodeEmitter.cpp
e8ec223e344c3c4db95dcee42c46a829d04f8cee 16-Sep-2010 Shih-wei Liao <sliao@google.com> 1. Better support for access constant entry (add emitLEApcrelInstruction)
2. Add suppport to emit ConstantVector and ConstantArray
3. emitLEApcrelInstruction uses PC relative mode add/sub and the offset
need to be encoded in so_imm (A5.2.4 Modified immediate
constants in ARM instructions)

Change-Id: Id7a933dddbd7e80289bf5befa48a054dc765a644
RMCodeEmitter.cpp
RMJITInfo.cpp
RMRelocations.h
c326abc2ddc24585c016f0732222c2a3f46e0963 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add missing break.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114048 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
ea606bb76b9922f67b678ea48645cdc9bfa0305b 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> Add missing break.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114048 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
0929cf1df88bf678acdaa9b0a1946800e15057bb 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> Change VLDMQ and VSTMQ to be pseudo instructions. They are expanded after
register allocation to VLDMD and VSTMD respectively. This avoids using the
dregpair operand modifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114047 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrFormats.td
RMInstrNEON.td
9d4ebc0eb80c770aab5b51ca459748a6ac8f1699 16-Sep-2010 Bob Wilson <bob.wilson@apple.com> Change VLDMQ and VSTMQ to be pseudo instructions. They are expanded after
register allocation to VLDMD and VSTMD respectively. This avoids using the
dregpair operand modifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114047 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMInstrFormats.td
RMInstrNEON.td
73691a61b221513b5d25d351c754fea47e7fdd19 16-Sep-2010 Jim Grosbach <grosbach@apple.com> Add support for the 'lane' modifier on vdup operands

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114030 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
765c4d947791c6d92532ff81b6d9649e237b2084 16-Sep-2010 Jim Grosbach <grosbach@apple.com> Add support for the 'lane' modifier on vdup operands

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114030 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
e44257bbd4dac8656e797671f7ace48f8217c0b5 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember VLDMQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114026 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
06f264e504d75f0426eea55b9f9e36c780d8a4fc 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember VLDMQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114026 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
8c1999bc98b1bc3dd64dfab4282da9b8fe2bc970 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing break.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114025 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
31bbc51ac9245bc82c933c9db8358ca9bb558ac5 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing break.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114025 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
bfc7bfe49a01b987cdde4ff7b9c0a4afe6528712 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Teach the MC disassembler to handle vmov.f32 and vmov.f64 immediate to register
moves. Previously, the immediate was printed as the encoded integer value,
which is incorrect.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114021 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
60396975bea44c8d233eb11df2eb7599d2f5fa90 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Teach the MC disassembler to handle vmov.f32 and vmov.f64 immediate to register
moves. Previously, the immediate was printed as the encoded integer value,
which is incorrect.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114021 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
dc3c93266cd023dd0c8015626ef412b2d35d04bd 15-Sep-2010 Jim Grosbach <grosbach@apple.com> move getRegisterNumbering() to out of ARMBaseRegisterInfo into the helper
functions in ARMBaseInfo.h so it can be used in the MC library as well.
For anything bigger than this, we may want a means to have a small support
library for shared helper functions like this. Cross that bridge when we
come to it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114016 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
a4c3c8f28d9465dc7c42eb43c2377530f1821574 15-Sep-2010 Jim Grosbach <grosbach@apple.com> move getRegisterNumbering() to out of ARMBaseRegisterInfo into the helper
functions in ARMBaseInfo.h so it can be used in the MC library as well.
For anything bigger than this, we may want a means to have a small support
library for shared helper functions like this. Cross that bridge when we
come to it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114016 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMBaseInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
aaa834a043890412e66cbac70891be85d7b60abe 15-Sep-2010 Jim Grosbach <grosbach@apple.com> simplify getRegisterNumbering(). Remove the unused isSPVFP argument and
merge the common cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114013 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
f1c3eb37ae96572e1df34bf980b9ecd149b5ee33 15-Sep-2010 Jim Grosbach <grosbach@apple.com> simplify getRegisterNumbering(). Remove the unused isSPVFP argument and
merge the common cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114013 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
088e712ab59477951bfb3e890bb2a96705e4d1f8 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Refactor uses of getRegisterNumbering() to not need the isSPVFP argument. Check
if the register is a member of the SPR register class directly instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114012 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
7e2c04fd05c08d46ecb304938767b4b21cdb9325 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Refactor uses of getRegisterNumbering() to not need the isSPVFP argument. Check
if the register is a member of the SPR register class directly instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114012 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
6491bdbcd95a1af6341cbf257ad2c526a8c1d344 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Reduce dependencies in the ARM MC instruction printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114009 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
d8be410d4b1bb2cc5e6917ad15de24bbe7b56d78 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Reduce dependencies in the ARM MC instruction printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114009 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
dd13e93dfe62ee787c6b2698f0af5175989cb418 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix spelling typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114008 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
8b7fa198c352993c406b756c84531e33fe1b49eb 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix spelling typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114008 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInfo.h
ea62e37056cc77e3229e1e09c22f396304b09963 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Factor out basic enums and hleper functions from ARM.h for cleaner sharing
between the compiler back end and the MC libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114007 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInfo.h
754578b56518d57c28cd439a6dab2b75865e6746 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Factor out basic enums and hleper functions from ARM.h for cleaner sharing
between the compiler back end and the MC libraries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114007 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInfo.h
7555705c8a0a80849e0543c57f5bd797ad27ec53 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Add support for floating point immediates to MC instruction printing. ARM
VFP instructions use it for loading some constants, so implement that
handling.

Not thrilled with adding a member to MCOperand, but not sure there's much of
a better option that's not pretty fragile (like putting a double in the
union instead and just assuming that's good enough). Suggestions welcome...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113996 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
smPrinter/ARMInstPrinter.cpp
26edbcb8d5da5fb65816a97f740c9868fa798df4 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Add support for floating point immediates to MC instruction printing. ARM
VFP instructions use it for loading some constants, so implement that
handling.

Not thrilled with adding a member to MCOperand, but not sure there's much of
a better option that's not pretty fragile (like putting a double in the
union instead and just assuming that's good enough). Suggestions welcome...



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113996 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
smPrinter/ARMInstPrinter.cpp
7aca1fbae3c9c394d8edea8342e6adcc5df13926 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Recognize VST1q64Pseudo and VSTMQ as stack slot stores.
Recognize VLD1q64Pseudo as a stack slot load.

Reject these if they are loading or storing a subregister. The API (and
VirtRegRewriter) doesn't know how to deal with that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113985 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d64816a8d04e5b20b7a0628bc1f22607c07e8f69 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Recognize VST1q64Pseudo and VSTMQ as stack slot stores.
Recognize VLD1q64Pseudo as a stack slot load.

Reject these if they are loading or storing a subregister. The API (and
VirtRegRewriter) doesn't know how to deal with that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113985 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d7a0af3daf6a87f8edcfbc978e6f8e821f0ec57b 15-Sep-2010 Bob Wilson <bob.wilson@apple.com> Reapply Gabor's 113839, 113840, and 113876 with a fix for a problem
encountered while building llvm-gcc for arm. This is probably the same issue
that the ppc buildbot hit. llvm::prior works on a MachineBasicBlock::iterator,
not a plain MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113983 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
3a951829fef6a2cfca87611e94cf48e0136f81d5 15-Sep-2010 Bob Wilson <bob.wilson@apple.com> Reapply Gabor's 113839, 113840, and 113876 with a fix for a problem
encountered while building llvm-gcc for arm. This is probably the same issue
that the ppc buildbot hit. llvm::prior works on a MachineBasicBlock::iterator,
not a plain MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113983 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0b69506f17cca325303c86462b9d3fbc2345bd6f 15-Sep-2010 Gabor Greif <ggreif@gmail.com> the darwin9-powerpc buildbot keeps consistently crashing,
backing out following to get it back to green,
so I can investigate in peace:

svn merge -c -113840 llvm/test/CodeGen/ARM/arm-and-tst-peephole.ll
svn merge -c -113876 -c -113839 llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113980 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7602993f2dc0a33d04cf5582cdf0cf515896ea7c 15-Sep-2010 Gabor Greif <ggreif@gmail.com> the darwin9-powerpc buildbot keeps consistently crashing,
backing out following to get it back to green,
so I can investigate in peace:

svn merge -c -113840 llvm/test/CodeGen/ARM/arm-and-tst-peephole.ll
svn merge -c -113876 -c -113839 llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113980 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d882b01de69f8135c08983450888d2738295bf45 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move ARM is{LoadFrom,StoreTo}StackSlot closer to their siblings so they won't be
forgotten in the future.

Coalesce identical cases in switch.

No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113979 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
34327856d92d027733524b9418bd188a9e8db5db 15-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Move ARM is{LoadFrom,StoreTo}StackSlot closer to their siblings so they won't be
forgotten in the future.

Coalesce identical cases in switch.

No functional changes intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113979 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
641df469bb6e66172284a3200494150598935c80 15-Sep-2010 Bob Wilson <bob.wilson@apple.com> Spelling fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113978 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
064312de8641043b084603aa9a6b409bc794eed2 15-Sep-2010 Bob Wilson <bob.wilson@apple.com> Spelling fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113978 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
dfb447f481583ea8d0cead056d9a04367a3e93f3 15-Sep-2010 Bob Wilson <bob.wilson@apple.com> Use VLD1/VST1 pseudo instructions for loadRegFromStackSlot and
storeRegToStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113918 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
168f382dc67e5940cabdb28dc933c4f91cdd3137 15-Sep-2010 Bob Wilson <bob.wilson@apple.com> Use VLD1/VST1 pseudo instructions for loadRegFromStackSlot and
storeRegToStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113918 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
c7a331ca4ffaba39818d72131c9a55bfcf133242 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Reapply r113875 with additional cleanups.

"The register specified for a dregpair is the corresponding Q register, so to
get the pair, we need to look up the sub-regs based on the qreg. Create a
lookup function since we don't have access to TargetRegisterInfo here to
be able to use getSubReg(ARM::dsub_[01])."

Additionaly, fix the NEON VLD1* and VST1* instruction patterns not to use
the dregpair modifier for the 2xdreg versions. Explicitly specifying the two
registers as operands is more correct and more consistent with the other
instruction patterns. This enables further cleanup of special case code in the
disassembler as a nice side-effect.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113903 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMInstPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
05ae0c6026c15cc934ef2117a7a75ae57c55067d 15-Sep-2010 Jim Grosbach <grosbach@apple.com> Reapply r113875 with additional cleanups.

"The register specified for a dregpair is the corresponding Q register, so to
get the pair, we need to look up the sub-regs based on the qreg. Create a
lookup function since we don't have access to TargetRegisterInfo here to
be able to use getSubReg(ARM::dsub_[01])."

Additionaly, fix the NEON VLD1* and VST1* instruction patterns not to use
the dregpair modifier for the 2xdreg versions. Explicitly specifying the two
registers as operands is more correct and more consistent with the other
instruction patterns. This enables further cleanup of special case code in the
disassembler as a nice side-effect.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113903 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMInstPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
5a9a4fa0521c0e6935c4a25c038e28fe0711a252 15-Sep-2010 Eric Christopher <echristo@apple.com> Emit libcalls for SDIV, this requires some call infrastructure
that needs to be shared a bit more widely around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113886 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bb3e5dad6685dd54625edae789d1a703f4107a69 15-Sep-2010 Eric Christopher <echristo@apple.com> Emit libcalls for SDIV, this requires some call infrastructure
that needs to be shared a bit more widely around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113886 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
5eeaf26c4d2b001102b8b788b7f458d854772381 15-Sep-2010 Shih-wei Liao <sliao@google.com> Merge commit 'refs/changes/82/67782/1' of ssh://android-git.corp.google.com:29418/platform/external/llvm into update_llvm
4442d11d55edac0a6b678003983caf6e56852690 15-Sep-2010 Jim Grosbach <grosbach@apple.com> revert 113875 momentarilly. Need to fix the MC disassembler to handle the
change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
684193928c6b6680df42c8d2598bb403e28f3de1 15-Sep-2010 Jim Grosbach <grosbach@apple.com> revert 113875 momentarilly. Need to fix the MC disassembler to handle the
change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
51de8f34be5f5ea6534806c2bc48897a66709e55 15-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
15d78984d57378c3600ea26c37e1be05863644ea 15-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
70c4b84d344a60c6c89cebf5dd09234043c8972e 15-Sep-2010 Gabor Greif <ggreif@gmail.com> an attempt to salvage the darwin9-powerpc buildbot, which could be miscompiling this line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113876 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
308f64a7c847821a4260da673089e7b4af74e56c 15-Sep-2010 Gabor Greif <ggreif@gmail.com> an attempt to salvage the darwin9-powerpc buildbot, which could be miscompiling this line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113876 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2d5d0d2960b91a40e8a1a95b341d48dfdb1b9018 15-Sep-2010 Jim Grosbach <grosbach@apple.com> The register specified for a dregpair is the corresponding Q register, so to
get the pair, we need to look up the sub-regs based on the qreg. Create a
lookup function since we don't have access to TargetRegisterInfo here to
be able to use getSubReg(ARM::dsub_[01]).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
fe125557dd8ef191b572edb4b6fd4b2a4a2f2f9e 15-Sep-2010 Jim Grosbach <grosbach@apple.com> The register specified for a dregpair is the corresponding Q register, so to
get the pair, we need to look up the sub-regs based on the qreg. Create a
lookup function since we don't have access to TargetRegisterInfo here to
be able to use getSubReg(ARM::dsub_[01]).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113875 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
164de2283a29c8fdcd25eb1bc116d4cfb84bb7ef 15-Sep-2010 Gabor Greif <ggreif@gmail.com> set isCompare for another three Thumb1 instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113867 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
f7d10f5c129f31bf4c97424b2c9786db6ee9c5cf 15-Sep-2010 Gabor Greif <ggreif@gmail.com> set isCompare for another three Thumb1 instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113867 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c3452d99cc450e44fb0dc472521ad48521bb5309 14-Sep-2010 Jim Grosbach <grosbach@apple.com> Add predicate and 's' bit operands to PICADD instruction lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113860 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5b46d62c4459dbfd56bb6ac650a271cd02365092 14-Sep-2010 Jim Grosbach <grosbach@apple.com> Add predicate and 's' bit operands to PICADD instruction lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113860 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
04a067cd7178e1c40c69cff1722afa4500b1c0b9 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Avoid warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113857 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
fe3ac088ee0a536f60b3c30ad97703d5d6cd2167 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Avoid warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113857 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
0d6fe6e871255b498a463124d15d5aeacb4031f9 14-Sep-2010 Jim Grosbach <grosbach@apple.com> fix comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113856 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f3f09527e6484143fcdef2ddfef0b2f016881e36 14-Sep-2010 Jim Grosbach <grosbach@apple.com> fix comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113856 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f23bd5f6779a6f463675b39ec1bc5232e1a16c08 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Make NEON ld/st pseudo instruction classes take the instruction itinerary as
an argument, so that we can distinguish instructions with the same register
classes but different numbers of registers (e.g., vld3 and vld4). Fix some
of the non-pseudo NEON ld/st instruction itineraries to reflect the number
of registers loaded or stored, not just the opcode name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113854 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9d84fb3c9139f650e0252c1ed1a3b6e169cb13fb 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Make NEON ld/st pseudo instruction classes take the instruction itinerary as
an argument, so that we can distinguish instructions with the same register
classes but different numbers of registers (e.g., vld3 and vld4). Fix some
of the non-pseudo NEON ld/st instruction itineraries to reflect the number
of registers loaded or stored, not just the opcode name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113854 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ee3dba3ec25633e7e13a9cefafe276159cb04932 14-Sep-2010 Gabor Greif <ggreif@gmail.com> set comparable for a bunch of Thumb instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113849 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
007248b478e0c39faa8719b562c2ae47bfc2251e 14-Sep-2010 Gabor Greif <ggreif@gmail.com> set comparable for a bunch of Thumb instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113849 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
2147b5fa3c0d04747834ba9247eae7f2b17df2f3 14-Sep-2010 Jim Grosbach <grosbach@apple.com> Don't ignore the CPSR implicit def when lowering a MachineInstruction to an MCInst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113847 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
1685caffedd0d0b351e0ec475d2529d90efec2fd 14-Sep-2010 Jim Grosbach <grosbach@apple.com> Don't ignore the CPSR implicit def when lowering a MachineInstruction to an MCInst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113847 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
dfeaebd8f9b8622ab0e1531c39e7278cb74006f3 14-Sep-2010 Jim Grosbach <grosbach@apple.com> Clarify comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113846 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
9854f197f3385713c77df8cea0e39a231b91a650 14-Sep-2010 Jim Grosbach <grosbach@apple.com> Clarify comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113846 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
7a4150705ccd171c0e75ad85d305a7e5e91e7998 14-Sep-2010 Gabor Greif <ggreif@gmail.com> Eliminate a 'tst' that immediately follows an 'and'
by morphing the 'and' to its recording form 'andS'.

This is basically a test commit into this area, to
see whether the bots like me. Several generalizations
can be applied and various avenues of code simplification
are open. I'll introduce those as I go.

I am aware of stylistic input from Bill Wendling, about
where put the analysis complexity, but I am positive
that we can move things around easily and will find a
satisfactory solution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113839 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
de90bfd14af1a850ec43438d9cfffeb83f50a5a1 14-Sep-2010 Gabor Greif <ggreif@gmail.com> Eliminate a 'tst' that immediately follows an 'and'
by morphing the 'and' to its recording form 'andS'.

This is basically a test commit into this area, to
see whether the bots like me. Several generalizations
can be applied and various avenues of code simplification
are open. I'll introduce those as I go.

I am aware of stylistic input from Bill Wendling, about
where put the analysis complexity, but I am positive
that we can move things around easily and will find a
satisfactory solution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113839 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a283da5bedc75b4f90f05900f124594002ad1189 14-Sep-2010 Eric Christopher <echristo@apple.com> Fix QOpcode assignment to Opc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113837 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
23da0b23a3f01d9a46e54a4ba6fc6e4b42eda7c1 14-Sep-2010 Eric Christopher <echristo@apple.com> Fix QOpcode assignment to Opc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113837 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f318164d18455fe44fcc9e03329036917f303edc 14-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally."

This reverts commit r113632

Conflicts:

cmake/modules/AddLLVM.cmake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113819 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
smPrinter/CMakeLists.txt
MakeLists.txt
3a210e2d302758101ac06946e86027b327c7d0f3 14-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally."

This reverts commit r113632

Conflicts:

cmake/modules/AddLLVM.cmake

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113819 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
smPrinter/CMakeLists.txt
MakeLists.txt
b035d820c57792a3772c5192331eb6c989b775d0 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Convert some VTBL and VTBX instructions to use pseudo instructions prior to
register allocation. Remove the NEONPreAllocPass, which is no longer needed.
Yeah!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113818 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
RMTargetMachine.cpp
MakeLists.txt
EONPreAllocPass.cpp
bd916c54b7989ddbab373c61eb1ed2556ca44d27 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Convert some VTBL and VTBX instructions to use pseudo instructions prior to
register allocation. Remove the NEONPreAllocPass, which is no longer needed.
Yeah!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113818 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
RMTargetMachine.cpp
MakeLists.txt
EONPreAllocPass.cpp
65ff3622f02d8d48c52f90cef0d910da66f1e319 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Switch all the NEON vld-lane and vst-lane instructions over to the new
pseudo-instruction approach. Change ARMExpandPseudoInsts to use a table
to record all the NEON load/store information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113812 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
8466fa1842ad4f2d6fadcf5c23c15319ae96b972 14-Sep-2010 Bob Wilson <bob.wilson@apple.com> Switch all the NEON vld-lane and vst-lane instructions over to the new
pseudo-instruction approach. Change ARMExpandPseudoInsts to use a table
to record all the NEON load/store information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113812 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
f6d6fee473408227eb8e7c00619f0fa037f8c141 13-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113768 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
RMMCInstLower.h
fc16a8950c671b9434e60702ba31224c39ee133f 13-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113768 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCInstLower.cpp
RMMCInstLower.h
e1e63e8abb587eb6094fc47569b3a9b4516efb21 13-Sep-2010 Shih-wei Liao <sliao@google.com> Potential fix for b/2988615.

Change-Id: Ia15a1f5e25360dac4ca4bfecc35cb1aa6b6db1b8
RMCodeEmitter.cpp
a95f589c757c8c857096a07e0d376ca9aaec6c2c 11-Sep-2010 Shih-wei Liao <sliao@google.com> Apply changes on LLVM r112364 after merge.

Change-Id: I9688675d46dca0d564206616c40b005669269010
RMAsmPrinter.cpp
ndroid.mk
smPrinter/ARMAsmPrinter.cpp
smPrinter/Android.mk
9edc31c101ba6efd4b653db935810308f659c560 11-Sep-2010 Chris Lattner <sabre@nondot.org> fix the asmparser so that the target is responsible for skipping to
the end of the line on a parser error, allowing skipping to happen
for syntactic errors but not for semantic errors. Before we would
miss emitting a diagnostic about the second line, because we skipped
it due to the semantic error on the first line:

foo %eax
bar %al

This fixes rdar://8414033 - llvm-mc ignores lines after an invalid instruction mnemonic errors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113688 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cbf8a98c7c652e96967623c80cb945fef001b090 11-Sep-2010 Chris Lattner <sabre@nondot.org> fix the asmparser so that the target is responsible for skipping to
the end of the line on a parser error, allowing skipping to happen
for syntactic errors but not for semantic errors. Before we would
miss emitting a diagnostic about the second line, because we skipped
it due to the semantic error on the first line:

foo %eax
bar %al

This fixes rdar://8414033 - llvm-mc ignores lines after an invalid instruction mnemonic errors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113688 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
da61c1662bd86ea1f7fad601e9966f1b700636c1 11-Sep-2010 Shih-wei Liao <sliao@google.com> Merge commit '69494cf8102cf872e9cb76662e9960be7c112112' into HEAD

Conflicts:
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/ARM/ARMCodeEmitter.cpp
lib/Target/ARM/ARMJITInfo.cpp
lib/Target/ARM/ARMRelocations.h
lib/Transforms/IPO/MergeFunctions.cpp

Change-Id: I23d40983717e072fa49334c1fa54f2cf961476c7
5d7db1fa13488aa726bf61a1c7f544661cb01ef4 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Rename ConvertToSetZeroFlag to something more general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113670 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
a65568676d0d9d53dd4aae8f1c58271bb4cfff10 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Rename ConvertToSetZeroFlag to something more general.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113670 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
df43da9e50014e1f89626bf9bd3868d90586b3c9 11-Sep-2010 Bill Wendling <isanbard@gmail.com> No need to recompute the SrcReg and CmpValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113666 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
3665661a5708c8adc2727be38b56d1d87ddeb661 11-Sep-2010 Bill Wendling <isanbard@gmail.com> No need to recompute the SrcReg and CmpValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113666 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
f93cebaf113032a711b2f434bf2c37e1bc6a4cee 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Move some of the decision logic for converting an instruction into one that sets
the 'zero' bit down into the back-end. There are other cases where this logic
isn't sufficient, so they should be handled separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113665 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
92ad57f066e9f256e4e3d72febf152e68caa80c7 11-Sep-2010 Bill Wendling <isanbard@gmail.com> Move some of the decision logic for converting an instruction into one that sets
the 'zero' bit down into the back-end. There are other cases where this logic
isn't sufficient, so they should be handled separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113665 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
154909222cb004dbff875cdcc3d33df30cc0c5ec 11-Sep-2010 Eric Christopher <echristo@apple.com> Start sketching out ARM fast-isel calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113662 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d10cd7b31464a73e3a19b9fada80b9567b04d314 11-Sep-2010 Eric Christopher <echristo@apple.com> Start sketching out ARM fast-isel calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113662 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2f730643475e1f7167d802d23ac96b79fdabaab8 11-Sep-2010 Eric Christopher <echristo@apple.com> For consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113659 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
44bff903e20574e7ae6b23c7c3f244db39e0a035 11-Sep-2010 Eric Christopher <echristo@apple.com> For consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113659 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
06660e8720c8474da451942c2b6c48b181e275ff 11-Sep-2010 Eric Christopher <echristo@apple.com> Newline at end of file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113654 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
09b2171d7e78de240c4b510dd9808010a5e2efdd 11-Sep-2010 Eric Christopher <echristo@apple.com> Newline at end of file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113654 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
4eea118bb3b9912bfec7c3beee92f3df447fa5b8 11-Sep-2010 Eric Christopher <echristo@apple.com> Split out some of the calling convention bits so that they can be
used for fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113652 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMISelLowering.cpp
6f2ccefdc069b6bd2e8f8b110fc3205b821a17a7 11-Sep-2010 Eric Christopher <echristo@apple.com> Split out some of the calling convention bits so that they can be
used for fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113652 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.h
RMISelLowering.cpp
c9c9de1260bf0fd85b9628c614cb7289f30ffb9a 10-Sep-2010 Bill Wendling <isanbard@gmail.com> Modify the comparison optimizations in the peephole optimizer to update the
iterator when an optimization took place. This allows us to do more insane
things with the code than just remove an instruction or two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113640 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
220e240bdf3235252c2a1fc8fcc5d4b8e8117918 10-Sep-2010 Bill Wendling <isanbard@gmail.com> Modify the comparison optimizations in the peephole optimizer to update the
iterator when an optimization took place. This allows us to do more insane
things with the code than just remove an instruction or two.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113640 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
3373a6638c29cbd68ec2da2089f4fc58213c124c 10-Sep-2010 Jim Grosbach <grosbach@apple.com> Add a missing case to duplicateCPV() for LSDA constants. Add a FIXME. rdar://8302157

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113637 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
51f5b67395780b8421f4aa6ee998ed51b23dae9d 10-Sep-2010 Jim Grosbach <grosbach@apple.com> Add a missing case to duplicateCPV() for LSDA constants. Add a FIXME. rdar://8302157

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113637 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
338c97baad1444a4158a7d99162e0e654f058c43 10-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113632 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
smPrinter/CMakeLists.txt
MakeLists.txt
4e9c939312ff73bd0c6a6485fd5f97012f5910fa 10-Sep-2010 Michael J. Spencer <bigcheesegs@gmail.com> CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113632 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
smPrinter/CMakeLists.txt
MakeLists.txt
af4c6f5182f510aeecbb82b52299e5f352d3b03e 10-Sep-2010 Bob Wilson <bob.wilson@apple.com> Calculate the number of VLDM/VSTM registers by subtracting the number of
fixed operands from the total number of operands (including the variadic ones).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113597 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
979927ab26a1832ee2ecd1edb17d50184756f474 10-Sep-2010 Bob Wilson <bob.wilson@apple.com> Calculate the number of VLDM/VSTM registers by subtracting the number of
fixed operands from the total number of operands (including the variadic ones).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113597 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
daf207e732174aee86493581752036aa5a3fd58a 10-Sep-2010 Bill Wendling <isanbard@gmail.com> Reword since this may not be a bug but intended behavior.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113584 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c8714bb144928f0b45826617ca701805093ffe36 10-Sep-2010 Bill Wendling <isanbard@gmail.com> Reword since this may not be a bug but intended behavior.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113584 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bd9c766fa67f718f225e461ed69c3d11cfe7068c 10-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix merging base-updates for VLDM/VSTM: Before I switched these instructions
to use AddrMode4, there was a count of the registers stored in one of the
operands. I changed that to just count the operands but forgot to adjust for
the size of D registers. This was noticed by Evan as a performance problem
but it is a potential correctness bug as well, since it is possible that this
could merge a base update with a non-matching immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113576 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
efe7d9a12f441a256d67c4e4da494dcefca678a5 10-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix merging base-updates for VLDM/VSTM: Before I switched these instructions
to use AddrMode4, there was a count of the registers stored in one of the
operands. I changed that to just count the operands but forgot to adjust for
the size of D registers. This was noticed by Evan as a performance problem
but it is a potential correctness bug as well, since it is possible that this
could merge a base update with a non-matching immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113576 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
0cf9a820e435a74ef93930dcaf8917323f2f99be 10-Sep-2010 Evan Cheng <evan.cheng@apple.com> Teach if-converter to be more careful with predicating instructions that would
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.h
humb2HazardRecognizer.h
humb2InstrInfo.cpp
humb2InstrInfo.h
3ef1c8759a20167457eb7fd82ebcaffe7ccaa1d1 10-Sep-2010 Evan Cheng <evan.cheng@apple.com> Teach if-converter to be more careful with predicating instructions that would
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.h
humb2HazardRecognizer.h
humb2InstrInfo.cpp
humb2InstrInfo.h
3288f13270360d667bf13f6393435cfa4e282c2c 10-Sep-2010 Eric Christopher <echristo@apple.com> Fix build error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113566 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
920a2089d9b737820631bc6de4c4fb9fa9ad1e07 10-Sep-2010 Eric Christopher <echristo@apple.com> Fix build error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113566 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
845b079c1e7d65839cc8bc853fae082d7adfc909 10-Sep-2010 Eric Christopher <echristo@apple.com> Update comments, reorganize some code, rename variables to be
more clear. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113565 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
db12b2ba9c602fc9bedcf0a9b2e72e23e29005d8 10-Sep-2010 Eric Christopher <echristo@apple.com> Update comments, reorganize some code, rename variables to be
more clear. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113565 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
203c5c75385c3d582ec4385e111f12a11189d1d6 10-Sep-2010 Eric Christopher <echristo@apple.com> 64-bit fp loads can come straight out of the constant pool, not as
bad as I'd thought.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113561 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
238bb162514afac2cfb7221a0f102456de09f581 10-Sep-2010 Eric Christopher <echristo@apple.com> 64-bit fp loads can come straight out of the constant pool, not as
bad as I'd thought.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113561 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3512654d327720193714d6c002379ccec3bade50 09-Sep-2010 Eric Christopher <echristo@apple.com> SIToFP and FPToSI conversions work only on fp-reg to fp-reg. Move
some data around and implement a couple of move routines to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113546 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9ee4ce2f91250ef44fea427392c8dad369df8972 09-Sep-2010 Eric Christopher <echristo@apple.com> SIToFP and FPToSI conversions work only on fp-reg to fp-reg. Move
some data around and implement a couple of move routines to do this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113546 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dfeb4f6b8b412b1071c720e32f41266f80b40ad4 09-Sep-2010 Eric Christopher <echristo@apple.com> New "move to fp reg" routine. Use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113537 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
aa3ace10c1b90e07114e60700c8c1f8e6b4f3e84 09-Sep-2010 Eric Christopher <echristo@apple.com> New "move to fp reg" routine. Use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113537 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d5eda142f2094bc34449d4e1a457c0e10b96684b 09-Sep-2010 Eric Christopher <echristo@apple.com> "Strike that, reverse it." -- Mr. Wonka.

Truncate when truncating, extend when extending.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113536 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ef2fdd21418e0cdc5df963a063b0f940964fa208 09-Sep-2010 Eric Christopher <echristo@apple.com> "Strike that, reverse it." -- Mr. Wonka.

Truncate when truncating, extend when extending.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113536 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
db4fc6a604fa96fa24061b11a8585c51ea432bf3 09-Sep-2010 Eric Christopher <echristo@apple.com> Add FPTrunc, fix some bugs where I forgot to update the value map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113533 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ce07b5458d87d5f5ad306a1d86785537e9a3ce0c 09-Sep-2010 Eric Christopher <echristo@apple.com> Add FPTrunc, fix some bugs where I forgot to update the value map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113533 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9c78dcf6c5652931ad268986544333eed0c8eeac 09-Sep-2010 Eric Christopher <echristo@apple.com> Basic FP->Int, Int->FP conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113523 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9a040492f7ed084e12a19d56995855c9b5b1d3aa 09-Sep-2010 Eric Christopher <echristo@apple.com> Basic FP->Int, Int->FP conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113523 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9a374dfaa80634a7eae85e7e7ba8cd9fb2aadca7 09-Sep-2010 Evan Cheng <evan.cheng@apple.com> For each instruction itinerary class, specify the number of micro-ops each
instruction in the class would be decoded to. Or zero if the number of
uOPs must be determined dynamically.

This will be used to determine the cost-effectiveness of predicating a
micro-coded instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113513 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrThumb.td
RMSchedule.td
RMScheduleV6.td
5f54ce347368105260be2cec497b6a4199dc5789 09-Sep-2010 Evan Cheng <evan.cheng@apple.com> For each instruction itinerary class, specify the number of micro-ops each
instruction in the class would be decoded to. Or zero if the number of
uOPs must be determined dynamically.

This will be used to determine the cost-effectiveness of predicating a
micro-coded instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113513 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrThumb.td
RMSchedule.td
RMScheduleV6.td
e0af855b8fbbff064d3a01478d2103f861903be7 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix NEON VLD pseudo instruction itineraries that were incorrectly copied from
the VST pseudos. The VLD/VST scheduling still needs work (see pr6722), but
at least we shouldn't confuse the loads with the stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113473 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0f1e9457a578cbc2073107f4d3d7529cbac7e5c3 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fix NEON VLD pseudo instruction itineraries that were incorrectly copied from
the VST pseudos. The VLD/VST scheduling still needs work (see pr6722), but
at least we shouldn't confuse the loads with the stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113473 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a092554e777ed9217a97e3fb6a3263ea3d4479db 09-Sep-2010 Eric Christopher <echristo@apple.com> Nuke whitespace and fix some indenting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113463 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ac1a19e18ad73198ae54cc4bc08000523031f84a 09-Sep-2010 Eric Christopher <echristo@apple.com> Nuke whitespace and fix some indenting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113463 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
46c6754580411c95b9278102b3cb6484a754b522 09-Sep-2010 Eric Christopher <echristo@apple.com> Handle 64-bit floating point binops as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113461 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bd6bf0848ee651a3cf4ea868b7a7605e37b4e028 09-Sep-2010 Eric Christopher <echristo@apple.com> Handle 64-bit floating point binops as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113461 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ff5fe9ba7671ecd4de42429a2a0ac392adf12809 09-Sep-2010 Eric Christopher <echristo@apple.com> Basic 32-bit FP operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113459 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
bc39b829f2a1f1f0ce3cfe7f9dd99c3402ad2e62 09-Sep-2010 Eric Christopher <echristo@apple.com> Basic 32-bit FP operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113459 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
328ca4d2403cfd24e0a9b724a4d5c8d4d09cae11 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> For double-spaced VLD3/VLD4 instructions, copy the explicit super-register use
operand from the pseudo instruction to the new instruction as an implicit use.
This will preserve any other flags (e.g., kill) on the operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113456 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
19d644d5a9cd6699e5f9f1999deb3c77b2bbdca4 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> For double-spaced VLD3/VLD4 instructions, copy the explicit super-register use
operand from the pseudo instruction to the new instruction as an implicit use.
This will preserve any other flags (e.g., kill) on the operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113456 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
c84676c9cbe72a7d1fe925a695b970cdf3c68de9 09-Sep-2010 Eric Christopher <echristo@apple.com> Handle float->double extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113455 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4620360842bd8cddc5b1bad7f2f04214c91ac9cb 09-Sep-2010 Eric Christopher <echristo@apple.com> Handle float->double extension.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113455 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
6fc6204d5e8f76a28a03debf74f2af592d7b3743 09-Sep-2010 Eric Christopher <echristo@apple.com> Rewrite TargetMaterializeConstant splitting it out into two functions
for integer and fp constants. Implement todo to use vfp3 instructions
to materialize easy constants if we can.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113453 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9ed58dff86f09699946641ba87f6c4f04a3773c8 09-Sep-2010 Eric Christopher <echristo@apple.com> Rewrite TargetMaterializeConstant splitting it out into two functions
for integer and fp constants. Implement todo to use vfp3 instructions
to materialize easy constants if we can.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113453 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e05e4524511d947fb0f35e6a4366f0dcf14da9b0 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> Simplify copying over operands from pseudo NEON load/store instructions.
For VLD3/VLD4 with double-spaced registers, add the implicit use of the
super register for both the instruction loading the even registers and the
instruction loading the odd registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113452 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
63569c99ec944210d0edc687d7411b5c687e97a7 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> Simplify copying over operands from pseudo NEON load/store instructions.
For VLD3/VLD4 with double-spaced registers, add the implicit use of the
super register for both the instruction loading the even registers and the
instruction loading the odd registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113452 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
ca4a9af750cbec8aaad073322b16feb74a766bb8 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> Clean up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113442 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
656edcf138563068a2e7d52fb35f8de1375bad9a 09-Sep-2010 Bob Wilson <bob.wilson@apple.com> Clean up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113442 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
80498c669bd685f5c2329963bca0c93a9244594a 09-Sep-2010 Eric Christopher <echristo@apple.com> Very basic compare support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113440 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d43393ae34ba7e39239d593742eb63086b68f29a 09-Sep-2010 Eric Christopher <echristo@apple.com> Very basic compare support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113440 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b6c0d47d76c5ef1f3fc70b9517fa6ae98e23a277 09-Sep-2010 Eric Christopher <echristo@apple.com> Delete dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113436 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a88d8577e696e35bf72bbc2e5ab1f7e2002b8cc4 09-Sep-2010 Eric Christopher <echristo@apple.com> Delete dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113436 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8949da81805e3dfe51b4cafca248c0bd0feab69a 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
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.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
RMInstrInfo.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
f12c667508110edd3a9588523640cd3a711a7149 08-Sep-2010 Eric Christopher <echristo@apple.com> Make the loads/stores match the type we really want to store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113417 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
30b663339e4e76981a2fc4dee84959298c0a1dc8 08-Sep-2010 Eric Christopher <echristo@apple.com> Make the loads/stores match the type we really want to store.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113417 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
91d06604bcb3ec5d94f78d8b70ca0e9d408c8f27 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Re-enable usage of the ARM base pointer. r113394 fixed the known failures.
Re-running some nightly testers w/ it enabled to verify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113399 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d0bd76b0fb27830f18e15e3d73f2e383ff1c59f1 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Re-enable usage of the ARM base pointer. r113394 fixed the known failures.
Re-running some nightly testers w/ it enabled to verify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113399 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ce2393133083f31481ea41b592896a1bb8825e90 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix errant fall-throughs causing the base pointer to be used when the frame
pointer was intended. rdar://8401980

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113394 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
951f699afb0872bec605a3d0e84c41cddcadf7b4 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Fix errant fall-throughs causing the base pointer to be used when the frame
pointer was intended. rdar://8401980

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113394 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
9f5c4a94c34e93a0f8c48c777e610362565a3b4d 08-Sep-2010 Eric Christopher <echristo@apple.com> Rewrite TargetMaterializeConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113387 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
845c5757ed40f23595b89cc0ba1db05e2c3d0099 08-Sep-2010 Eric Christopher <echristo@apple.com> Rewrite TargetMaterializeConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113387 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
23e844b1487b8ed50e9b6e706908cb536e0db6e5 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Be more careful about when to do dynamic stack realignment. Since we have an
option to disable base pointer usage, pay attention to it when deciding
if we can realign (if no base pointer and VLAs, we can't).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113366 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
30c93e1cd3e43e174994834900325fcff3322288 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Be more careful about when to do dynamic stack realignment. Since we have an
option to disable base pointer usage, pay attention to it when deciding
if we can realign (if no base pointer and VLAs, we can't).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113366 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d2e97313dfd812658a8b205072a3de714c969b94 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Add missing assert

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113365 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6b53834d5fe1c51f3012f23ed9cbec267959e6bd 08-Sep-2010 Jim Grosbach <grosbach@apple.com> Add missing assert

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113365 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b263834aca54d14cc2f82718c2d833b8ec4349aa 08-Sep-2010 Chris Lattner <sabre@nondot.org> change the MC "ParseInstruction" interface to make it the
implementation's job to check for and lex the EndOfStatement
marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113347 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
34e53140c2cc02ce4c9d060e48302576d3962e1c 08-Sep-2010 Chris Lattner <sabre@nondot.org> change the MC "ParseInstruction" interface to make it the
implementation's job to check for and lex the EndOfStatement
marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113347 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ee0672f2ad43a5c328d11471f99f5024c6fc89a5 08-Sep-2010 NAKAMURA Takumi <geek4civic@gmail.com> ARM/Disassembler: Fix definitions incompatible(unsigned and uint32_t) to Cygwin-1.5, following up to r113255.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113345 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
186acea74646c9f3909b1968920bed8c7ab6148b 08-Sep-2010 NAKAMURA Takumi <geek4civic@gmail.com> ARM/Disassembler: Fix definitions incompatible(unsigned and uint32_t) to Cygwin-1.5, following up to r113255.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113345 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
e4c62fbcab1d602b850c9aaad41929d22eb05c43 08-Sep-2010 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113338 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4725ca746ae815f68627657fc4135a285670a4a4 08-Sep-2010 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113338 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
12be250ead1809e9548823d9f2a89a5a391505ee 08-Sep-2010 Jim Grosbach <grosbach@apple.com> remove obsolete comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113337 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
707fb648d2b7ac8d206a20c9f02d631647e3b0ed 08-Sep-2010 Jim Grosbach <grosbach@apple.com> remove obsolete comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113337 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f583892fb61256727316c14441b17bf8d99dcf24 08-Sep-2010 Jim Grosbach <grosbach@apple.com> disable for the moment while tracking down a few Thumb2-O0 failure that look
related. (attempt deux, complete w/ test update this time)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113333 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e1e6d187863ad7ca2e5331f496f27d480cb39734 08-Sep-2010 Jim Grosbach <grosbach@apple.com> disable for the moment while tracking down a few Thumb2-O0 failure that look
related. (attempt deux, complete w/ test update this time)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113333 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
1504ddc6061a71ec24dd3bca79ffc909386107fd 08-Sep-2010 Jim Grosbach <grosbach@apple.com> woops. need to update a test along with this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113332 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8b95dfe2b6c2c77b65bc35ce0db64d5a19617f29 08-Sep-2010 Jim Grosbach <grosbach@apple.com> woops. need to update a test along with this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113332 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
65c4e8eb6fbd55934e76a7bb3fee3a70adf2895d 08-Sep-2010 Jim Grosbach <grosbach@apple.com> disable temporarily while sorting out a few test failures in Thumb2-O0 tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113331 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8a076eb79db5f82729436938681e4787ebc4a305 08-Sep-2010 Jim Grosbach <grosbach@apple.com> disable temporarily while sorting out a few test failures in Thumb2-O0 tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113331 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f8811af9818cdb74e5e8d9d82463a91bf193ea78 08-Sep-2010 Jim Grosbach <grosbach@apple.com> correct spill code to properly determine if dynamic stack realignment is
present in the function and thus whether aligned load/store instructions can
be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113323 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0cfcf93c95af91e809ef740eb0ab368477226b40 08-Sep-2010 Jim Grosbach <grosbach@apple.com> correct spill code to properly determine if dynamic stack realignment is
present in the function and thus whether aligned load/store instructions can
be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113323 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
4e51f4400ace464e9b9d90f374a7facb98927eba 08-Sep-2010 Jim Grosbach <grosbach@apple.com> VFP/NEON load/store multiple instructions are addrmode4, not 5.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113322 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
72db18243839860019ab93e7c30e86228f017ea7 08-Sep-2010 Jim Grosbach <grosbach@apple.com> VFP/NEON load/store multiple instructions are addrmode4, not 5.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113322 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
3d537195129f746767062caf8fe9158c2d25b5e5 08-Sep-2010 Jim Grosbach <grosbach@apple.com> To shrink a t2LDM instruction to the 16-bit wide tLDM instruction, the base
register must be one of the destination registers for the load. Otherwise,
the tLDM instruction will write-back to the base register, which isn't what's
desired (otherwise, we'd have a t2LDM_UPD instead).

rdar://8394087



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113297 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
447e7ac913181ec3eae7c56a73c059df5382c029 08-Sep-2010 Jim Grosbach <grosbach@apple.com> To shrink a t2LDM instruction to the 16-bit wide tLDM instruction, the base
register must be one of the destination registers for the load. Otherwise,
the tLDM instruction will write-back to the base register, which isn't what's
desired (otherwise, we'd have a t2LDM_UPD instead).

rdar://8394087



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113297 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
5c05cbcd0008e5254068a05f531ba35163b73c33 07-Sep-2010 Jim Grosbach <grosbach@apple.com> grammar tweak

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113289 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
e2f70d1724a8336f5dd455fea7ec3d71592a2fa7 07-Sep-2010 Jim Grosbach <grosbach@apple.com> grammar tweak

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113289 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
99d29915f3dc5a5d0cc3740e1046668967e584ec 07-Sep-2010 Chris Lattner <sabre@nondot.org> hopefully fix a problem building on cygwin-1.5


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113255 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.h
6cd5db41f7ed2446c9db0fd7bba4bb8591fe567e 07-Sep-2010 Chris Lattner <sabre@nondot.org> hopefully fix a problem building on cygwin-1.5


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113255 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.h
f0fd95999d46181785cf9e6c88c46afa21be7b1f 07-Sep-2010 Chris Lattner <sabre@nondot.org> in the case where an instruction only has one implementation
of a mneumonic, report operand errors with better location
info. For example, we now report:

t.s:6:14: error: invalid operand for instruction
cwtl $1
^

but we fail for common cases like:

t.s:11:4: error: invalid operand for instruction
addl $1, $1
^

because we don't know if this is supposed to be the reg/imm or imm/reg
form.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113178 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
ce4a3355d96971e7edcbff3c1975f83e1ddcb8f2 07-Sep-2010 Chris Lattner <sabre@nondot.org> in the case where an instruction only has one implementation
of a mneumonic, report operand errors with better location
info. For example, we now report:

t.s:6:14: error: invalid operand for instruction
cwtl $1
^

but we fail for common cases like:

t.s:11:4: error: invalid operand for instruction
addl $1, $1
^

because we don't know if this is supposed to be the reg/imm or imm/reg
form.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113178 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
13d589767eb08a0c90a69dddd7c1cc113229a7f2 06-Sep-2010 Chris Lattner <sabre@nondot.org> change MatchInstructionImpl to return an enum instead of bool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113165 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
79ed3f77e8b87615b80054ca6e4e3ba5e07445bd 06-Sep-2010 Chris Lattner <sabre@nondot.org> change MatchInstructionImpl to return an enum instead of bool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113165 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
57c1257bbbc00c6663bd2a0a634d45101553c160 06-Sep-2010 Chris Lattner <sabre@nondot.org> have AsmMatcherEmitter.cpp produce the hunk of code that gets included
into the middle of the class, and rework how the different sections of
the generated file are conditionally included for simplicity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113163 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0692ee676f8cdad25ad09a868bf597af4115c9d9 06-Sep-2010 Chris Lattner <sabre@nondot.org> have AsmMatcherEmitter.cpp produce the hunk of code that gets included
into the middle of the class, and rework how the different sections of
the generated file are conditionally included for simplicity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113163 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b56dfd1bb914c709c45fe7ea11e5dded9f4ab7b4 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
fc96d7800752892cdb73a3b0d22424ce20da755b 05-Sep-2010 Chris Lattner <sabre@nondot.org> cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113119 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
252b491875c544335406fb461be0fed8649e3814 05-Sep-2010 Chris Lattner <sabre@nondot.org> cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113119 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
81760863d144656b1d9753cbedb4d97927429b81 04-Sep-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113073 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
17aa68055beed6faa48ca3a995c5b6fdf5092fd4 04-Sep-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113073 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
67c7268341659d6a1a29faff3ecd6bd171d9a486 03-Sep-2010 Jim Grosbach <grosbach@apple.com> Re-apply r112883:
"For ARM stack frames that utilize variable sized objects and have either
large local stack areas or require dynamic stack realignment, allocate a
base register via which to access the local frame. This allows efficient
access to frame indices not accessible via the FP (either due to being out
of range or due to dynamic realignment) or the SP (due to variable sized
object allocation). In particular, this greatly improves efficiency of access
to spill slots in Thumb functions which contain VLAs."

r112986 fixed a latent bug exposed by the above.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112989 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
65482b1bb873dd820f54a24a2f34bd65f2669e5c 03-Sep-2010 Jim Grosbach <grosbach@apple.com> Re-apply r112883:
"For ARM stack frames that utilize variable sized objects and have either
large local stack areas or require dynamic stack realignment, allocate a
base register via which to access the local frame. This allows efficient
access to frame indices not accessible via the FP (either due to being out
of range or due to dynamic realignment) or the SP (due to variable sized
object allocation). In particular, this greatly improves efficiency of access
to spill slots in Thumb functions which contain VLAs."

r112986 fixed a latent bug exposed by the above.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112989 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
7db850bd856d3c1e2586a6f6c6397b020dbb5d42 03-Sep-2010 Jim Grosbach <grosbach@apple.com> Check the local frame alignment for determining whether dynamic stack
alignment should be performed. Otherwise dynamic realignment may trigger
when the register allocator has already used the frame pointer as a general
purpose register. That is, we need to make sure that the list of reserved
registers doesn't change after register allocation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112986 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
fc633002339439339e94f83eca9a012c6fc51e50 03-Sep-2010 Jim Grosbach <grosbach@apple.com> Check the local frame alignment for determining whether dynamic stack
alignment should be performed. Otherwise dynamic realignment may trigger
when the register allocator has already used the frame pointer as a general
purpose register. That is, we need to make sure that the list of reserved
registers doesn't change after register allocation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112986 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
856eafb9481b280ea46b940c4e2d3149375f4026 03-Sep-2010 Bob Wilson <bob.wilson@apple.com> Finish converting the rest of the NEON VLD instructions to use pseudo-
instructions prior to regalloc. Since it's getting a little close to
the 2.8 branch deadline, I'll have to leave the rest of the instructions
handled by the NEONPreAllocPass for now, but I didn't want to leave half
of the VLD instructions converted and the other half not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112983 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
f572191fe43025bd85ab5d398a5b53305fdc6b8b 03-Sep-2010 Bob Wilson <bob.wilson@apple.com> Finish converting the rest of the NEON VLD instructions to use pseudo-
instructions prior to regalloc. Since it's getting a little close to
the 2.8 branch deadline, I'll have to leave the rest of the instructions
handled by the NEONPreAllocPass for now, but I didn't want to leave half
of the VLD instructions converted and the other half not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112983 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
6d3d52b9bfd823d49cf3ea77f94ab6145aa1d997 03-Sep-2010 Daniel Dunbar <daniel@zuster.org> Revert "For ARM stack frames that utilize variable sized objects and have either", it is breaking oggenc with Clang for ARMv6.

This reverts commit 8d6e29cfda270be483abf638850311670829ee65.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112962 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
6a8700301ca6f8f2f5f787c8d1f5206a7dfceed6 03-Sep-2010 Daniel Dunbar <daniel@zuster.org> Revert "For ARM stack frames that utilize variable sized objects and have either", it is breaking oggenc with Clang for ARMv6.

This reverts commit 8d6e29cfda270be483abf638850311670829ee65.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112962 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
21fb5c8b0480e12f9e439cd835341725ea1b1ad5 03-Sep-2010 Bob Wilson <bob.wilson@apple.com> Replace NEON vabdl, vaba, and vabal intrinsics with combinations of the
vabd intrinsic and add and/or zext operations. In the case of vaba, this
also avoids the need for a DAG combine pattern to combine vabd with add.
Update tests. Auto-upgrade the old intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112941 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
eb0c3d372906df9c61a31651a0ba278034447e94 03-Sep-2010 Bob Wilson <bob.wilson@apple.com> Replace NEON vabdl, vaba, and vabal intrinsics with combinations of the
vabd intrinsic and add and/or zext operations. In the case of vaba, this
also avoids the need for a DAG combine pattern to combine vabd with add.
Update tests. Auto-upgrade the old intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112941 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
d4e976a5e075cf86c76f5ad8a38169523967e10b 03-Sep-2010 Eric Christopher <echristo@apple.com> Simple branch instruction support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112923 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e5734105daf799dea671666059f7ecab6abb389f 03-Sep-2010 Eric Christopher <echristo@apple.com> Simple branch instruction support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112923 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7d46263237a74033dc41bf768d71ea907035eaaa 03-Sep-2010 Eric Christopher <echristo@apple.com> Add basic support for materializing constants (including fp) and
stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112912 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
56d2b72884f98001cefdf8de61d6d7fc00d3df90 03-Sep-2010 Eric Christopher <echristo@apple.com> Add basic support for materializing constants (including fp) and
stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112912 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
28a11c52796c4506d5a72ca9e71de3a517e56aae 03-Sep-2010 Jim Grosbach <grosbach@apple.com> For ARM stack frames that utilize variable sized objects and have either
large local stack areas or require dynamic stack realignment, allocate a
base register via which to access the local frame. This allows efficient
access to frame indices not accessible via the FP (either due to being out
of range or due to dynamic realignment) or the SP (due to variable sized
object allocation). In particular, this greatly improves efficiency of access
to spill slots in Thumb functions which contain VLAs.

rdar://7352504
rdar://8374540
rdar://8355680



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112883 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
1755b3964f931bdd6fa9b4c0138f666ccfa12aca 03-Sep-2010 Jim Grosbach <grosbach@apple.com> For ARM stack frames that utilize variable sized objects and have either
large local stack areas or require dynamic stack realignment, allocate a
base register via which to access the local frame. This allows efficient
access to frame indices not accessible via the FP (either due to being out
of range or due to dynamic realignment) or the SP (due to variable sized
object allocation). In particular, this greatly improves efficiency of access
to spill slots in Thumb functions which contain VLAs.

rdar://7352504
rdar://8374540
rdar://8355680



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112883 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
c5218ea0315c26313217aa3edab56bb35da1736d 02-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112852 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
5c33f5bf67f61e3a1addda6de735d28d550dd0eb 02-Sep-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112852 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e2e8eeac79224e6899e32f1675fb5a5945b7b549 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Now that register allocation properly considers reserved regs, simplify the
ARM register class allocation order functions to take advantage of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112841 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
e7c14162631d845ff3c465bfe2c6bdf2f59dba70 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Now that register allocation properly considers reserved regs, simplify the
ARM register class allocation order functions to take advantage of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112841 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
dcab47a6effbf4a03747b01c64e4fbbea1b52243 02-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fill in a missing comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112826 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
82a9c8480ecd41a1351274569f8d4e4de2723cf6 02-Sep-2010 Bob Wilson <bob.wilson@apple.com> Fill in a missing comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112826 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
9550ea48f891d97a611b62d807dd1657b377a73a 02-Sep-2010 Bob Wilson <bob.wilson@apple.com> Convert VLD1 and VLD2 instructions to use pseudo-instructions until
after regalloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112825 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
ffde080ae615906545eb33dab30e7bc47c2ac838 02-Sep-2010 Bob Wilson <bob.wilson@apple.com> Convert VLD1 and VLD2 instructions to use pseudo-instructions until
after regalloc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112825 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
d7795a2ed7fec29211353ba0b422d554b02685a3 02-Sep-2010 Eric Christopher <echristo@apple.com> Clang's -ccc-host-triple was ignoring the arch specifier on my triple,
I don't need to implement this quite yet - and not for ConstantInt anyhow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112798 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1f58741aabd00545468f4ecf29db3dba8e0bd6ac 02-Sep-2010 Eric Christopher <echristo@apple.com> Clang's -ccc-host-triple was ignoring the arch specifier on my triple,
I don't need to implement this quite yet - and not for ConstantInt anyhow.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112798 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7abec8920f41b5d1d9ec8d5f06c39d40b01cd10e 02-Sep-2010 Eric Christopher <echristo@apple.com> This should be TargetMaterializeConstant instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112795 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1b61ef4b22c8ae0ef82685637142246a245f9ecb 02-Sep-2010 Eric Christopher <echristo@apple.com> This should be TargetMaterializeConstant instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112795 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f96e527cfdb1c05c73da2958b6163805ff906e8c 02-Sep-2010 Eric Christopher <echristo@apple.com> One definition of isThumb is plenty, thanks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112793 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
eaa204b2f8414a2ac5764a753c119c8cd40bade3 02-Sep-2010 Eric Christopher <echristo@apple.com> One definition of isThumb is plenty, thanks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112793 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
35448158e8ca2f657a9e3ef65858833fdf87ea0d 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112790 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b0739b78332275906cd5ace2ae0d65a29135667b 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112790 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0cea67e33308c0e6a7db75c2ab16b08956d306c0 02-Sep-2010 Eric Christopher <echristo@apple.com> Rework arm fast-isel load and store handling. Move offset computation
into the "address selection" routine and handle constant materialization
for stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112788 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
318b6eec8d72ad6dad887abde3fed484bd8d86ef 02-Sep-2010 Eric Christopher <echristo@apple.com> Rework arm fast-isel load and store handling. Move offset computation
into the "address selection" routine and handle constant materialization
for stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112788 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b2064cfed9823f83b9dda9ee2ef70c215967beee 02-Sep-2010 Jim Grosbach <grosbach@apple.com> trivial cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112779 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
7af3a345a9aa1772d723c7e2c3a059dfdfba028d 02-Sep-2010 Jim Grosbach <grosbach@apple.com> trivial cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112779 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
6647ba4e23d7f995c5d9a0f9b4547546f61adec4 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Simplify the tGPR register class now that the register allocators know not
to try to allocate reserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112774 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
352f23529c47486d35662de031403de9428c309b 02-Sep-2010 Jim Grosbach <grosbach@apple.com> Simplify the tGPR register class now that the register allocators know not
to try to allocate reserved registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112774 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
8d16b413cb261383d69adb86d0ba6451eabfc21b 02-Sep-2010 Bob Wilson <bob.wilson@apple.com> Remove NEON vmull, vmlal, and vmlsl intrinsics, replacing them with multiply,
add, and subtract operations with zero-extended or sign-extended vectors.
Update tests. Add auto-upgrade support for the old intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112773 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
d0b69cf1198dadbb7bdfc385334b67f60f756539 02-Sep-2010 Bob Wilson <bob.wilson@apple.com> Remove NEON vmull, vmlal, and vmlsl intrinsics, replacing them with multiply,
add, and subtract operations with zero-extended or sign-extended vectors.
Update tests. Add auto-upgrade support for the old intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112773 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
fd6c6e603102d56c48f5d43507687182733750c8 02-Sep-2010 Eric Christopher <echristo@apple.com> Some basic store support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112752 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
543cf05b9cb98f50a22cf05137d97bb3bb61f94a 02-Sep-2010 Eric Christopher <echristo@apple.com> Some basic store support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112752 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e667ceafa490f762f2bbe876f4e5d40db0edb282 01-Sep-2010 Eric Christopher <echristo@apple.com> Add some more load types in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112721 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
4e68c7cca44d33771d376f1668d687ce9d8f11d3 01-Sep-2010 Eric Christopher <echristo@apple.com> Add some more load types in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112721 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
49071048d8cafc11ab950cde1207424ed5324cf0 01-Sep-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112712 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
14ab39e43f151d833e74534c87b670b767ff0d5d 01-Sep-2010 Chris Lattner <sabre@nondot.org> zap dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112712 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
79476545f88f0ce8be5ac7a32bf793ee3bad6b0f 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
b9875480df977bb738490ff9a33740c816a7f190 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
9fce9b6dec5deec32d0f70fb323ffdec9c6b71b1 01-Sep-2010 Bill Wendling <isanbard@gmail.com> And ANDS pattern to match the t2ANDS pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112654 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2d811d38d43479995d5b4c97b7a777b0f8984325 01-Sep-2010 Bill Wendling <isanbard@gmail.com> And ANDS pattern to match the t2ANDS pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112654 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b93fd8d23bef3c063e8a2bfd7636253326d2d1b2 31-Aug-2010 Jim Grosbach <grosbach@apple.com> SP relative offsets need to be adjusted by the local allocation size when
determining if they're likely to be in range of the SP when resolving
frame references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112624 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c1dc78de762e8a65fe1edd0cced13d94ab5a971f 31-Aug-2010 Jim Grosbach <grosbach@apple.com> SP relative offsets need to be adjusted by the local allocation size when
determining if they're likely to be in range of the SP when resolving
frame references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112624 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b920f48fd81356229c82ff0645a27af6c7e2bd77 31-Aug-2010 Jim Grosbach <grosbach@apple.com> this assert should just be a condition, since this function is just asking if
the offset is legally encodable, not actually trying to do the encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112622 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d4511e947ee1e89a4f199bfac0d401976930ccfe 31-Aug-2010 Jim Grosbach <grosbach@apple.com> this assert should just be a condition, since this function is just asking if
the offset is legally encodable, not actually trying to do the encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112622 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
7fd6f7361639c2cc05dbbcd8206d63fca14a40a3 31-Aug-2010 Bill Wendling <isanbard@gmail.com> - Cleanup some whitespaces.
- Convert {0,1} and friends into 0b01, which is identical and more consistent.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112593 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
da2ae63206bcf6856f9d717862508b94213c2336 31-Aug-2010 Bill Wendling <isanbard@gmail.com> - Cleanup some whitespaces.
- Convert {0,1} and friends into 0b01, which is identical and more consistent.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112593 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
09d3cce43ab4f7af166ec7ccdfc137abe20be98c 31-Aug-2010 Eric Christopher <echristo@apple.com> Rewrite slightly so we can expand for floating point types easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112568 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dc90804a402b9d617c154625e04a74ebd7fe3599 31-Aug-2010 Eric Christopher <echristo@apple.com> Rewrite slightly so we can expand for floating point types easier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112568 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
197dfa9acaeb6ea16767126861b6638f01d5579c 31-Aug-2010 Eric Christopher <echristo@apple.com> If we have an unhandled type then assert, we shouldn't get here for
things we can't handle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112559 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
548d1bb97e6510d1e16299058a4bacb068ede13a 31-Aug-2010 Eric Christopher <echristo@apple.com> If we have an unhandled type then assert, we shouldn't get here for
things we can't handle.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112559 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fedf918b16a0f20347796a8e19c2fded1fd12ff0 31-Aug-2010 Anton Korobeynikov <asl@math.spbu.ru> Expand MOVi32imm in ARM mode after regalloc. This provides
scheduling opportunities (extra instruction can go in between
MOVT / MOVW pair removing the stall).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112546 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
6d1e29d2f203093e3e03f15173c0f36637d3afe3 31-Aug-2010 Anton Korobeynikov <asl@math.spbu.ru> Expand MOVi32imm in ARM mode after regalloc. This provides
scheduling opportunities (extra instruction can go in between
MOVT / MOVW pair removing the stall).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112546 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
a710318ed065b392bf6174433dd719fb538f4f0b 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
RMInstrFormats.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.td
68322e5d81e982ca050362917555bc572c9a36ad 30-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to clear the shadow kill flag at the same time as clearing the real
kill flag.

This could cause duplicate kill flags when the same register was used twice in a
continuous sequence of STRs.

There is no small test case. <rdar://problem/8218046>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112534 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
253627967454246d347a5038ec971f6738f77f07 30-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remember to clear the shadow kill flag at the same time as clearing the real
kill flag.

This could cause duplicate kill flags when the same register was used twice in a
continuous sequence of STRs.

There is no small test case. <rdar://problem/8218046>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112534 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
0f8fd69a7d9e323019b59270341855d0976f1c5a 30-Aug-2010 Bob Wilson <bob.wilson@apple.com> Remove NEON vmovn intrinsic, replacing it with vector truncate operations.
Auto-upgrade the old intrinsic and update tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112507 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
973a074345add36c046c0f0bfea0156a532ab479 30-Aug-2010 Bob Wilson <bob.wilson@apple.com> Remove NEON vmovn intrinsic, replacing it with vector truncate operations.
Auto-upgrade the old intrinsic and update tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112507 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
800263cd08fe1943a1d14eabe40f80f82ffafccb 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
366fd5ebfb62c0a45510d6cbcac2db501bb7429a 30-Aug-2010 Bob Wilson <bob.wilson@apple.com> When expanding NEON VST pseudo instructions, if the original super-register
operand is killed, add it to the expanded instruction as an implicit kill
operand instead of marking the individual subregs with kill flags. This
should work better in general and also handles the case for VST3 where one
of the subregs was not referenced in the expanded instruction and so was
not marked killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112494 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
7e701979ad20796bc930b21de3888ccfa0d8b33d 30-Aug-2010 Bob Wilson <bob.wilson@apple.com> When expanding NEON VST pseudo instructions, if the original super-register
operand is killed, add it to the expanded instruction as an implicit kill
operand instead of marking the individual subregs with kill flags. This
should work better in general and also handles the case for VST3 where one
of the subregs was not referenced in the expanded instruction and so was
not marked killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112494 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
34b4817b4079a750d00397447b986d29245b199c 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
RMInstrFormats.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.td
e88c8a67b11820af86cbd9d46a84772ddb7337d8 29-Aug-2010 Bill Wendling <isanbard@gmail.com> Fix whitespaces. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112421 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
10ce7f311694aed3bbdd4ba7c5260c05597a2f22 29-Aug-2010 Bill Wendling <isanbard@gmail.com> Fix whitespaces. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112421 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dc73ae1268b84720a7e62c82bd943f30c6df9170 29-Aug-2010 Bob Wilson <bob.wilson@apple.com> Remove NEON vaddl, vaddw, vsubl, and vsubw intrinsics. Instead, use llvm
IR add/sub operations with one or both operands sign- or zero-extended.
Auto-upgrade the old intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112416 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
04d6c289ab28114af5471c4dc38cbf7b7127d3c3 29-Aug-2010 Bob Wilson <bob.wilson@apple.com> Remove NEON vaddl, vaddw, vsubl, and vsubw intrinsics. Instead, use llvm
IR add/sub operations with one or both operands sign- or zero-extended.
Auto-upgrade the old intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112416 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
11a4400a9e355f0086646c391c9cce42b2ba66c7 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
RMInstrThumb2.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
RMInstrThumb2.td
3f1594c9b1e0a4b199718b227d711c92320b51d7 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
RMInstrThumb2.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
RMInstrThumb2.td
ee4049d2a2fdd07b97570448934674af1cded60c 29-Aug-2010 Bill Wendling <isanbard@gmail.com> File missing from last commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112394 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ac3b93536227d7bc71f8c1cac429201131705d67 29-Aug-2010 Bill Wendling <isanbard@gmail.com> File missing from last commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112394 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
64f2e2acdc30017773ef58eb46f1a1be2a8cdb41 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
RMISelLowering.cpp
RMISelLowering.h
RMInstrThumb2.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
RMISelLowering.cpp
RMISelLowering.h
RMInstrThumb2.td
5f5dbccb8f5dc31e95d3705b4aab25ca20ade911 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for VST1 and VST2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112357 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
e5ce4f68c786696a96acf1f1aa5431652abb6ce7 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for VST1 and VST2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112357 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
76b3870ecc86c541a8ea5a8a720ba2415e9b3db2 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> We don't need to custom-select VLDMQ and VSTMQ anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112336 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
fd7fd940c33ee48265cb8947d99f21a6711bd9d6 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> We don't need to custom-select VLDMQ and VSTMQ anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112336 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
7bfaf805bce188e658b51c0842a9845b73754098 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> When merging Thumb2 loads/stores, do not give up when the offset is one of
the special values that for ARM would be used with IB or DA modes. Fall
through and consider materializing a new base address is it would be
profitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112329 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
14805e2afd5aa754e13fd5bb99365ffe972e9696 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> When merging Thumb2 loads/stores, do not give up when the offset is one of
the special values that for ARM would be used with IB or DA modes. Fall
through and consider materializing a new base address is it would be
profitable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112329 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
1e68cc1f1f9540f01e2aad5eb0c2a8710ca4a054 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> Change ARM VFP VLDM/VSTM instructions to use addressing mode #4, just like
all the other LDM/STM instructions. This fixes asm printer crashes when
compiling with -O0. I've changed one of the NEON tests (vst3.ll) to run
with -O0 to check this in the future.

Prior to this change VLDM/VSTM used addressing mode #5, but not really.
The offset field was used to hold a count of the number of registers being
loaded or stored, and the AM5 opcode field was expanded to specify the IA
or DB mode, instead of the standard ADD/SUB specifier. Much of the backend
was not aware of these special cases. The crashes occured when rewriting
a frameindex caused the AM5 offset field to be changed so that it did not
have a valid submode. I don't know exactly what changed to expose this now.
Maybe we've never done much with -O0 and NEON. Regardless, there's no longer
any reason to keep a count of the VLDM/VSTM registers, so we can use
addressing mode #4 and clean things up in a lot of places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112322 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMInstPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
d4bfd54ec2947e73ab152c3c548e4dd4beb700ba 28-Aug-2010 Bob Wilson <bob.wilson@apple.com> Change ARM VFP VLDM/VSTM instructions to use addressing mode #4, just like
all the other LDM/STM instructions. This fixes asm printer crashes when
compiling with -O0. I've changed one of the NEON tests (vst3.ll) to run
with -O0 to check this in the future.

Prior to this change VLDM/VSTM used addressing mode #5, but not really.
The offset field was used to hold a count of the number of registers being
loaded or stored, and the AM5 opcode field was expanded to specify the IA
or DB mode, instead of the standard ADD/SUB specifier. Much of the backend
was not aware of these special cases. The crashes occured when rewriting
a frameindex caused the AM5 offset field to be changed so that it did not
have a valid submode. I don't know exactly what changed to expose this now.
Maybe we've never done much with -O0 and NEON. Regardless, there's no longer
any reason to keep a count of the VLDM/VSTM registers, so we can use
addressing mode #4 and clean things up in a lot of places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112322 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMAsmPrinter.cpp
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMInstPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
161330d66149d8ffb25f3e13003f1b7c26fc4940 27-Aug-2010 Bob Wilson <bob.wilson@apple.com> Unsigned value cannot be < 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112300 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3d38e8364a542abab6ca3d3aed658cf60d3112b4 27-Aug-2010 Bob Wilson <bob.wilson@apple.com> Unsigned value cannot be < 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112300 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
32b4e13e59e23f2354f6c3ecc45df8e43a989b0f 27-Aug-2010 Jim Grosbach <grosbach@apple.com> Simplify eliminateFrameIndex() interface back down now that PEI doesn't need
to try to re-use scavenged frame index reference registers. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112241 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
fcb4a8ead3cd8d9540d5eaa448af5d14a0ee341a 27-Aug-2010 Jim Grosbach <grosbach@apple.com> Simplify eliminateFrameIndex() interface back down now that PEI doesn't need
to try to re-use scavenged frame index reference registers. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112241 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
ae4da43c7e09c17e962d1619f3ed0714dbe782d2 26-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up a bit. no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112228 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
1ab3f16f06698596716593a30545799688acccd7 26-Aug-2010 Jim Grosbach <grosbach@apple.com> tidy up a bit. no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112228 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
4659ad5ea0571106af47acb0305e52cf0135337a 26-Aug-2010 Jim Grosbach <grosbach@apple.com> Turn off the scavenging based frame reg reuse briefly to measure whether it's
still having a significant effect. It shouldn't be now that the pre-RA
virtual base reg stuff is in. Assuming that's valididated by the nightly
testers, we can simplify a lot of the PEI frame index code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112220 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b0fa9932ccf9760e7b20ab4233799b4f9f5e0ba5 26-Aug-2010 Jim Grosbach <grosbach@apple.com> Turn off the scavenging based frame reg reuse briefly to measure whether it's
still having a significant effect. It shouldn't be now that the pre-RA
virtual base reg stuff is in. Assuming that's valididated by the nightly
testers, we can simplify a lot of the PEI frame index code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112220 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
3e22f9cee290c1c1e74a762b6892b17f55200aef 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for VST3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112208 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
01ba461af7eafc9d181a5c349487691f2e801438 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for VST3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112208 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
877732be562940cfe7532f26f27691473ab210e4 26-Aug-2010 Bill Wendling <isanbard@gmail.com> Reapply r112176 without removing the other CMN patterns (that was unintentional).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112206 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6165e87824621902370d4f258063a1029326b881 26-Aug-2010 Bill Wendling <isanbard@gmail.com> Reapply r112176 without removing the other CMN patterns (that was unintentional).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112206 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9fcf879633dbfa171d84b94bfffb76329e095559 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
RMInstrThumb2.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
RMInstrThumb2.td
575146a0c167c6a84c421bbb3fcf863723732d1f 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
RMInstrThumb2.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
RMInstrThumb2.td
8319e7f7b76c82046b34655bd33e364a4827a451 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
RMInstrThumb2.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
RMInstrThumb2.td
8d1f30a7b84941f0777010f15ce810d2091934fe 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for VST1d64Q.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112170 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
70e48b23a3455e4689ee24cec4eb153d67223e86 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Use pseudo instructions for VST1d64Q.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112170 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
8cc452394c07881b37238aa8faaa1e5393927da4 26-Aug-2010 Jim Grosbach <grosbach@apple.com> Enable pre-RA virtual frame base register allocation. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112127 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ae47c6d69e2e34bc558a302586cbc3f27a6d7334 26-Aug-2010 Jim Grosbach <grosbach@apple.com> Enable pre-RA virtual frame base register allocation. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112127 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8b3107390815cc5e85ab8563a65f06305e38895a 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Revert svn 107892 (with changes to work with trunk). It caused a crash if
a VLD result was not used (Radar 8355607). It should also fix pr7988, but
I haven't verified that yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112118 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
2ac124c561c6c6687ce0a4f7709586010b6c80c4 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Revert svn 107892 (with changes to work with trunk). It caused a crash if
a VLD result was not used (Radar 8355607). It should also fix pr7988, but
I haven't verified that yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112118 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
c13e856c93813acc4dc5670e07eec01e2fe4912c 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Start converting NEON load/stores to use pseudo instructions, beginning here
with the VST4 instructions. Until after register allocation, we want to
represent sets of adjacent registers by a single super-register. These
VST4 pseudo instructions have a single QQ or QQQQ source register operand.
They get expanded to the real VST4 instructions with 4 separate D register
operands. Once this conversion is complete, we'll be able to remove the
NEONPreAllocPass and avoid some fragile and hacky code elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112108 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
EONPreAllocPass.cpp
709d59255a3100c7d440c93069efa1f726677a27 26-Aug-2010 Bob Wilson <bob.wilson@apple.com> Start converting NEON load/stores to use pseudo instructions, beginning here
with the VST4 instructions. Until after register allocation, we want to
represent sets of adjacent registers by a single super-register. These
VST4 pseudo instructions have a single QQ or QQQQ source register operand.
They get expanded to the real VST4 instructions with 4 separate D register
operands. Once this conversion is complete, we'll be able to remove the
NEONPreAllocPass and avoid some fragile and hacky code elsewhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112108 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
EONPreAllocPass.cpp
b91b721f3ec0f36ce312501faddbf58d0b47a326 25-Aug-2010 Jim Grosbach <grosbach@apple.com> Don't override the var from the enclosing scope.

When doing copy/paste/modify, it's apparently rather important to remember
the 'modify' bit...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112075 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f78ee6316bc755779920ac207edc27a89c0bd2f9 25-Aug-2010 Jim Grosbach <grosbach@apple.com> Don't override the var from the enclosing scope.

When doing copy/paste/modify, it's apparently rather important to remember
the 'modify' bit...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112075 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ba3fb74d7619aae96996136279d5c60d2c9f51e4 25-Aug-2010 Daniel Dunbar <daniel@zuster.org> ARM/Thumb2: Fix a misselect in getARMCmp, when attempting to adjust a signed
comparison that would overflow.
- The other under/overflow cases can't actually happen because the immediates
which would trigger them are legal (so we don't enter this code), but
adjusted the style to make it clear the transform is always valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112053 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3cc3283fcbb90924196cc38ee5977b35c4ee28b5 25-Aug-2010 Daniel Dunbar <daniel@zuster.org> ARM/Thumb2: Fix a misselect in getARMCmp, when attempting to adjust a signed
comparison that would overflow.
- The other under/overflow cases can't actually happen because the immediates
which would trigger them are legal (so we don't enter this code), but
adjusted the style to make it clear the transform is always valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112053 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3bdc53a822cf2c94a64f49ade806db66d5838f2a 25-Aug-2010 Eric Christopher <echristo@apple.com> Do type checks before we bother to do everything else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112039 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
61c3f9ae0624281a7feb0027b8bb87874fadbcd4 25-Aug-2010 Eric Christopher <echristo@apple.com> Do type checks before we bother to do everything else.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112039 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
fc4959c13dc6b2f9039d12d235d7a58d4e50018f 25-Aug-2010 Eric Christopher <echristo@apple.com> Reorganize load mechanisms. Handle types in a little less fixed way.
Fix some todos. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112031 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
b1cc848d1a9a831e8058fad546e41b21d955fd88 25-Aug-2010 Eric Christopher <echristo@apple.com> Reorganize load mechanisms. Handle types in a little less fixed way.
Fix some todos. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112031 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3c1d4d8887ea5327165b82d2b794dbeaf64cee55 25-Aug-2010 Eric Christopher <echristo@apple.com> Fix predicate and add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111981 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
992ea38e0e35f3700a76f49443fb134e7fcb46be 25-Aug-2010 Eric Christopher <echristo@apple.com> Fix predicate and add a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111981 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
3c1fada9859db2493b63b1b3854b803b6871165a 25-Aug-2010 Eric Christopher <echristo@apple.com> Rework braindead conditionals I put in yesterday.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111974 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
e24d66f525825a96ee76508076696936451902be 25-Aug-2010 Eric Christopher <echristo@apple.com> Rework braindead conditionals I put in yesterday.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111974 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ba1b277fd74478b9f5c9149281ea46a452af8337 25-Aug-2010 Eric Christopher <echristo@apple.com> Fix thumb2 mode loads to have the correct operand ordering. Add a todo
to fix this in the port.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111973 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
9f782d4dcf580ae508cc83f412884cd3c5f9207d 25-Aug-2010 Eric Christopher <echristo@apple.com> Fix thumb2 mode loads to have the correct operand ordering. Add a todo
to fix this in the port.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111973 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
734d432236e7dd52c2026e105bd22e7537ebcaaa 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Add ARM heuristic for when to allocate a virtual base register for stack
access. rdar://8277890&7352504

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111968 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
3197380143cdc18837722129ac888528b9fbfc2b 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Add ARM heuristic for when to allocate a virtual base register for stack
access. rdar://8277890&7352504

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111968 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
d7ac185d7a151148cecab8162ff8cfaa1e6a956a 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Move enabling the local stack allocation pass into the target where it belongs.
For now it's still a command line option, but the interface to the generic
code doesn't need to know that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111942 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
a273442891ae20fd8192526132e3819ea9e5eda9 24-Aug-2010 Jim Grosbach <grosbach@apple.com> Move enabling the local stack allocation pass into the target where it belongs.
For now it's still a command line option, but the interface to the generic
code doesn't need to know that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111942 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
721b89a710574b339374ef2640c46afaf3377c5b 24-Aug-2010 Jim Grosbach <grosbach@apple.com> add ARM cmd line option to force always using virtual base regs when possible.
Intended to help ease reproducing problems by increasing base register usage
after heuristics for only using the when needed are in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111930 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
cd59dc5e81eb080cd9b61f5a7e7d9f3eec206d8c 24-Aug-2010 Jim Grosbach <grosbach@apple.com> add ARM cmd line option to force always using virtual base regs when possible.
Intended to help ease reproducing problems by increasing base register usage
after heuristics for only using the when needed are in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111930 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
74f2552c772d1ffbd05bcb69501e1d974edbcbd4 24-Aug-2010 Bill Wendling <isanbard@gmail.com> Add comments for what the condition code symbols mean.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111889 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
5e7044bd0e3921c166d3604d12695e10782913c4 24-Aug-2010 Bill Wendling <isanbard@gmail.com> Add comments for what the condition code symbols mean.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111889 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
4bd7340a2d997bf06788ea4a7331720ac2a5ae0f 24-Aug-2010 Eric Christopher <echristo@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111887 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
882d62e2db7a82e4fd8fc401545ce3db46eadd82 24-Aug-2010 Eric Christopher <echristo@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111887 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
740df227906eba62add166420a55a5fb9ba3d324 24-Aug-2010 Eric Christopher <echristo@apple.com> Fix the opcode and the operands for the load instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111885 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2012c7bb7be28c163a4b8034e961ace51f6a7224 24-Aug-2010 Eric Christopher <echristo@apple.com> Fix the opcode and the operands for the load instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111885 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
534dc2d1b1e89191b95aa1eb11df85d2bf23b15c 24-Aug-2010 Eric Christopher <echristo@apple.com> Add register class hack that needs to go away, but makes it more obvious
that it needs to go away. Use loadRegFromStackSlot where possible.

Also, remember to update the value map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111883 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f06f309002f00e7927347502997f2df5756f4d9c 24-Aug-2010 Eric Christopher <echristo@apple.com> Add register class hack that needs to go away, but makes it more obvious
that it needs to go away. Use loadRegFromStackSlot where possible.

Also, remember to update the value map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111883 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
2c3a0818023da213c18423766aa3f7ed2c9ee62d 24-Aug-2010 Eric Christopher <echristo@apple.com> Add some more debugging code, make it more obvious that RegOffset is
getting an address for an object and select some default values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111871 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
cb0b04ba6fc847574f592d1a80ff3b60c0d4228c 24-Aug-2010 Eric Christopher <echristo@apple.com> Add some more debugging code, make it more obvious that RegOffset is
getting an address for an object and select some default values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111871 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
01db9cab563659c8014cedaa4a5442fc5846bc2a 24-Aug-2010 Eric Christopher <echristo@apple.com> Don't need the extra register here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111864 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1dfb4d31e068855c594d157d5a9a207daf473426 24-Aug-2010 Eric Christopher <echristo@apple.com> Don't need the extra register here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111864 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
c31428e6f3456fc6bdce342d98a2cfd9788d7ffc 24-Aug-2010 Eric Christopher <echristo@apple.com> Add some more "get address into register" code and a more TODOs/FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111860 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8654c71e56cd1f21f71bfce7eecb7373242663ff 24-Aug-2010 Eric Christopher <echristo@apple.com> Add some more "get address into register" code and a more TODOs/FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111860 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
00aa20a98c019c0950b4993d3bf7d9ee9d1cf6be 24-Aug-2010 Eric Christopher <echristo@apple.com> Add an ARMFunctionInfo member and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111854 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
7fe55b739c1bc319da9c81bcfd9d3e5d5030721b 24-Aug-2010 Eric Christopher <echristo@apple.com> Add an ARMFunctionInfo member and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111854 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
dbb80464e3fe15360d1ee8db564d5c2cc1c0c4d7 23-Aug-2010 Eric Christopher <echristo@apple.com> Start getting ARM loads/address computation going.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111850 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8300712c1e73dc106242f0007e0e0e4dd9ea38ce 23-Aug-2010 Eric Christopher <echristo@apple.com> Start getting ARM loads/address computation going.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111850 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
a88844b6a2e62840e510b5cced8fe03dc17276d2 20-Aug-2010 Bob Wilson <bob.wilson@apple.com> Replace the arm.neon.vmovls and vmovlu intrinsics with vector sign-extend and
zero-extend operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111614 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
b31a11b466281b7e01cfde007b2041eefa2341e4 20-Aug-2010 Bob Wilson <bob.wilson@apple.com> Replace the arm.neon.vmovls and vmovlu intrinsics with vector sign-extend and
zero-extend operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111614 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
28c238c9ded0b5c91e122c94b5a02d76a5245c11 20-Aug-2010 Ying Wang <wangying@google.com> Fix sim build.

Note that this only makes the sim build green, but the built images won't work for sure:
No libbcc.so, which depends on something else that can not build in sim mode.
No x86 bitcode is generated as well, I believe.

Change-Id: Idca8378427196622ac77cd56a38c6a160f03ba22
ndroid.mk
smParser/Android.mk
smPrinter/Android.mk
isassembler/Android.mk
argetInfo/Android.mk
21805df06264c2875849034c01bf4cdbcfecbc2d 20-Aug-2010 Eric Christopher <echristo@apple.com> Fix loop conditionals (MO.isDef() asserts that it's a reg) and
move some constraints around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111594 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
f762fbe4fa421c91e20044ee009ddb57e25dd135 20-Aug-2010 Eric Christopher <echristo@apple.com> Fix loop conditionals (MO.isDef() asserts that it's a reg) and
move some constraints around.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111594 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
d5178cd12fbb1fed250e8b9fa6995e0dff454963 20-Aug-2010 Eric Christopher <echristo@apple.com> Add a couple of random comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111592 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
cb59229a4a60abaee9ef060c515dbd3513865afd 20-Aug-2010 Eric Christopher <echristo@apple.com> Add a couple of random comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111592 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
8a242004e2fbb8631bef004a62a5d6a3ca98d52b 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handling of offsets on frame index references. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111585 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
e2f556933e1a19cddf6d4f370e2770c0f763b025 20-Aug-2010 Jim Grosbach <grosbach@apple.com> Better handling of offsets on frame index references. rdar://8277890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111585 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
b211dfb0547305b4dd399dd712b9d324def2ea8d 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Add Thumb1 support for virtual frame indices.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111533 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
74d7b0af58951dce2f874c600a6a48a2454b4914 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Add Thumb1 support for virtual frame indices.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111533 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
e0837196c0fa42f06e3906419e2c91e3c6048334 19-Aug-2010 Eric Christopher <echristo@apple.com> Silence warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111518 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
979e0a141487a4cd8538dffbe09eca544acf14c7 19-Aug-2010 Eric Christopher <echristo@apple.com> Silence warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111518 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0f9dc31d179babce2cb59eb53068598ff9599500 19-Aug-2010 Eric Christopher <echristo@apple.com> Add an AddOptionalDefs method and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111489 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
456144eb14b377166af1d9439cee6fad86fcdb1b 19-Aug-2010 Eric Christopher <echristo@apple.com> Add an AddOptionalDefs method and use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111489 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
838d0c71b9538c3eced88f47368bca45df4a2680 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
RMInstrThumb2.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
RMInstrThumb2.td
86cec0707c4de85b3a3ca9ce760ce516b1102652 19-Aug-2010 Eric Christopher <echristo@apple.com> Remove extra header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111456 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
d96b02b3d6dfede96b6259f737720cc10330c84b 19-Aug-2010 Eric Christopher <echristo@apple.com> Remove extra header.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111456 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
931ad7afbae7e7edbf514e24c482183b6138c422 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Enable ARM base register reuse to local stack slot allocation. Whenever a new
frame index reference to an object in the local block is seen, check if
it's near enough to any previously allocaated base register to re-use.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111443 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
2b1e202e1c2137b03f7c6ecc18668e40819fa22f 19-Aug-2010 Jim Grosbach <grosbach@apple.com> Enable ARM base register reuse to local stack slot allocation. Whenever a new
frame index reference to an object in the local block is seen, check if
it's near enough to any previously allocaated base register to re-use.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111443 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
811c60b698ce5f4ad304cb6394426de7dc0ee2e6 18-Aug-2010 Bill Wendling <isanbard@gmail.com> Minor simplification. Gets rid of a needless temporary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111430 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ad422718f9b3224234f52e84d28d8a57a4e89987 18-Aug-2010 Bill Wendling <isanbard@gmail.com> Minor simplification. Gets rid of a needless temporary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111430 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0bcf23f115608757b1d704e2f70a1148132551db 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook for re-using virtual base registers for local stack slot access.
Nothing fancy, just ask the target if any currently available base reg
is in range for the instruction under consideration and use the first one
that is. Placeholder ARM implementation simply returns false for now.

ongoing saga of rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111374 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
74d803a58c7935c067397bb19afc05ec464d8159 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook for re-using virtual base registers for local stack slot access.
Nothing fancy, just ask the target if any currently available base reg
is in range for the instruction under consideration and use the first one
that is. Placeholder ARM implementation simply returns false for now.

ongoing saga of rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111374 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
4e18f31e27dd8b7b725bb4acae8be8240d23bbe0 18-Aug-2010 Bob Wilson <bob.wilson@apple.com> Expand ZERO_EXTEND operations for NEON vector types.
Testcase from Nick Lewycky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111341 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2003bcfbd243716e5599f65705b515c2a229c7d3 18-Aug-2010 Bob Wilson <bob.wilson@apple.com> Expand ZERO_EXTEND operations for NEON vector types.
Testcase from Nick Lewycky.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111341 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0db154b121c5929e8be95ffafc007f128e31be19 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add materialization of virtual base registers for frame indices allocated into
the local block. Resolve references to those indices to a new base register.
For simplification and testing purposes, a new virtual base register is
allocated for each frame index being resolved. The result is truly horrible,
but correct, code that's good for exercising the new code paths.

Next up is adding thumb1 support, which should be very simple. Following that
will be adding base register re-use and implementing a reasonable ARM
heuristic for when a virtual base register should be generated at all.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111315 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
dc140c6e7b8350ca51aa1d408c10e25a27826e2c 18-Aug-2010 Jim Grosbach <grosbach@apple.com> Add materialization of virtual base registers for frame indices allocated into
the local block. Resolve references to those indices to a new base register.
For simplification and testing purposes, a new virtual base register is
allocated for each frame index being resolved. The result is truly horrible,
but correct, code that's good for exercising the new code paths.

Next up is adding thumb1 support, which should be very simple. Following that
will be adding base register re-use and implementing a reasonable ARM
heuristic for when a virtual base register should be generated at all.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111315 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
373707e4c4b55e7ec34f792a99387b837567468c 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
1e26304589fae0b648b779cc23aece264e7405b3 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
RM.td
RMInstrInfo.td
RMInstrThumb2.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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
64a2ed70ddd5d095eb7ebb0b1ac342f5a4732847 17-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook to examine an instruction referencing a frame index to determine
whether to allocate a virtual frame base register to resolve the frame
index reference in it. Implement a simple version for ARM to aid debugging.

In LocalStackSlotAllocation, scan the function for frame index references
to local frame indices and ask the target whether to allocate virtual
frame base registers for any it encounters. Purely infrastructural for
debug output. Next step is to actually allocate base registers, then add
intelligent re-use of them.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111262 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
8708ead5a46f4ec8f2d5f832be23381924d72b8d 17-Aug-2010 Jim Grosbach <grosbach@apple.com> Add hook to examine an instruction referencing a frame index to determine
whether to allocate a virtual frame base register to resolve the frame
index reference in it. Implement a simple version for ARM to aid debugging.

In LocalStackSlotAllocation, scan the function for frame index references
to local frame indices and ask the target whether to allocate virtual
frame base registers for any it encounters. Purely infrastructural for
debug output. Next step is to actually allocate base registers, then add
intelligent re-use of them.

rdar://8277890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111262 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
936ea41c5926db650b5fc577f18914d04d1fe899 17-Aug-2010 Jim Grosbach <grosbach@apple.com> explicitly handle no-op cases for clarity. Fixes clang warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111260 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
3edb90492727f60683181672201fd811101ea0d7 17-Aug-2010 Jim Grosbach <grosbach@apple.com> explicitly handle no-op cases for clarity. Fixes clang warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111260 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
fec03d6365fe3d8a86bd9bb82e6274bbf567b914 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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
03a159cc0b456eb87b97d056d3dd2db6a6388bca 17-Aug-2010 Chris Lattner <sabre@nondot.org> fix emacs language spec's, patch by Edmund Grimley-Evans!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111241 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCallingConv.td
RMRegisterInfo.td
23e70ebf352ff4938210711464c68b5a6e46e61c 17-Aug-2010 Chris Lattner <sabre@nondot.org> fix emacs language spec's, patch by Edmund Grimley-Evans!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111241 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCallingConv.td
RMRegisterInfo.td
d085fbd245d4cc6f4620b656b058024257421824 17-Aug-2010 Bob Wilson <bob.wilson@apple.com> Allow more cases of undef shuffle indices and add tests for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111226 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7aaf5bf3db44c94bd630e07d63c3a4a1d92e44f4 17-Aug-2010 Bob Wilson <bob.wilson@apple.com> Allow more cases of undef shuffle indices and add tests for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111226 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
75212ed9fa54e7383a30fddf128ee35036d4e7f2 17-Aug-2010 Eric Christopher <echristo@apple.com> Copy over some overridden MI wrappers for ARM fast-isel. This is where
we're adding predicates and optional defs to the MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111222 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0fe7d54732491126c26e7e1ec60274ff2b02b849 17-Aug-2010 Eric Christopher <echristo@apple.com> Copy over some overridden MI wrappers for ARM fast-isel. This is where
we're adding predicates and optional defs to the MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111222 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
ed477833e7e42b30e473b8cdeadd76a93d0d9193 17-Aug-2010 Eric Christopher <echristo@apple.com> Make arm fast-isel possible to enable via command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111219 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
038fea5e30faaf37e597f8a4627e1e3141fb59ba 17-Aug-2010 Eric Christopher <echristo@apple.com> Make arm fast-isel possible to enable via command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111219 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
54984dc0510fc3baa1fec8174059cd887587a0e2 17-Aug-2010 Bob Wilson <bob.wilson@apple.com> Ignore undef shuffle indices when checking for a VTRN shuffle. Radar 8290937.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111208 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ca5e47d3f84dcf3dfbc6706bf1041e7029f3ce0a 17-Aug-2010 Bob Wilson <bob.wilson@apple.com> Ignore undef shuffle indices when checking for a VTRN shuffle. Radar 8290937.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111208 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
947300beef202bd763dc6df6e193e56d8efb6957 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
255974d9ffbe398eb7bd1765ec0b1bb0ce6ca25c 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
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
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
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
bd001e29c82e85cdf88c0da668a20a357ae77015 16-Aug-2010 Bob Wilson <bob.wilson@apple.com> Remove unused code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111154 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
45cdd7fd612df94f92e7b7c5b0a03d078afb490c 16-Aug-2010 Bob Wilson <bob.wilson@apple.com> Remove unused code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111154 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
256a47bb64119aee251d3ba7658d8fb937d92602 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
RMInstrThumb2.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
RMInstrThumb2.td
616d081f189e70a1277f6534f6a2c7d621c1685a 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
RMInstrThumb2.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
RMInstrThumb2.td
a5142538b3506d24c90018f185f8f1f36165fd5f 14-Aug-2010 Bob Wilson <bob.wilson@apple.com> Temporarily disable tail calls on ARM to work around some linker problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111050 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
703af3ab128addcd061e0761b059a919da2a4066 14-Aug-2010 Bob Wilson <bob.wilson@apple.com> Temporarily disable tail calls on ARM to work around some linker problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111050 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
83447724884122e84541b83a315189eb8ce34c30 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
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
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
RMInstrThumb2.td
isassembler/ThumbDisassemblerCore.h
99a5ff08a4e3ba7d8ff8652b4a12d16d4ecbf12a 13-Aug-2010 Bob Wilson <bob.wilson@apple.com> Refactor the code for disassembling Thumb2 saturate instructions along the
same lines as the change I made for ARM saturate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111029 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
6daf2a254b89bc039f9d58c38e2158a1896d4695 13-Aug-2010 Bob Wilson <bob.wilson@apple.com> Refactor the code for disassembling Thumb2 saturate instructions along the
same lines as the change I made for ARM saturate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111029 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
232f400541c7710767234dfa95df16bca4fc72dd 12-Aug-2010 Johnny Chen <johnny.chen@apple.com> Cleaned up the for-disassembly-only entries in the arm instruction table so that
the memory barrier variants (other than 'SY' full system domain read and write)
are treated as one instruction with option operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110951 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMInstrInfo.td
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassemblerCore.cpp
1adc40cac314b0a77b790b094bca146a3a868452 12-Aug-2010 Johnny Chen <johnny.chen@apple.com> Cleaned up the for-disassembly-only entries in the arm instruction table so that
the memory barrier variants (other than 'SY' full system domain read and write)
are treated as one instruction with option operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110951 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMInstrInfo.td
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassemblerCore.cpp
34923bcdbacdce7500ceef304b130ea6bb411be0 12-Aug-2010 Evan Cheng <evan.cheng@apple.com> Make sure ARM constant island pass does not break up an IT block. If the split point is in the middle of an IT block, it should move it up to just above the IT instruction. rdar://8302637


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110947 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
719510a178a910feb1db707140011c32a30992c4 12-Aug-2010 Evan Cheng <evan.cheng@apple.com> Make sure ARM constant island pass does not break up an IT block. If the split point is in the middle of an IT block, it should move it up to just above the IT instruction. rdar://8302637


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110947 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
82c8b83b35f2255127bd06180390db44dcefc23a 12-Aug-2010 Johnny Chen <johnny.chen@apple.com> The autogened decoder was confusing the ARM STRBT for ARM USAT, because the .td
entry for ARM STRBT is actually a super-instruction for A8.6.199 STRBT A1 & A2.
Recover by looking for ARM:USAT encoding pattern before delegating to the auto-
gened decoder.

Added a "usat" test case to arm-tests.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110894 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
270159fcc21e06c67aa571d10d2b22d41d9a751a 12-Aug-2010 Johnny Chen <johnny.chen@apple.com> The autogened decoder was confusing the ARM STRBT for ARM USAT, because the .td
entry for ARM STRBT is actually a super-instruction for A8.6.199 STRBT A1 & A2.
Recover by looking for ARM:USAT encoding pattern before delegating to the auto-
gened decoder.

Added a "usat" test case to arm-tests.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110894 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
2ae71c9eabb91083ac98f49da2e3a4561a5b219c 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/AsmParser: Push the burdon of emitting diagnostics about unmatched
instructions onto the target specific parser, which can do a better job.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110889 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f1e29d4c21d15f9e1e3a64f3b92b1aa9908e4f63 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/AsmParser: Push the burdon of emitting diagnostics about unmatched
instructions onto the target specific parser, which can do a better job.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110889 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
049a7528a0bbafcc9c7ef844cea64d27dbc95f98 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> tblgen/AsmMatcher: Always emit the match function as 'MatchInstructionImpl',
target specific parsers can adapt the TargetAsmParser to this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110888 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4f98f834593f0a107268d19a557b63f0da33a751 12-Aug-2010 Daniel Dunbar <daniel@zuster.org> tblgen/AsmMatcher: Always emit the match function as 'MatchInstructionImpl',
target specific parsers can adapt the TargetAsmParser to this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110888 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7fe6c8acfd41e32d895a60170b040509096fa063 12-Aug-2010 Johnny Chen <johnny.chen@apple.com> Changed the format of DMBsy, DSBsy, and friends from Pseudo to MiscFrm.
Added two test cases to arm-tests.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110880 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
7def14f40f0b47551e2d66ec2f140a18b5bbbea4 12-Aug-2010 Johnny Chen <johnny.chen@apple.com> Changed the format of DMBsy, DSBsy, and friends from Pseudo to MiscFrm.
Added two test cases to arm-tests.txt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110880 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
6aed5ee28d0ef1b624ea5367409c497b4ab4a36a 12-Aug-2010 Bob Wilson <bob.wilson@apple.com> Move the ARM SSAT and USAT optional shift amount operand out of the
instruction opcode. This also fixes part of PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110875 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMInstrInfo.td
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
eaf1c98a7c38444d41d1c6dc2074736eec7d452f 12-Aug-2010 Bob Wilson <bob.wilson@apple.com> Move the ARM SSAT and USAT optional shift amount operand out of the
instruction opcode. This also fixes part of PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110875 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMInstrInfo.td
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
f0f1a33b427ca5ac25b1fefbd18906e263a884cc 11-Aug-2010 Jim Grosbach <grosbach@apple.com> cortex m4 has floating point support, but only single precision.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110810 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
fcba5e6b645df89ae6b93911fe0f80b08fa6b44c 11-Aug-2010 Jim Grosbach <grosbach@apple.com> cortex m4 has floating point support, but only single precision.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110810 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
962e99e5a6f6e6a6ccefa2ccca411263e68ff99d 11-Aug-2010 Bill Wendling <isanbard@gmail.com> Consider this code snippet:

float t1(int argc) {
return (argc == 1123) ? 1.234f : 2.38213f;
}

We would generate truly awful code on ARM (those with a weak stomach should look
away):

_t1:
movw r1, #1123
movs r2, #1
movs r3, #0
cmp r0, r1
mov.w r0, #0
it eq
moveq r0, r2
movs r1, #4
cmp r0, #0
it ne
movne r3, r1
adr r0, #LCPI1_0
ldr r0, [r0, r3]
bx lr

The problem was that legalization was creating a cascade of SELECT_CC nodes, for
for the comparison of "argc == 1123" which was fed into a SELECT node for the ?:
statement which was itself converted to a SELECT_CC node. This is because the
ARM back-end doesn't have custom lowering for SELECT nodes, so it used the
default "Expand".

I added a fairly simple "LowerSELECT" to the ARM back-end. It takes care of this
testcase, but can obviously be expanded to include more cases.

Now we generate this, which looks optimal to me:

_t1:
movw r1, #1123
movs r2, #0
cmp r0, r1
adr r0, #LCPI0_0
it eq
moveq r2, #4
ldr r0, [r0, r2]
bx lr
.align 2
LCPI0_0:
.long 1075344593 @ float 2.382130e+00
.long 1067316150 @ float 1.234000e+00



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110799 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
de2b151dbf125af49717807b9cfc1f6f7a5b9ea6 11-Aug-2010 Bill Wendling <isanbard@gmail.com> Consider this code snippet:

float t1(int argc) {
return (argc == 1123) ? 1.234f : 2.38213f;
}

We would generate truly awful code on ARM (those with a weak stomach should look
away):

_t1:
movw r1, #1123
movs r2, #1
movs r3, #0
cmp r0, r1
mov.w r0, #0
it eq
moveq r0, r2
movs r1, #4
cmp r0, #0
it ne
movne r3, r1
adr r0, #LCPI1_0
ldr r0, [r0, r3]
bx lr

The problem was that legalization was creating a cascade of SELECT_CC nodes, for
for the comparison of "argc == 1123" which was fed into a SELECT node for the ?:
statement which was itself converted to a SELECT_CC node. This is because the
ARM back-end doesn't have custom lowering for SELECT nodes, so it used the
default "Expand".

I added a fairly simple "LowerSELECT" to the ARM back-end. It takes care of this
testcase, but can obviously be expanded to include more cases.

Now we generate this, which looks optimal to me:

_t1:
movw r1, #1123
movs r2, #0
cmp r0, r1
adr r0, #LCPI0_0
it eq
moveq r2, #4
ldr r0, [r0, r2]
bx lr
.align 2
LCPI0_0:
.long 1075344593 @ float 2.382130e+00
.long 1067316150 @ float 1.234000e+00



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110799 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
8c4ded47fbbde07e851fe428b8f2dbb7802c834f 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Report error if codegen tries to instantiate a ARM target when the cpu does support it. e.g. cortex-m* processors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110798 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
7b4d31176efe6894bcfaa05257dd5783acda5ddc 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Report error if codegen tries to instantiate a ARM target when the cpu does support it. e.g. cortex-m* processors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110798 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
7c896f25f5e2da16dd955f6eaf0c4fdbdc710ce8 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> ArchV7M implies HW division instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110797 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
8d62e713ea8c1597cc81da029a79925cbb125f4c 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> ArchV7M implies HW division instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110797 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
aeeb5e9a9c7e090b61096a2c33eaf2a5611fbb6d 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> ArchV6T2, V7A, and V7M implies Thumb2; Archv7A implies NEON.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110796 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
cb5ce6e62bcc15add9f0d1a79392c0cbb00ba861 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> ArchV6T2, V7A, and V7M implies Thumb2; Archv7A implies NEON.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110796 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
c39216fea2b853d1a539d45703486e9dae8f1e4a 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add ARM Archv6M and let it implies FeatureDB (having dmb, etc.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110795 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
d6b463225674c10511b00f8f631a89b6da5afc54 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add ARM Archv6M and let it implies FeatureDB (having dmb, etc.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110795 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
092c0eaf089faf01fc68406e28b6ac18dc2475aa 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Add basic support for handling predication by parsing it out of the mnemonic into a separate operand form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110794 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
345a9a6269318c96f333c0492b23733e29d952df 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Add basic support for handling predication by parsing it out of the mnemonic into a separate operand form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110794 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0e55d907262e8d6e4c8ba7b2412f1fd0294ec386 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Split mnemonic on '.' characters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110793 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5747b13af801d5af7cd5827c07c6a59e981bdb1a 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Split mnemonic on '.' characters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110793 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
43ba789b65eb806be0e03c0bb5b44062a374694c 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Fill in ARMOperand::dump a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110792 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
fa315de8f44ddb318a7c6ff913e80d71d7c68859 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Fill in ARMOperand::dump a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110792 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
20f4ff12b48aec8ecb2a25ffbf14a24dc35ef63a 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MCAsmParser: Add dump() hook to MCParsedAsmOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110790 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b3cb6967949493a2e1b10d015ac08b746736764e 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MCAsmParser: Add dump() hook to MCParsedAsmOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110790 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5239aab3b92aa9fc8eb3b596287a73e8898d4992 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Add an ARMOperand class for condition codes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110788 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
8462b30548fb5969250858036638c73c16b65b43 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Add an ARMOperand class for condition codes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110788 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
smParser/ARMAsmParser.cpp
65ecbb09616d844f87d6976fca8494dcdf7b1b27 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
4efe9cdd80635a480bcd5db4b4ed25e2dc0bee51 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add Cortex-M0 support. It's a ARMv6m device (no ARM mode) with some 32-bit
instructions: dmb, dsb, isb, msr, and mrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110786 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
c7569ed4e43a25aa52cf3b5580f1ee00d7d5db96 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add Cortex-M0 support. It's a ARMv6m device (no ARM mode) with some 32-bit
instructions: dmb, dsb, isb, msr, and mrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110786 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
1d2eb4554167be32d72cc959a11b7b60b2edf153 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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
isassembler/ARMDisassemblerCore.cpp
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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
isassembler/ARMDisassemblerCore.cpp
561f6e2a38588d62c8769b752f1a7951066f339f 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Switch to using the generated match functions instead of stub implementations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110783 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
3483acabf012b847b13b969ebd9ce5c4d16d9eb7 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Switch to using the generated match functions instead of stub implementations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110783 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1ec885e7738b487683dc1d370763c2d341f7510b 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Enable generation of the ARM asm matcher, not that it can do much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110782 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
a7ac688d55210487052dcd809ed2643d6016315c 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> MC/ARM: Enable generation of the ARM asm matcher, not that it can do much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110782 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
akefile
feea73bb726c75c27696ce788c1086fe78030fb9 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> ARM: Mark some disassembler only instructions as not available for matching --
for some reason they have a very odd MCInst form where the operands overlap, but
I haven't dug in to find out why yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110781 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
3bcd9f7902aa1c61b868fd57da5c18f201280ca4 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> ARM: Mark some disassembler only instructions as not available for matching --
for some reason they have a very odd MCInst form where the operands overlap, but
I haven't dug in to find out why yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110781 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
6f1df8609dcd102e316e2ac07daf2c7f3d84412b 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
RMInstrThumb2.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
RMInstrThumb2.td
f56a8513b923b01717f7079914cffb1f380bd117 11-Aug-2010 Bill Wendling <isanbard@gmail.com> Handle ARM compares as well as converting for ARM adds, subs, and thumb2's adds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110762 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
38ae997e63e3e1bb2c8679e01ea74cf8fd0be893 11-Aug-2010 Bill Wendling <isanbard@gmail.com> Handle ARM compares as well as converting for ARM adds, subs, and thumb2's adds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110762 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
cabfc706966bc0db095b0e2f7a30c774fb0e0dbc 11-Aug-2010 Bill Wendling <isanbard@gmail.com> Mark ARM compare instructions as isCompare.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110761 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0cce3dd3267e8416a34ef59ac72351dc9e1e30eb 11-Aug-2010 Bill Wendling <isanbard@gmail.com> Mark ARM compare instructions as isCompare.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110761 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
118b4dea46da0da74c3ef4a1c6e7581b404d59bc 11-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add a separate ARM instruction format for Saturate instructions.
(I discovered 2 more copies of the ARM instruction format list, bringing the
total to 4!! Two of them were already out of sync. I haven't yet gotten into
the disassembler enough to know the best way to fix this, but something needs
to be done.) Add support for encoding these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110754 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
9a1c189d9e7472f336f3c6d61be76bc46b25749e 11-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add a separate ARM instruction format for Saturate instructions.
(I discovered 2 more copies of the ARM instruction format list, bringing the
total to 4!! Two of them were already out of sync. I haven't yet gotten into
the disassembler enough to know the best way to fix this, but something needs
to be done.) Add support for encoding these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110754 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
2957defe6ebad79f5bc3b503daf96a7b0403e6bc 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
RMInstrThumb2.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
RMInstrThumb2.td
3e5165a7cc01d28b680a5f409eda72788cb451d3 10-Aug-2010 Shih-wei Liao <sliao@google.com> Make resolveRelocDestAddr handle the right relocation set. Otherwise, assertion failures "Can't handle this machine constant pool entry yet!" may occur.

Change-Id: I3235610163e6ce762f0493a1eaf5036805346c09
RMJITInfo.cpp
6d7069e367f247469f3292d1262a1bbf5e97ca81 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Turn optimize compares back on with fix. We needed to test that a machine op was
a register before checking if it was defined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110733 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
75486dbf4e9611f2070bf13b874f78a5587ed7ff 10-Aug-2010 Bill Wendling <isanbard@gmail.com> Turn optimize compares back on with fix. We needed to test that a machine op was
a register before checking if it was defined.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110733 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a55247d0ed62d64a776b7bacb2195ad87b3713d1 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
RMISelLowering.cpp
RMInstrThumb.td
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrThumb.td
RMInstrThumb2.td
5e4330c1f16540fb1ddd1252ed18cd8ab0e5e0c5 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Re-apply r110655 with fixes. Epilogue must restore sp from fp if the function stack frame has a var-sized object.

Also added a test case to check for the added benefit of this patch: it's optimizing away the unnecessary restore of sp from fp for some non-leaf functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110707 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.td
humb1RegisterInfo.cpp
ac096808a3accc516ae7c193c9a2c1392bf3301a 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Re-apply r110655 with fixes. Epilogue must restore sp from fp if the function stack frame has a var-sized object.

Also added a test case to check for the added benefit of this patch: it's optimizing away the unnecessary restore of sp from fp for some non-leaf functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110707 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.td
humb1RegisterInfo.cpp
2fe97c4cbba4d55547fafcb0e8087dac4aa02a1b 10-Aug-2010 Daniel Dunbar <daniel@zuster.org> Revert r110655, "Fix ARM hasFP() semantics. It should return true whenever FP
register is", it breaks a couple test-suite tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110701 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.td
humb1RegisterInfo.cpp
4bd828f78139b9bab561102c5b9c40133ad375ca 10-Aug-2010 Daniel Dunbar <daniel@zuster.org> Revert r110655, "Fix ARM hasFP() semantics. It should return true whenever FP
register is", it breaks a couple test-suite tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110701 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.td
humb1RegisterInfo.cpp
ab507e020eeaaf1cf18125281dfaf5a743bc4438 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Fix ARM hasFP() semantics. It should return true whenever FP register is
reserved, not available for general allocation. This eliminates all the
extra checks for Darwin.

This change also fixes the use of FP to access frame indices in leaf
functions and cleaned up some confusing code in epilogue emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110655 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.td
humb1RegisterInfo.cpp
c9aed19747608b7688a64f2f382a008889f8e57d 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Fix ARM hasFP() semantics. It should return true whenever FP register is
reserved, not available for general allocation. This eliminates all the
extra checks for Darwin.

This change also fixes the use of FP to access frame indices in leaf
functions and cleaned up some confusing code in epilogue emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110655 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.td
humb1RegisterInfo.cpp
97bca3642164e5e7b735914fb5bfeb5a163c0885 10-Aug-2010 Shih-wei Liao <sliao@google.com> Make emitConstPoolAddress use reloc_arm_so_imm...

Change-Id: I4856d1e8b958156624b4b72aec8466342ce05f5d
RMCodeEmitter.cpp
c4cb277fdfdbbf959c2500f0b7a0d1235e559b91 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> ARMBaseRegisterInfo::hasFP() has been broken for a while now. :-(
This will always be false before PEI:
(DisableFramePointerElim(MF) && MFI->adjustsStack())
Which means it's going to make r11 available as a general purpose register even
if -disable-fp-elim is specified. It's working on Darwin only because r7 is
always reserved. But it's obviously broken for other targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110614 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b000d683c822bab7bed608937048b24b4b6db551 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> ARMBaseRegisterInfo::hasFP() has been broken for a while now. :-(
This will always be false before PEI:
(DisableFramePointerElim(MF) && MFI->adjustsStack())
Which means it's going to make r11 available as a general purpose register even
if -disable-fp-elim is specified. It's working on Darwin only because r7 is
always reserved. But it's obviously broken for other targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110614 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
4527913ba9c81601d3d3420a5f444dc99c84e1ea 09-Aug-2010 Evan Cheng <evan.cheng@apple.com> Explicitly initialize SlowFPBrcc and Pref32BitThumb to false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110587 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
9de1ac267e197d40cec7a14041f2bf69498536c9 09-Aug-2010 Evan Cheng <evan.cheng@apple.com> Explicitly initialize SlowFPBrcc and Pref32BitThumb to false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110587 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
8bab3a6bad22c95fd8f4ef3dc6ff4400eef03e61 09-Aug-2010 Evan Cheng <evan.cheng@apple.com> Change -prefer-32bit-thumb to attribute -mattr=+32bit instead to disable more 32-bit to 16-bit optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110584 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMConstantIslandPass.cpp
RMSubtarget.h
RMTargetMachine.cpp
e44be6381609d31b2d8879dbd5107e01404fa475 09-Aug-2010 Evan Cheng <evan.cheng@apple.com> Change -prefer-32bit-thumb to attribute -mattr=+32bit instead to disable more 32-bit to 16-bit optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110584 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMConstantIslandPass.cpp
RMSubtarget.h
RMTargetMachine.cpp
dc9312bb08e590a4dbc04c98c418653daa7e6ebd 09-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add an option to disable 32 -> 16-bit Thumb2 size reduction pass for experimentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110579 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
e8846feaa1713fa6ba32b4d1e3901284daf7927f 09-Aug-2010 Evan Cheng <evan.cheng@apple.com> Add an option to disable 32 -> 16-bit Thumb2 size reduction pass for experimentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110579 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
7f80b0a9af7a6618516fb29324c83b26189a7372 09-Aug-2010 Shih-wei Liao <sliao@google.com> Handle load effective address (pc relative).

Change-Id: I060d0f6b7983aacacf03c40ee7b0a8a0bcee053c
RMCodeEmitter.cpp
RMJITInfo.cpp
RMRelocations.h
b38c700c87bd03e5271a8e2e86b7fb5b3060b55e 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrThumb2.td
7569322765651f19eea0609fb082e6b267d5d2b5 06-Aug-2010 Owen Anderson <resistor@mac.com> Reapply r110396, with fixes to appease the Linux buildbot gods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMGlobalMerge.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
90c579de5a383cee278acc3f7e7b9d0a656e6a35 06-Aug-2010 Owen Anderson <resistor@mac.com> Reapply r110396, with fixes to appease the Linux buildbot gods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMGlobalMerge.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
9d40857d4b77e1d6af7a777d5f0f648769e0bfec 06-Aug-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix eabi calling convention when a 64 bit value shadows r3.

Without this what was happening was:

* R3 is not marked as "used"
* ARM backend thinks it has to save it to the stack because of vaarg
* Offset computation correctly ignores it
* Offsets are wrong

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110446 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
55e958746901ef8c04f370e746a7538137d0bcf8 06-Aug-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix eabi calling convention when a 64 bit value shadows r3.

Without this what was happening was:

* R3 is not marked as "used"
* ARM backend thinks it has to save it to the stack because of vaarg
* Offset computation correctly ignores it
* Offsets are wrong

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110446 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
49fbac55a4aceae06fdfad7d5e24c513363c7cf8 06-Aug-2010 Bill Wendling <isanbard@gmail.com> Add the Optimize Compares pass (disabled by default).

This pass tries to remove comparison instructions when possible. For instance,
if you have this code:

sub r1, 1
cmp r1, 0
bz L1

and "sub" either sets the same flag as the "cmp" instruction or could be
converted to set the same flag, then we can eliminate the "cmp" instruction all
together. This is a important for ARM where the ALU instructions could set the
CPSR flag, but need a special suffix ('s') to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110423 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
e4ddbdfd3cf031034020671d03626f0373fbd5ca 06-Aug-2010 Bill Wendling <isanbard@gmail.com> Add the Optimize Compares pass (disabled by default).

This pass tries to remove comparison instructions when possible. For instance,
if you have this code:

sub r1, 1
cmp r1, 0
bz L1

and "sub" either sets the same flag as the "cmp" instruction or could be
converted to set the same flag, then we can eliminate the "cmp" instruction all
together. This is a important for ARM where the ALU instructions could set the
CPSR flag, but need a special suffix ('s') to do so.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110423 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
619acdc63ab0a47d125dca0591285c8ac4c9ed20 06-Aug-2010 Owen Anderson <resistor@mac.com> Revert r110396 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMGlobalMerge.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
1f74590e9d1b9cf0f1f81a156efea73f76546e05 06-Aug-2010 Owen Anderson <resistor@mac.com> Revert r110396 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMGlobalMerge.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
0e63653ab0d25d579ad99948db606d8723d271dd 06-Aug-2010 Owen Anderson <resistor@mac.com> Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMGlobalMerge.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
9ccaf53ada99c63737547c0235baeb8454b04e80 06-Aug-2010 Owen Anderson <resistor@mac.com> Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMGlobalMerge.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
270aad1e410fb4ee87bdcae4805ac25ee193676a 05-Aug-2010 Jim Grosbach <grosbach@apple.com> For local variables in functions with a frame pointer, use FP as a base
register for local access when it's closer to the stack slot being refererenced
than the stack pointer. Make sure to take into account any argument frame
SP adjustments that are in affect at the time.

rdar://8256090


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110366 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
e3ede5e2e4de6d028956c0b75c6bfa17ec50cc09 05-Aug-2010 Jim Grosbach <grosbach@apple.com> For local variables in functions with a frame pointer, use FP as a base
register for local access when it's closer to the stack slot being refererenced
than the stack pointer. Make sure to take into account any argument frame
SP adjustments that are in affect at the time.

rdar://8256090


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110366 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
25d5ad459ca3e783b439d3f5b77fd3fb64aeed70 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110363 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
751aaf8ac586860df8f22c3707905d1a8005f1ba 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110363 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
82cd29430e7d0f0186e6736f13251cf194fe0d52 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add an ARM RSCrr instruction for disassembly only.
Partial fix for PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110361 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a1d410d51265516584bf62c4e48874488dd2cba4 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add an ARM RSCrr instruction for disassembly only.
Partial fix for PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110361 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dc0b5bf3da25c359250c6bd03d084a7a71ec8409 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add an ARM RSBrr instruction for disassembly only.
Partial fix for PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110358 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cff71788446f17fa691a2768d8c11f46ae3206a2 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add an ARM RSBrr instruction for disassembly only.
Partial fix for PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110358 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
987e0672357f9646191b2150f1088a622ab56d78 05-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Silence a GCC warning about && and || without explicit parentheses. This
preserves the existing behavior, as it seems a concious choice to allow RS to
be null and BigStack marked true.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110307 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a7da3ac14ab1ca6da52547baf572d29c066559cc 05-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Silence a GCC warning about && and || without explicit parentheses. This
preserves the existing behavior, as it seems a concious choice to allow RS to
be null and BigStack marked true.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110307 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6d79da8d33e0eb1f2c7b4bce7f85bdde82d29705 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> ARM "rrx" shift operands do not have an immediate. PR7790.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110292 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
1d9125a6ff192f1346d2b08bbf6ecc9c9e44103d 05-Aug-2010 Bob Wilson <bob.wilson@apple.com> ARM "rrx" shift operands do not have an immediate. PR7790.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110292 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
62393bcbf164da6e87fcb3446f792f0028e43222 05-Aug-2010 Jim Grosbach <grosbach@apple.com> and back in. false alarm on the tests from another unrelated local change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110269 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
abf7bdffd67689781a5104b13fa806b92f3e96e1 05-Aug-2010 Jim Grosbach <grosbach@apple.com> and back in. false alarm on the tests from another unrelated local change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110269 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c7d396c8a787c1270820ec8d86dd799d09410595 05-Aug-2010 Devang Patel <dpatel@apple.com> Implement target specific getDebugValueLocation().



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110267 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
59135f49e1699daec9a43fc2d15715d55b910f54 05-Aug-2010 Devang Patel <dpatel@apple.com> Implement target specific getDebugValueLocation().



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110267 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c0e52a00d7784d4082a5f9ad524498de18e8d95b 05-Aug-2010 Jim Grosbach <grosbach@apple.com> oops. revert for a moment to clean up tests first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110259 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
87c0175cce653ee1d69d1efce77e7531c3066dac 05-Aug-2010 Jim Grosbach <grosbach@apple.com> oops. revert for a moment to clean up tests first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110259 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c674e7016a1993e8d3bf3ea9715b509ccb34c07e 05-Aug-2010 Jim Grosbach <grosbach@apple.com> Reserve a stack slot if the function adjusts the stack but doesn't
simplify the call frame pseudo instructions. In that situation, the
calculations for estimating the stack size will be way off, leading to
not having an emergency spill slot when we need one. It should be possible
to be more precise about tracking the adjustment values, but not really
necessary for correctness. Upcoming cleanups for PEI in general will
render that moot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110258 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
936ed5424cc55a01cb6afdf687a82b134356ddc8 05-Aug-2010 Jim Grosbach <grosbach@apple.com> Reserve a stack slot if the function adjusts the stack but doesn't
simplify the call frame pseudo instructions. In that situation, the
calculations for estimating the stack size will be way off, leading to
not having an emergency spill slot when we need one. It should be possible
to be more precise about tracking the adjustment values, but not really
necessary for correctness. Upcoming cleanups for PEI in general will
render that moot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110258 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
44339ce617e33a1f273d77d22eb5716faa75544b 04-Aug-2010 Dale Johannesen <dalej@apple.com> Remove switch for disabling ARM tail calls. They
seem to be working correctly. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110226 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a54db0c48597d68e54528d0ae129f1f1ea4c0b50 04-Aug-2010 Dale Johannesen <dalej@apple.com> Remove switch for disabling ARM tail calls. They
seem to be working correctly. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110226 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c91d5cdfe124447b07c6db932a4f95ba857b8daa 04-Aug-2010 Bob Wilson <bob.wilson@apple.com> Combine NEON VABD (absolute difference) intrinsics with ADDs to make VABA
(absolute difference with accumulate) intrinsics. Radar 8228576.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110170 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
67b453b0d1ed7ab42a9408a6eb00131e160eb421 04-Aug-2010 Bob Wilson <bob.wilson@apple.com> Combine NEON VABD (absolute difference) intrinsics with ADDs to make VABA
(absolute difference with accumulate) intrinsics. Radar 8228576.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110170 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
37f991ab49d0df3356ff446a763c21e66477b1c0 03-Aug-2010 Nate Begeman <natebegeman@mac.com> Add support for getting & setting the FPSCR application register on ARM when VFP is enabled.
Add support for using the FPSCR in conjunction with the vcvtr instruction, for controlling fp to int rounding.
Add support for the FLT_ROUNDS_ node now that the FPSCR is exposed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110152 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
d1fb583128c6682bb8a7c74eafa810a9270cc8df 03-Aug-2010 Nate Begeman <natebegeman@mac.com> Add support for getting & setting the FPSCR application register on ARM when VFP is enabled.
Add support for using the FPSCR in conjunction with the vcvtr instruction, for controlling fp to int rounding.
Add support for the FLT_ROUNDS_ node now that the FPSCR is exposed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110152 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
40776ed24fd56548cf7dca4dafd598377195057d 31-Jul-2010 Daniel Dunbar <daniel@zuster.org> Silence some -Asserts uninitialized variable warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
425f634917542d7f09c189e2eb130752c6a12d2c 31-Jul-2010 Daniel Dunbar <daniel@zuster.org> Silence some -Asserts uninitialized variable warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8b13b96d1b3d1577e4a52706170d8079ec52e88a 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
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
78da5814dee4bebdee493ef06d786492bdc9bbfa 31-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add support for disassembling VMVN (immediate) instructions. PR7747.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109946 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
98e1479575c87fcd16d2087c99b8e07e6722ac36 31-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add support for disassembling VMVN (immediate) instructions. PR7747.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109946 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
95b8251c55f7cf21b13d7755dacb7077b80490ee 31-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add -disable-shifter-op to disable isel of shifter ops. On Cortex-a9 the shifts cost extra instructions so it might be better to emit them separately to take advantage of dual-issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109934 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a2c519bd0bdb19d4bb1f2377fcf429653af95960 31-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add -disable-shifter-op to disable isel of shifter ops. On Cortex-a9 the shifts cost extra instructions so it might be better to emit them separately to take advantage of dual-issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109934 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d87ca843cc99e7c04a47a7923562574ed0c1d443 31-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add a check in the ARM disassembler for NEON instructions that would
reference registers past the end of the NEON register file, and report them
as invalid instead of asserting when trying to print them. PR7746.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109933 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
70a4e3c532ea1985278f85bf51296dcd0da65ead 31-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add a check in the ARM disassembler for NEON instructions that would
reference registers past the end of the NEON register file, and report them
as invalid instead of asserting when trying to print them. PR7746.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109933 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
227246a9b5449d73019e5cb0af5e3eacad32751a 30-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add the __TEXT,__StaticInit section to the list of sections emitted at the
beginning on ARM Darwin assembly files so that it won't be placed after
debug sections. Radar 8252813.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109879 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
63db594559dc8eac666204c7907bae664f5234da 30-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add the __TEXT,__StaticInit section to the list of sections emitted at the
beginning on ARM Darwin assembly files so that it won't be placed after
debug sections. Radar 8252813.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109879 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
50b97e1e4e26f88e328947cad91379acf10407d4 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
RMBaseInstrInfo.cpp
RMInstrThumb2.td
RMRegisterInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
humb2InstrInfo.cpp
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
RMBaseInstrInfo.cpp
RMInstrThumb2.td
RMRegisterInfo.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
humb2InstrInfo.cpp
3f03afad2ef1c3d2a73aba32638bf903c8eaf1b5 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
3752043a5819f3118e790c3b96bfd5780aad43f6 29-Jul-2010 Bob Wilson <bob.wilson@apple.com> Refactor ARM-specific DAG combining in preparation for adding some more
transformations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109800 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3d5792a5aaa735c35e5cb66b615ada9f7b6fa052 29-Jul-2010 Bob Wilson <bob.wilson@apple.com> Refactor ARM-specific DAG combining in preparation for adding some more
transformations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109800 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b2fb2538ce959973624f134f1821763bb1170d32 29-Jul-2010 Dale Johannesen <dalej@apple.com> Implement vector constants which are splat of
integers with mov + vdup. 8003375. This is
currently disabled by default because LICM will
not hoist a VDUP, so it pessimizes the code if
the construct occurs inside a loop (8248029).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109799 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f630c712b17cae45e8cf9bc670c8b1695c37c3c6 29-Jul-2010 Dale Johannesen <dalej@apple.com> Implement vector constants which are splat of
integers with mov + vdup. 8003375. This is
currently disabled by default because LICM will
not hoist a VDUP, so it pessimizes the code if
the construct occurs inside a loop (8248029).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109799 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fba1dca1bcddc6c0bf2b1764a40b982a867e0600 29-Jul-2010 Bob Wilson <bob.wilson@apple.com> Don't assert on an unrecognized BrMiscFrm instruction.
PR7745.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109788 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
fb13b95162f645260cf6a5511318abd55f124f5e 29-Jul-2010 Bob Wilson <bob.wilson@apple.com> Don't assert on an unrecognized BrMiscFrm instruction.
PR7745.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109788 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
9c98cd8fa49d3a6ada76f963e2ae31700bf28429 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
41a304000bf27999542b6003de98f49aa44f6e83 29-Jul-2010 Jim Grosbach <grosbach@apple.com> ARM mode version of r109693. 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@109696 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
542f642684db2b5f5124f8276793324a62e45dd6 29-Jul-2010 Jim Grosbach <grosbach@apple.com> ARM mode version of r109693. 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@109696 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b53035ab15a8be32908d53d1ccf1543567077ad3 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
RMInstrThumb2.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
RMInstrThumb2.td
9b0b3a205a9b3aa06210666d75b6684bdc4d830d 29-Jul-2010 Jim Grosbach <grosbach@apple.com> Remove dead prototype

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
f0d7e366914068991ded69b72a88958851b11bbf 29-Jul-2010 Jim Grosbach <grosbach@apple.com> Remove dead prototype

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
67a3862c3f6880084e4fb6f196734e560d49e335 27-Jul-2010 Eli Friedman <eli.friedman@gmail.com> And a bit more non-ASCII stuff.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109458 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
a10213e9341963e47008a697d9fb2f901e17f4dc 27-Jul-2010 Eli Friedman <eli.friedman@gmail.com> And a bit more non-ASCII stuff.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109458 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
98f2e3df1bb05b6983e69457a67374827dac03bf 27-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Drop some non-ascii stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109456 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
4e084e93a73ea1f63d919700ed0b2315357941c4 27-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Drop some non-ascii stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109456 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
03cf9787359fba41d31af9a1e5dacdf1f68a194f 26-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109448 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
25a6ab0144f5e206729cb38da654c256d1672aac 26-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109448 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
db5b01e33c23489e894691ddeb23880c9e112fa3 26-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Currently EH lowering code expects typeinfo to be global only.
This assumption is not satisfied due to global mergeing.
Workaround the issue by temporary disablinge mergeing of const globals.
Also, ignore LLVM "special" globals. This fixes PR7716

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109423 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
b5a0ef99f8e2bd48f2fb2a3221d296d48f1d5940 26-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Currently EH lowering code expects typeinfo to be global only.
This assumption is not satisfied due to global mergeing.
Workaround the issue by temporary disablinge mergeing of const globals.
Also, ignore LLVM "special" globals. This fixes PR7716

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109423 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
a4fa8cba39113b38d7d467dd0fc269c5fb3dc419 26-Jul-2010 Evan Cheng <evan.cheng@apple.com> ARM fastisel isn't ready.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109421 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
0944795b8c84612303e9de00bc7e9ea362441227 26-Jul-2010 Evan Cheng <evan.cheng@apple.com> ARM fastisel isn't ready.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109421 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
1629958afd9b094b67ba29b9b2549c2a806382d4 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Remove extraneous semicolon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109373 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
037b5e41285c325d8ce706db7d653087df80b8ca 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Remove extraneous semicolon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109373 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
f6cd23ed59112a4d2c10c1b8a14861cdc9052cb7 25-Jul-2010 Douglas Gregor <doug.gregor@gmail.com> Unbreak CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109372 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
1984d98376c1cb8a55f062f0e33308beb222b23a 25-Jul-2010 Douglas Gregor <dgregor@apple.com> Unbreak CMake build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109372 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
6cd461f358b227a0dce4d8ef6d872aa3a192f367 24-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Hook in GlobalMerge pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109359 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMGlobalMerge.cpp
RMISelLowering.cpp
RMISelLowering.h
RMTargetMachine.cpp
RMTargetMachine.h
cec36f4c1118dc8388910d4753fe7cbf88d2d793 24-Jul-2010 Anton Korobeynikov <asl@math.spbu.ru> Hook in GlobalMerge pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109359 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMGlobalMerge.cpp
RMISelLowering.cpp
RMISelLowering.h
RMTargetMachine.cpp
RMTargetMachine.h
884326e35446070e70dc3e685a174e6b382ef2ac 24-Jul-2010 Jim Grosbach <grosbach@apple.com> Use the appropriate register class for an i32 when adding ARM::LR to the
function live in set. This will give us tGPR for Thumb1 and GPR otherwise,
so the copy will be spillable. rdar://8224931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109293 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c2723a57f35dd69bd261faaa71ee7aa05f40a87d 24-Jul-2010 Jim Grosbach <grosbach@apple.com> Use the appropriate register class for an i32 when adding ARM::LR to the
function live in set. This will give us tGPR for Thumb1 and GPR otherwise,
so the copy will be spillable. rdar://8224931

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109293 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a5a4fe7353ad29c689a88a64efc07ce5ed653fad 24-Jul-2010 Dale Johannesen <dalej@apple.com> Revert 109076. It is wrong and was causing regressions. Add some
comments explaining why it was wrong. 8225024.

Fix the real problem in 8213383: the code that splits very large
blocks when no other place to put constants can be found was not
considering the case that the block contained a Thumb tablejump.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109282 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
8086d5800dbe8cc392ce217adccfaca915858aed 24-Jul-2010 Dale Johannesen <dalej@apple.com> Revert 109076. It is wrong and was causing regressions. Add some
comments explaining why it was wrong. 8225024.

Fix the real problem in 8213383: the code that splits very large
blocks when no other place to put constants can be found was not
considering the case that the block contained a Thumb tablejump.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109282 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
922a4d36f7218b00baed5994960e79f7e977ec56 24-Jul-2010 Evan Cheng <evan.cheng@apple.com> - Allow target to specify when is register pressure "too high". In most cases,
it's too late to start backing off aggressive latency scheduling when most
of the registers are in use so the threshold should be a bit tighter.
- Correctly handle live out's and extract_subreg etc.
- Enable register pressure aware scheduling by default for hybrid scheduler.
For ARM, this is almost always a win on # of instructions. It's runtime
neutral for most of the tests. But for some kernels with high register
pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by
54 and sped up by 20%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
3144687df78731ac4ddbc716a24b951678a73f57 24-Jul-2010 Evan Cheng <evan.cheng@apple.com> - Allow target to specify when is register pressure "too high". In most cases,
it's too late to start backing off aggressive latency scheduling when most
of the registers are in use so the threshold should be a bit tighter.
- Correctly handle live out's and extract_subreg etc.
- Enable register pressure aware scheduling by default for hybrid scheduler.
For ARM, this is almost always a win on # of instructions. It's runtime
neutral for most of the tests. But for some kernels with high register
pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by
54 and sped up by 20%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
657d57f6e9b901063b609757eb027514f3aa1fc5 22-Jul-2010 Chris Lattner <sabre@nondot.org> eliminate the TargetInstrInfo::GetInstSizeInBytes hook.
ARM/PPC/MSP430-specific code (which are the only targets that
implement the hook) can directly reference their target-specific
instrinfo classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109171 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMConstantIslandPass.cpp
2062875a7d8f7dd94a20d9e3a298e9e216efb4b5 22-Jul-2010 Chris Lattner <sabre@nondot.org> eliminate the TargetInstrInfo::GetInstSizeInBytes hook.
ARM/PPC/MSP430-specific code (which are the only targets that
implement the hook) can directly reference their target-specific
instrinfo classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109171 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMConstantIslandPass.cpp
bd0548064a7cd12ab260d0f993c16aa6197efa7c 22-Jul-2010 Chris Lattner <sabre@nondot.org> switch a private implementation of GetFunctionSizeInBytes.
This is probably not the best way to implement "Force LR to
be spilled if the Thumb function size is > 2048." do this,
it should use the branch shortening infrastructure, but I'm
just preserving functionality here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109165 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
1c55386dae428d076bd7d054ed8bbb59c4ba954e 22-Jul-2010 Chris Lattner <sabre@nondot.org> switch a private implementation of GetFunctionSizeInBytes.
This is probably not the best way to implement "Force LR to
be spilled if the Thumb function size is > 2048." do this,
it should use the branch shortening infrastructure, but I'm
just preserving functionality here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109165 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ab4095eeebd2d0ed2f1c3baccaae7674700d9995 22-Jul-2010 Xerxes Ranby <xerxes@zafena.se> ARMv4 JIT forgets to set the lr register when making a indirect function call. Fixes PR7608


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109125 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
99ccffe87e7b2bdc8e5a477f8c1e9087758daf56 22-Jul-2010 Xerxes Ranby <xerxes@zafena.se> ARMv4 JIT forgets to set the lr register when making a indirect function call. Fixes PR7608


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109125 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
8d20b5ae0ae3c61a87f002cd11e98cb1f0fa16f2 22-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Mark an assert-only variable as used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109091 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
30d35b8720cb148eb4cc417b3710e0d66ce5ec95 22-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Mark an assert-only variable as used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109091 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7bf9a01870f9fd87898dbfc76ecfc5cd57a72afb 22-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Fix the generated file name for CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109090 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
986569ac9a7d90180cec515b5f101ced94ae794c 22-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Fix the generated file name for CMake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109090 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
38dfb28983f7e48fef4aa58a3c4faa83dbb6b856 22-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Attempt to fix linking issues with CMake. Please review other CMake users,
especially on other platforms. Is there a better way to fix this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109084 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
8a89a6ae9c3fb524cda60768e094ba481ac17be1 22-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Attempt to fix linking issues with CMake. Please review other CMake users,
especially on other platforms. Is there a better way to fix this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109084 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f2feafd516681c14d2249fd38e1528a7925ec136 22-Jul-2010 Owen Anderson <resistor@mac.com> Update CMake files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109081 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
214e46eac77bcea2b57d0d454a2dda1d97e979fb 22-Jul-2010 Owen Anderson <resistor@mac.com> Update CMake files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109081 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
d2346d858026392706e54d00ed32f1d375da3fe0 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> Fix constant island pass's handling of tBR_JTr. The offset of the instruction does not have to be 4-byte aligned. Rather, it's the offset + 2 that must be aligned since the instruction expands into:
mov pc, r1
.align 2
LJTI0_0_0:
.long LBB0_14

This fixes rdar://8213383. No test case since it's not possible to come up with a suitable small one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109076 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b1c857bb7b3d7bc187de4e97439eb212a8604bf0 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> Fix constant island pass's handling of tBR_JTr. The offset of the instruction does not have to be 4-byte aligned. Rather, it's the offset + 2 that must be aligned since the instruction expands into:
mov pc, r1
.align 2
LJTI0_0_0:
.long LBB0_14

This fixes rdar://8213383. No test case since it's not possible to come up with a suitable small one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109076 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
2408253b0680ef77feed50de7e6743881ccfef6e 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> More register pressure aware scheduling work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109064 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4a863e2c75145432fd660ee65e61b578c5e90ac9 22-Jul-2010 Evan Cheng <evan.cheng@apple.com> More register pressure aware scheduling work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109064 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
30ea00a73f82df33ce1a38628fbff1b56a778f4c 22-Jul-2010 Jim Grosbach <grosbach@apple.com> For ARM/Darwin, add a dwarf entry indicating whether a function is arm or thumb
rdar://8202967

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109057 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
917290043f87b8efa6ba540bec5963013c517912 22-Jul-2010 Jim Grosbach <grosbach@apple.com> For ARM/Darwin, add a dwarf entry indicating whether a function is arm or thumb
rdar://8202967

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109057 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a8fd2b42c0723bfa6a3bf4549a70b37dbc7f52ec 22-Jul-2010 Eric Christopher <echristo@apple.com> Baby steps towards ARM fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109047 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
MakeLists.txt
akefile
ab695889c67fb499bd902e8a969d0ff02ce66788 22-Jul-2010 Eric Christopher <echristo@apple.com> Baby steps towards ARM fast-isel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109047 91177308-0d34-0410-b5e6-96231b3b80d8
RMFastISel.cpp
RMISelLowering.cpp
RMISelLowering.h
MakeLists.txt
akefile
2653313bfbae107be3742909cf8c99165c64e511 21-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix calling convention on ARM if vfp2+ is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109009 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bc565014357a89c91a46a647714cb0d256186cc9 21-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix calling convention on ARM if vfp2+ is enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109009 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
83bd3e6df5274f42bbae9f5f611b373ac61c945c 21-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach bottom up pre-ra scheduler to track register pressure. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108991 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
4f6b4674be5473319ac5e70c76fd5cb964da2128 21-Jul-2010 Evan Cheng <evan.cheng@apple.com> Teach bottom up pre-ra scheduler to track register pressure. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108991 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
944625143da8d16c561de79a1f4af849e0b1d302 20-Jul-2010 Chris Lattner <sabre@nondot.org> prune #includes a little.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108929 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.h
RMExpandPseudoInsts.cpp
isassembler/ARMDisassemblerCore.h
4dbbe3433f7339ed277af55037ff6847f484e5ab 20-Jul-2010 Chris Lattner <sabre@nondot.org> prune #includes a little.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108929 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.h
RMExpandPseudoInsts.cpp
isassembler/ARMDisassemblerCore.h
eebaf5a5b0a4ab8c8e6cbc49c82aab1e5deea5af 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
RMInstrThumb2.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
RMInstrThumb2.td
8514cfa4210cbda710e87bb7a6e4354dc6abd416 20-Jul-2010 Jim Grosbach <grosbach@apple.com> Removed un-used code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108841 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
26ede6834e8a435bd7a6670cb34f64d3f8e2599d 20-Jul-2010 Jim Grosbach <grosbach@apple.com> Removed un-used code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108841 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c045005458f070655bc119d0a1f26bac7efc8b04 20-Jul-2010 Eric Christopher <echristo@apple.com> Constify some arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108812 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
72852a8cfb605056d87b644d2e36b1346051413d 20-Jul-2010 Eric Christopher <echristo@apple.com> Constify some arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108812 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
448a71eda23a82cc14d14566436525561a5d63b7 20-Jul-2010 Daniel Dunbar <daniel@zuster.org> Update CMake files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108787 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
7b81a0ef1789439024c3788cf136f9520f83dd96 20-Jul-2010 Daniel Dunbar <daniel@zuster.org> Update CMake files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108787 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
MakeLists.txt
aba25af8891408590193d9f2bce42e69e2240384 20-Jul-2010 Chris Lattner <sabre@nondot.org> sink the arm implementations of ASmPrinter and MCInstLower
out of the AsmPrinter directory into libarm. Now the
ARM InstPrinters depend jsut on the MC stuff, not on vmcore
or codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108783 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMCInstLower.cpp
RMMCInstLower.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
f447a5f1446d3f3ccd7f342a54f565ab02a087c8 20-Jul-2010 Chris Lattner <sabre@nondot.org> sink the arm implementations of ASmPrinter and MCInstLower
out of the AsmPrinter directory into libarm. Now the
ARM InstPrinters depend jsut on the MC stuff, not on vmcore
or codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108783 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMCInstLower.cpp
RMMCInstLower.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
fe8ff14a3de380455d0aca6de3893bc40b170cdc 20-Jul-2010 Evan Cheng <evan.cheng@apple.com> ARM has to provide its own TargetLowering::findRepresentativeClass because its scalar floating point registers alias its vector registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108761 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d70f57b254114841892425a40944268d38ae0bcd 20-Jul-2010 Evan Cheng <evan.cheng@apple.com> ARM has to provide its own TargetLowering::findRepresentativeClass because its scalar floating point registers alias its vector registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108761 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
3945a5d26b16d48e3a0016e66ca272ee8904b1c2 19-Jul-2010 Jim Grosbach <grosbach@apple.com> Since ARM emits inline jump tables as part of the ConstantIsland pass,
it should set the jump table encloding the EK_Inline. This prevents
a second, unused, copy of the table from being emitted after the function
body. PR6581.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108730 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e1102caf86c8e09387ac7ee83aae4e69d2d35fc4 19-Jul-2010 Jim Grosbach <grosbach@apple.com> Since ARM emits inline jump tables as part of the ConstantIsland pass,
it should set the jump table encloding the EK_Inline. This prevents
a second, unused, copy of the table from being emitted after the function
body. PR6581.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108730 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b878c2dbd526cac108882518efce4b845ecbac72 19-Jul-2010 Jim Grosbach <grosbach@apple.com> revert so I can get the right PR# in the log message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108727 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
350afb16ecab216d5ea887b93112b24ba87ececb 19-Jul-2010 Jim Grosbach <grosbach@apple.com> revert so I can get the right PR# in the log message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108727 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
bea96646c67c0c8b6f47c525f1d4d1f1acbfd548 19-Jul-2010 Jim Grosbach <grosbach@apple.com> Since ARM emits inline jump tables as part of the ConstantIsland pass,
it should set the jump table encloding the EK_Inline. This prevents
a second, unused, copy of the table from being emitted after the function
body. PR7499.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108722 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
0bb9895a78368a75a3bfe2cb54ac6953b990515a 19-Jul-2010 Jim Grosbach <grosbach@apple.com> Since ARM emits inline jump tables as part of the ConstantIsland pass,
it should set the jump table encloding the EK_Inline. This prevents
a second, unused, copy of the table from being emitted after the function
body. PR7499.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108722 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
a3692dad3ef77c2a5e846f2324927e3ee0afee78 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Target: Give the TargetAsmParser access to the TargetMachine.
- Unfortunate, but necessary for now to handle subtarget instruction matching. Eventually we should factor out the lower level target machine information so we don't need to do this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108664 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d73ada7d24832bc2a4c3965b8f00ffd951341acf 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> Target: Give the TargetAsmParser access to the TargetMachine.
- Unfortunate, but necessary for now to handle subtarget instruction matching. Eventually we should factor out the lower level target machine information so we don't need to do this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108664 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
533bae363191f5f441ed4d88d762e3d98506d3e0 17-Jul-2010 Jim Grosbach <grosbach@apple.com> Add combiner patterns to more effectively utilize the BFI (bitfield insert)
instruction for non-constant operands. This includes the case referenced
in the README.txt regarding a bitfield copy.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108608 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
EADME.txt
5423856e44a7e4b173af211b0fb0675c44945a58 17-Jul-2010 Jim Grosbach <grosbach@apple.com> Add combiner patterns to more effectively utilize the BFI (bitfield insert)
instruction for non-constant operands. This includes the case referenced
in the README.txt regarding a bitfield copy.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108608 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
EADME.txt
a4c200546479ac059d89c0cb25370a0b757b06ac 17-Jul-2010 Jim Grosbach <grosbach@apple.com> add BFI to getTargetNodeName()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108603 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dd7d28a17b19d03115592de74e8291e47afbcc72 17-Jul-2010 Jim Grosbach <grosbach@apple.com> add BFI to getTargetNodeName()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108603 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f0889c8c17ac0feedc40db91bf5233454cd2eb0a 17-Jul-2010 Jim Grosbach <grosbach@apple.com> Fix logic think-o

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108601 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
15a2f2eff80485e0f02a01300fde04d0b2f84a91 17-Jul-2010 Jim Grosbach <grosbach@apple.com> Fix logic think-o

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108601 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
af37a7c752ca00280d86bfb58ffd411fbef72865 17-Jul-2010 Eric Christopher <echristo@apple.com> Remove unnecessary check that was subsumed into canRealignStack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108588 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
697cba8ec2b3f5160175fd5b4a641dbd48606e17 17-Jul-2010 Eric Christopher <echristo@apple.com> Remove unnecessary check that was subsumed into canRealignStack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108588 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
0e640c32d682f44098af4d60b4b9577bdd8eef49 17-Jul-2010 Eric Christopher <echristo@apple.com> Make more explicit and add some currently disabled error messages for
stack realignment on ARM.

Also check for function attributes as we do on X86 as well as
make explicit that we're checking can as well as needs in this function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108582 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d4c36cec1db81b4ee48cd4ab462262615d78f22c 17-Jul-2010 Eric Christopher <echristo@apple.com> Make more explicit and add some currently disabled error messages for
stack realignment on ARM.

Also check for function attributes as we do on X86 as well as
make explicit that we're checking can as well as needs in this function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108582 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
7e792d59d7e5c12129b672b27dc80977e99a8eb1 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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
805f0c5b16c2b545eb39bec4e5d029a0b270e64e 17-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the isMoveInstr() hook.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108567 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
78e6e009223a38739797629ca2d217acf86dda93 17-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the isMoveInstr() hook.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108567 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
354b464f7174846b94dfe54ac6435570ec51fbb6 17-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a small local function for a single remaining late isMoveInstr call in
Thumb2ITBlockPass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108564 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
c66756ba16a3df8b6426aee4ffd9c308f38bea57 17-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use a small local function for a single remaining late isMoveInstr call in
Thumb2ITBlockPass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108564 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
a02effc0bdeef3db3c148485564cab5ab6a7294a 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission and
thus is a much more meaningful name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108563 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
7431beaba2a01c3fe299c861b2ec85cbf1dc81c4 17-Jul-2010 Bill Wendling <isanbard@gmail.com> Rename DBG_LABEL PROLOG_LABEL, because it's only used during prolog emission and
thus is a much more meaningful name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108563 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
ddc0a8b9568a49c9b26f8c35d5ed777bc91c116d 16-Jul-2010 Evan Cheng <evan.cheng@apple.com> Split -enable-finite-only-fp-math to two options:
-enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108465 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
60108e96bbc5432f4fe06ba313e64448e97a0e15 16-Jul-2010 Evan Cheng <evan.cheng@apple.com> Split -enable-finite-only-fp-math to two options:
-enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108465 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
a88b0db5e5a5dc6f79987157d3ae978ad4cb27bd 15-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Random note about bswap.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108396 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
4baa8ebc930407affeeba452ff75d20da73bf7f2 15-Jul-2010 Eli Friedman <eli.friedman@gmail.com> Random note about bswap.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108396 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
9676c5f0a3404d52eee60f18c336e7e971c85e7e 15-Jul-2010 Bob Wilson <bob.wilson@apple.com> Remove restriction on NEON alignment values. Some of the NEON ld/st
instructions use different values (e.g., 2-byte or 4-byte alignment).
Also fix ARMInstPrinter to print these alignments as bits instead of bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108386 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
273ff31e134d48c8247e981d30e214e82568ff86 15-Jul-2010 Bob Wilson <bob.wilson@apple.com> Remove restriction on NEON alignment values. Some of the NEON ld/st
instructions use different values (e.g., 2-byte or 4-byte alignment).
Also fix ARMInstPrinter to print these alignments as bits instead of bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108386 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
4cf6e73f51b33e252cdad17bc03f487f17418941 15-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Don't pass StringRef by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108366 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
38e59891ee4417a9be2f8146ce0ba3269e38ac21 15-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Don't pass StringRef by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108366 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
2719050a2879d62c2f46a002a60145a96180649d 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
2e623e3ffdd8ca0bac3dd1c598758bd5da1bb267 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
RMInstrThumb2.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
RMInstrThumb2.td
d0645cb23c0363e8ce5d7f90209a7b5f8ea02cc8 14-Jul-2010 Eli Friedman <eli.friedman@gmail.com> A couple potential optimizations inspired by comment 4 in PR6773.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108328 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
54cc0e12dadd710e1b27d69c47ba30457e621d51 14-Jul-2010 Eli Friedman <eli.friedman@gmail.com> A couple potential optimizations inspired by comment 4 in PR6773.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108328 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
d7144b2eb13eb08bb6529851ca84995c90de7c64 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add support for NEON VMVN immediate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108324 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
7e3f0d26908b82bc6a3699251e0d38821610bca7 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add support for NEON VMVN immediate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108324 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
7689cc824ce7b21aa0b60429c23ee80800cc9773 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> The bits in the cmode field of 32-bit VMOV immediate instructions all depend
of the value of the immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108323 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
046afdb50b4884470a93f1ff0c68a24dad110062 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> The bits in the cmode field of 32-bit VMOV immediate instructions all depend
of the value of the immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108323 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d4db5b1afb179ad3fe1b9f10fee79615feff8ebc 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add an ARM-specific DAG combining to avoid redundant VDUPLANE nodes.
Radar 7373643.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108303 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9e82bf12a03117bfce78217662d5cf8e74aef357 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add an ARM-specific DAG combining to avoid redundant VDUPLANE nodes.
Radar 7373643.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108303 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c97f96261679ee23a1ca8456915cba4b4ec00571 13-Jul-2010 Bob Wilson <bob.wilson@apple.com> Use a target-specific VMOVIMM DAG node instead of BUILD_VECTOR to represent
NEON VMOV-immediate instructions. This simplifies some things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108275 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
cba270d042862bca213b812656a2181b0de0578e 13-Jul-2010 Bob Wilson <bob.wilson@apple.com> Use a target-specific VMOVIMM DAG node instead of BUILD_VECTOR to represent
NEON VMOV-immediate instructions. This simplifies some things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108275 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
e06bb790215bc2d8e9661078aa8fa2391638f11b 13-Jul-2010 Evan Cheng <evan.cheng@apple.com> Extend the r107852 optimization which turns some fp compare to code sequence using only i32 operations. It now optimize some f64 compares when fp compare is exceptionally slow (e.g. cortex-a8). It also catches comparison against 0.0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108258 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
218977b53eb215e5534db2f727d109ab18817cc1 13-Jul-2010 Evan Cheng <evan.cheng@apple.com> Extend the r107852 optimization which turns some fp compare to code sequence using only i32 operations. It now optimize some f64 compares when fp compare is exceptionally slow (e.g. cortex-a8). It also catches comparison against 0.0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108258 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
f0a3d352dd3aeaf610458f778052342dbb11c0e6 13-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add an ARM "feature". Cortex-a8 fp comparison is very slow (> 20 cycles).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108256 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
7a415999625f9791a8a7eea2027e628e29de15c0 13-Jul-2010 Evan Cheng <evan.cheng@apple.com> Add an ARM "feature". Cortex-a8 fp comparison is very slow (> 20 cycles).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108256 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
766d996c6f80d6e05032fc4eaa73201825fde6f4 13-Jul-2010 Bob Wilson <bob.wilson@apple.com> Move NEON "modified immediate" encode/decode into ARMAddressingModes.h to
avoid replicated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108227 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
6dce00ced45b5bd1b7f34fe6f2d70c50fc090664 13-Jul-2010 Bob Wilson <bob.wilson@apple.com> Move NEON "modified immediate" encode/decode into ARMAddressingModes.h to
avoid replicated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108227 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
5ebdbf3ac210861f340a4153a42b047eeb850bd7 12-Jul-2010 Bob Wilson <bob.wilson@apple.com> Remove some code that doesn't appear to do anything. All the ARM call
instructions already have implicit defs of LR. The comment suggests that
this is intended to fix something like pr6111, but it doesn't really do
that either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108186 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c7a797b82bc44b0aace62033d7e1ac7058ef45c6 12-Jul-2010 Bob Wilson <bob.wilson@apple.com> Remove some code that doesn't appear to do anything. All the ARM call
instructions already have implicit defs of LR. The comment suggests that
this is intended to fix something like pr6111, but it doesn't really do
that either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108186 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c2d3eee936fe8da7e8e257cb45580149421190bb 12-Jul-2010 Duncan Sands <baldrick@free.fr> Convert some tab stops into spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108130 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
smPrinter/ARMAsmPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
3472766f9eb7d66f234c390ce1b3a8b76f0ee9ce 12-Jul-2010 Duncan Sands <baldrick@free.fr> Convert some tab stops into spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108130 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
smPrinter/ARMAsmPrinter.cpp
isassembler/ARMDisassemblerCore.cpp
f39a984209597675643a69bc056402f571f4705a 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> RISC architectures get their memory operand folding for free.

The only folding these load/store architectures can do is converting COPY into a
load or store, and the target independent part of foldMemoryOperand already
knows how to do that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108099 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
600f171486708734e2b9c9c617528cfc51c16850 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> RISC architectures get their memory operand folding for free.

The only folding these load/store architectures can do is converting COPY into a
load or store, and the target independent part of foldMemoryOperand already
knows how to do that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108099 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
1d416d406a947eb15d8f2a59497583763c78de1c 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Make getPhysicalRegisterRegClass non-virtual. Should be able to remove it soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108094 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
d6d7abaf4ebbabb850aa9c20e1617f897608fe62 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Make getPhysicalRegisterRegClass non-virtual. Should be able to remove it soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108094 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
7322ec9f1735595cdc32fb18ef1dd816a14961db 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace copyRegToReg with copyPhysReg for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108078 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
ac2736670034e8942939b9fccf8e4618a0bda908 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace copyRegToReg with copyPhysReg for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108078 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
deaae440ab24bb0531c2e23bde4f64300291e832 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix va_arg for doubles. With this patch VAARG nodes always contain the
correct alignment information, which simplifies ExpandRes_VAARG a bit.

The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:

* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108072 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cbeeae23c31d32b833c9c7c3e8984e4cbcf22f45 11-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix va_arg for doubles. With this patch VAARG nodes always contain the
correct alignment information, which simplifies ExpandRes_VAARG a bit.

The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:

* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108072 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bdf207628dff7c02ba5435744226605f906c886a 10-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Add parentheses yet again to satisfy GCC's warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108043 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
68eec39bca280f98bef1256a5e89531ac1a77d1a 10-Jul-2010 Chandler Carruth <chandlerc@gmail.com> Add parentheses yet again to satisfy GCC's warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108043 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b4737986ba62ecb5647e3bd01bb7a14fbc610f8e 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Automatically fold COPY instructions into stack load/store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108012 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1f32340d95ac480bfc74bcfd00fd5cffbe078652 09-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Automatically fold COPY instructions into stack load/store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108012 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
6b3f5c9a78dbe591c5b2514fe01536c5469c84dd 09-Jul-2010 Jim Grosbach <grosbach@apple.com> In the presence of variable sized objects, allocate an emergency spill slot.
rdar://8131327

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108008 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6c7d3a16b3321c527e35322e869c73d47dba719d 09-Jul-2010 Jim Grosbach <grosbach@apple.com> In the presence of variable sized objects, allocate an emergency spill slot.
rdar://8131327

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108008 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
bd0018eda94328833ea24fa39b9b9848685471ba 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> Print "dregpair" NEON operands with a space between them, for readability and
consistency with other instructions that have lists of register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a0148c360e9bb4badabf1a2397cfd70907618f87 09-Jul-2010 Bob Wilson <bob.wilson@apple.com> Print "dregpair" NEON operands with a space between them, for readability and
consistency with other instructions that have lists of register operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e839d46632093c38330966474f2ab017c036ea19 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> Check for FiniteOnlyFPMath as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107904 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5d115a0ff9634149ef021ec9335a47c52aaaafb0 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> Check for FiniteOnlyFPMath as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107904 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b41ee4c1c7124f3901219a487fa922b01e1514f6 08-Jul-2010 Bob Wilson <bob.wilson@apple.com> The NEONPreAllocPass should never have to assign fixed registers anymore.
This pass can go away entirely soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107892 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
1425c6a92747acd904dfbb9c537e444e15b1ebdf 08-Jul-2010 Bob Wilson <bob.wilson@apple.com> The NEONPreAllocPass should never have to assign fixed registers anymore.
This pass can go away entirely soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107892 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
8a7e4c4381057a31fe342e578eb1e7e25783dd9e 08-Jul-2010 Bob Wilson <bob.wilson@apple.com> For big-endian systems, VLD2/VST2 with 32-bit vector elements will swap the
words within the 64-bit D registers. Use VLD1/VST1 with 64-bit elements
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107890 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
8190173350f4e4d916d2307278955b133fba8a00 08-Jul-2010 Bob Wilson <bob.wilson@apple.com> For big-endian systems, VLD2/VST2 with 32-bit vector elements will swap the
words within the 64-bit D registers. Use VLD1/VST1 with 64-bit elements
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107890 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7110f4eafc823fbbeb782baf495f6b8b0613334a 08-Jul-2010 Bob Wilson <bob.wilson@apple.com> Clean up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107882 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
8af4c54af1ee55d5e22a76a9201dd351acf3cb5e 08-Jul-2010 Bob Wilson <bob.wilson@apple.com> Clean up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107882 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
4dc8a1eda314b03118daf8dbd1e2c237c8082eea 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert EXTRACT_SUBREG to COPY when emitting machine instrs.

EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead.

Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg().
The isMoveInstr hook will be removed later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107879 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
0bc25f40402f48ba42fc45403f635b20d90fabb3 08-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Convert EXTRACT_SUBREG to COPY when emitting machine instrs.

EXTRACT_SUBREG no longer appears as a machine instruction. Use COPY instead.

Add isCopy() checks in many places using isMoveInstr() and isExtractSubreg().
The isMoveInstr hook will be removed later.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107879 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
6f1a01b5591c98e0bfb427d53c471655ee028aa3 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> r107852 is only safe with -enable-unsafe-fp-math to account for +0.0 == -0.0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107856 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4ff7ab612c66fb7ecf547242d6906be6ec3fa604 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> r107852 is only safe with -enable-unsafe-fp-math to account for +0.0 == -0.0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107856 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ab54f36cf8fff98ea20a5f2575282741aed76c2c 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> Optimize some vfp comparisons to integer ones. This patch implements the simplest case when the following conditions are met:
1. The arguments are f32.
2. The arguments are loads and they have no uses other than the comparison.
3. The comparison code is EQ or NE.

e.g.
vldr.32 s0, [r1]
vldr.32 s1, [r0]
vcmpe.f32 s1, s0
vmrs apsr_nzcv, fpscr
beq LBB0_2
=>
ldr r1, [r1]
ldr r0, [r0]
cmp r0, r1
beq LBB0_2

More complicated cases will be implemented in subsequent patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107852 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
515fe3a58877c745a922252a4492e866a2f1e42e 08-Jul-2010 Evan Cheng <evan.cheng@apple.com> Optimize some vfp comparisons to integer ones. This patch implements the simplest case when the following conditions are met:
1. The arguments are f32.
2. The arguments are loads and they have no uses other than the comparison.
3. The comparison code is EQ or NE.

e.g.
vldr.32 s0, [r1]
vldr.32 s1, [r0]
vcmpe.f32 s1, s0
vmrs apsr_nzcv, fpscr
beq LBB0_2
=>
ldr r1, [r1]
ldr r0, [r0]
cmp r0, r1
beq LBB0_2

More complicated cases will be implemented in subsequent patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107852 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b7d735372bd03b1afbc23f182503757a6fda6a57 08-Jul-2010 Dale Johannesen <dalej@apple.com> Changes to ARM tail calls, mostly cosmetic.
Add explicit testcases for tail calls within the same module.
Duplicate some code to humor those who think .w doesn't apply on ARM.
Leave this disabled on Thumb1, and add some comments explaining why it's hard
and won't gain much.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107851 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMInstrInfo.td
7835f1fcdbb58093377c9e3476f45a2638565762 08-Jul-2010 Dale Johannesen <dalej@apple.com> Changes to ARM tail calls, mostly cosmetic.
Add explicit testcases for tail calls within the same module.
Duplicate some code to humor those who think .w doesn't apply on ARM.
Leave this disabled on Thumb1, and add some comments explaining why it's hard
and won't gain much.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107851 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMInstrInfo.td
f9340efbd7e65a62da55ab23b8d79deb8aa5a85c 08-Jul-2010 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107831 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
03e2d44722c1ebd3953007db0579147b46efba18 08-Jul-2010 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107831 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9f6fe14da01027a5d3c785cc8401f144f2a4b607 08-Jul-2010 Jim Grosbach <grosbach@apple.com> Handle cases where the post-RA scheduler may move instructions between the
address calculation instructions leading up to a jump table when we're trying
to convert them into a TB[H] instruction in Thumb2. This realistically
shouldn't happen much, if at all, for well formed inputs, but it's more correct
to handle it. rdar://7387682



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107830 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
c7937ae025194cb62ffcd592785c3ad97e7882ce 08-Jul-2010 Jim Grosbach <grosbach@apple.com> Handle cases where the post-RA scheduler may move instructions between the
address calculation instructions leading up to a jump table when we're trying
to convert them into a TB[H] instruction in Thumb2. This realistically
shouldn't happen much, if at all, for well formed inputs, but it's more correct
to handle it. rdar://7387682



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107830 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
41482e09ea07ec0120994dd43a6aa0f4ef66a391 07-Jul-2010 Jim Grosbach <grosbach@apple.com> grammar and trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107811 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
26b8ef53ff2ff1ffd72d140b5be264e32dee0195 07-Jul-2010 Jim Grosbach <grosbach@apple.com> grammar and trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107811 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f53e8cd8b1639a358a97deaea7ee5abae7c560ad 07-Jul-2010 Dan Gohman <gohman@apple.com> Split the SDValue out of OutputArg so that SelectionDAG-independent
code can do calling-convention queries. This obviates OutputArgReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107786 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c9403659a98bf6487ab6fbf40b81628b5695c02e 07-Jul-2010 Dan Gohman <gohman@apple.com> Split the SDValue out of OutputArg so that SelectionDAG-independent
code can do calling-convention queries. This obviates OutputArgReg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107786 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c1c0833f5c20e2558f5767735b60fdae654f8fe2 07-Jul-2010 Bob Wilson <bob.wilson@apple.com> Also use REG_SEQUENCE for VTBX instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107743 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
78dfbc380d685c59b9321e43c10677a179850e29 07-Jul-2010 Bob Wilson <bob.wilson@apple.com> Also use REG_SEQUENCE for VTBX instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107743 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
ebb6efb9531854b8daa1eeb24255753db2a225ae 07-Jul-2010 Jim Grosbach <grosbach@apple.com> Mark eh.sjlj.set/longjmp custom lowerings as Darwin-only since that's where
they've been tested to work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107742 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e97f968a69d90ee61fbe16d1740ab7f7ea18d1bf 07-Jul-2010 Jim Grosbach <grosbach@apple.com> Mark eh.sjlj.set/longjmp custom lowerings as Darwin-only since that's where
they've been tested to work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107742 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fb695a291ec7ad5be9f4c13eb7df14c903d4ad15 07-Jul-2010 Jim Grosbach <grosbach@apple.com> By default, the eh.sjlj.setjmp/longjmp intrinsics should just do nothing rather
than assuming a target will custom lower them. Targets which do so should
exlicitly mark them as having custom lowerings. PR7454.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107734 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c66e150b2cb1f2f8e2f4eb124b9177ffc6ef3a74 07-Jul-2010 Jim Grosbach <grosbach@apple.com> By default, the eh.sjlj.setjmp/longjmp intrinsics should just do nothing rather
than assuming a target will custom lower them. Targets which do so should
exlicitly mark them as having custom lowerings. PR7454.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107734 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e633a7a766d71736c91b0558eecb0dbf0d929d26 07-Jul-2010 Bob Wilson <bob.wilson@apple.com> Use REG_SEQUENCE nodes to make the table registers for VTBL instructions be
allocated to consecutive registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107730 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
d491d6ecd2debd444451f07e6e947685d1e02217 07-Jul-2010 Bob Wilson <bob.wilson@apple.com> Use REG_SEQUENCE nodes to make the table registers for VTBL instructions be
allocated to consecutive registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107730 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
a274fde9cf6f3b82414c343f581251b477ec4fc7 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Track defs for all aliases in NEONMoveFix.

This means that an instruction defining an S register will affect the domain of
the parent D register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107725 91177308-0d34-0410-b5e6-96231b3b80d8
EONMoveFix.cpp
fca3a25fed9950f7ca39c86a3f2b72a1966f7896 07-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Track defs for all aliases in NEONMoveFix.

This means that an instruction defining an S register will affect the domain of
the parent D register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107725 91177308-0d34-0410-b5e6-96231b3b80d8
EONMoveFix.cpp
de09e922a6a82ff48d31328606f691591ae8fa19 07-Jul-2010 Devang Patel <dpatel@apple.com> Propagate debug loc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107710 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0d881dabc1a4e1aefad6dd38de166d8358285638 07-Jul-2010 Devang Patel <dpatel@apple.com> Propagate debug loc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107710 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
30377a614c8d671f0da10e59416afbe2a282a2ff 06-Jul-2010 Bob Wilson <bob.wilson@apple.com> Represent NEON load/store alignments in bytes, not bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107701 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
smPrinter/ARMAsmPrinter.cpp
f967ca0eaf30325cabe3c1971bf0dba16cf1b027 06-Jul-2010 Bob Wilson <bob.wilson@apple.com> Represent NEON load/store alignments in bytes, not bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107701 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
smPrinter/ARMAsmPrinter.cpp
3dd527d9807fa0c5f81fbbf92858e0362226b327 06-Jul-2010 Dan Gohman <gohman@apple.com> Reapply r107655 with fixes; insert the pseudo instruction into
the block before calling the expansion hook. And don't
put EFLAGS in a mbb's live-in list twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
14152b480d09c7ca912af7c06d00b0ff3912e4f5 06-Jul-2010 Dan Gohman <gohman@apple.com> Reapply r107655 with fixes; insert the pseudo instruction into
the block before calling the expansion hook. And don't
put EFLAGS in a mbb's live-in list twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2241e6cd892d48716c7823683b21184f3395a013 06-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Don't create neon moves in CopyRegToReg. NEONMoveFixPass will do the conversion
if profitable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107673 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a5e82a5748763eba327176def083eec688eb4d6b 06-Jul-2010 Rafael Espindola <rafael.espindola@gmail.com> Don't create neon moves in CopyRegToReg. NEONMoveFixPass will do the conversion
if profitable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107673 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
17ce26121c7897de51b0206bf012c32e2f2cc53a 06-Jul-2010 Dan Gohman <gohman@apple.com> Revert r107655.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107668 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
258c58cc6257cf61c9bdbb9c4cea67ba2691adf0 06-Jul-2010 Dan Gohman <gohman@apple.com> Revert r107655.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107668 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
56f3378de6b873302cbf2f69582b29811cfd919b 06-Jul-2010 Dan Gohman <gohman@apple.com> Fix a bunch of custom-inserter functions to handle the case where
the pseudo instruction is not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107655 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b81c771c0d9ab5a980caf3383932b051eafd1a39 06-Jul-2010 Dan Gohman <gohman@apple.com> Fix a bunch of custom-inserter functions to handle the case where
the pseudo instruction is not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107655 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9ff54089b59fb811a3530cf96ebb5c946cbb140f 03-Jul-2010 Evan Cheng <evan.cheng@apple.com> Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107550 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ed2ae136d29dd36122d2476801e7d7a86e8301e3 03-Jul-2010 Evan Cheng <evan.cheng@apple.com> Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107550 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a8487ca33322438f1fd20f2334439ec831b3251e 02-Jul-2010 Evan Cheng <evan.cheng@apple.com> Remove early IT block formation. It's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107513 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
humb2ITBlockPass.cpp
dca653951c693edf47437cf0a10d0d0dbb57276d 02-Jul-2010 Evan Cheng <evan.cheng@apple.com> Remove early IT block formation. It's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107513 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
humb2ITBlockPass.cpp
3477c87be5b32ca1348a53666e688b3d249eabd3 02-Jul-2010 Bob Wilson <bob.wilson@apple.com> Fix incorrect asm-printing of some NEON immediates. Fix weak testcase so
that it checks the immediate values, not just the instructions opcodes.
Radar 8110263.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
e45f72c833a23602399605148c76b6debb3fabd2 02-Jul-2010 Bob Wilson <bob.wilson@apple.com> Fix incorrect asm-printing of some NEON immediates. Fix weak testcase so
that it checks the immediate values, not just the instructions opcodes.
Radar 8110263.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107487 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
7a3f4a976d6542b3da87ef7d947147c452689ca6 02-Jul-2010 Bob Wilson <bob.wilson@apple.com> ARM function alignments were off by a power of two. svn 83242 changed
getFunctionAlignment and the corresponding use of that value in the ARM
asm printer, but now we're using the standard asm printer. The result of
this was that function alignments were dropped completely for Thumb functions.
Radar 8143571.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107435 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b5b5057a709a6dc8e99c6e57bdea89c2b53dd4de 02-Jul-2010 Bob Wilson <bob.wilson@apple.com> ARM function alignments were off by a power of two. svn 83242 changed
getFunctionAlignment and the corresponding use of that value in the ARM
asm printer, but now we're using the standard asm printer. The result of
this was that function alignments were dropped completely for Thumb functions.
Radar 8143571.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107435 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ffdc17bec626bae590717b8af59e4ba1de216bb4 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding VDUP (ARM core register) instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107201 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
21773e716f72babacfcf98cb5a90fc1a62a8254d 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding VDUP (ARM core register) instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107201 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
bdd93b262fd7700fa141f937925842b901e8d382 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding NEON VMOV (from core register to scalar) instructions.
The encoding is the same as VMOV (from scalar to core register) except that
the operands are in different places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107167 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d5a563de07b7479c6c69b35a81d48bb8002580fb 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding NEON VMOV (from core register to scalar) instructions.
The encoding is the same as VMOV (from scalar to core register) except that
the operands are in different places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107167 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
4645ae684ad7a66e2c4542a251037682ac2b85b3 29-Jun-2010 Jim Grosbach <grosbach@apple.com> skip dbg_value instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107154 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
077f1bfa91953eb2378fca9b5ae91b08a2fc17bd 29-Jun-2010 Jim Grosbach <grosbach@apple.com> skip dbg_value instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107154 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
54ccceb347a1c09768588483fa891e1187f8ec8b 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> The t2MOVi16 and t2MOVTi16 instructions do not set CPSR. Trying to add
a CPSR operand to them causes an assertion failure, so apparently these
instructions haven't been getting a lot of use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107147 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
1ab38469dfa8050724a8443d7b7ef2885e11e1db 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> The t2MOVi16 and t2MOVTi16 instructions do not set CPSR. Trying to add
a CPSR operand to them causes an assertion failure, so apparently these
instructions haven't been getting a lot of use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107147 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
dd68477a2b0c937054dce377a953e161d4db7b5f 29-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a VT argument to getMinimalPhysRegClass and replace the copy related uses
of getPhysicalRegisterRegClass with it.

If we want to make a copy (or estimate its cost), it is better to use the
smallest class as more efficient operations might be possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107140 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d31f972bd33de85071c716f69bf5c6d735f730f2 29-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a VT argument to getMinimalPhysRegClass and replace the copy related uses
of getPhysicalRegisterRegClass with it.

If we want to make a copy (or estimate its cost), it is better to use the
smallest class as more efficient operations might be possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107140 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
fc7f22f577eaac4342fdaf41d9c3176feb634eda 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove pointless variable LastDef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107135 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
31a3a3ebaf9c28fcfd82b1494a47fb11cc00759b 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove pointless variable LastDef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107135 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
06d55e1575fc6a25fc7c0afd652642de640c3650 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove unused variable Loc and pointless variables unified_syntax
and thumb_mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107133 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
58c86910b31c569a5709466c82e2fabae2014a56 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove unused variable Loc and pointless variables unified_syntax
and thumb_mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107133 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
0f4c7e269467d70dba619e721a5b376c6e9df1ab 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove an unused and a pointless variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107131 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
978189e090e809c1a6efcf2677e785a06f71029e 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove an unused and a pointless variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107131 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b375499e2d56fed3125a7d797ef21e03fe220176 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove initialized but otherwise unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107127 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
90c64f4aac95ebfcdeb8ad78a373fdb9e61b002c 29-Jun-2010 Duncan Sands <baldrick@free.fr> Remove initialized but otherwise unused variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107127 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2aa4e7c23ca30bf42eb424419ed231f81a8a4cd7 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
RMInstrThumb2.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
RMInstrThumb2.td
f00173992ff82419767f47900f11b71beaff7c13 29-Jun-2010 Evan Cheng <evan.cheng@apple.com> Change if-cvt options to something that actually as useable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107121 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
c170f66742f84367e9922e5dd1953d696788a8be 29-Jun-2010 Evan Cheng <evan.cheng@apple.com> Change if-cvt options to something that actually as useable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107121 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
1791cdc133e01a06970c51005621845f77210e99 29-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When no memoperands are present, assume unaligned, volatile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107114 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
628a79771ba6d293ba7b6f2615f022e1ae9c7c49 29-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When no memoperands are present, assume unaligned, volatile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107114 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
113efc8485d586656ff7c7966e35dc34ea982dab 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix Thumb encoding of VMOV (scalar to ARM core register). The encoding is
the same as ARM except that the condition code field is always set to ARMCC::AL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107107 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5cdede43e92a370130fddde2ff071c74ea463448 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix Thumb encoding of VMOV (scalar to ARM core register). The encoding is
the same as ARM except that the condition code field is always set to ARMCC::AL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107107 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
b9103199ac28a1462150439f024e615b36bef093 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Make the ARMCodeEmitter identify Thumb functions via ARMFunctionInfo instead
of the Subtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107086 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
62d24a4b92df6f367b82eb232961c27421d8abfa 29-Jun-2010 Bob Wilson <bob.wilson@apple.com> Make the ARMCodeEmitter identify Thumb functions via ARMFunctionInfo instead
of the Subtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107086 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
64082f40bb36661b3f585f870b4e332b3e764618 28-Jun-2010 Jim Grosbach <grosbach@apple.com> tidy up style. no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107073 91177308-0d34-0410-b5e6-96231b3b80d8
humb2HazardRecognizer.cpp
e89c5e57cc5c525d7875032a125e37bd404448c2 28-Jun-2010 Jim Grosbach <grosbach@apple.com> tidy up style. no functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107073 91177308-0d34-0410-b5e6-96231b3b80d8
humb2HazardRecognizer.cpp
f48bd3b93d62085766f1ec01e8a2243f68ebe0ce 28-Jun-2010 Bob Wilson <bob.wilson@apple.com> Refactor encoding function for NEON 1-register with modified immediate format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107070 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
08baddbc0708d6965b72b40aa3c1f40b56a31835 28-Jun-2010 Bob Wilson <bob.wilson@apple.com> Refactor encoding function for NEON 1-register with modified immediate format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107070 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
86bd22b53945cda14f934591a587a2dd80dfcbe7 28-Jun-2010 Bob Wilson <bob.wilson@apple.com> Support Thumb mode encoding of NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107068 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d896a97dc7c14675c08520847b45a60a200b8cf5 28-Jun-2010 Bob Wilson <bob.wilson@apple.com> Support Thumb mode encoding of NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107068 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
bc6517d2ada0a1cbac8e0682aef95b026609b9eb 28-Jun-2010 Jim Grosbach <grosbach@apple.com> minor housekeeping cleanup: 80-column, trailing whitespace, spelling, etc.. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106988 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
humb2ITBlockPass.cpp
e9e3f20ffbb20ebae6c48c3499c9b069f28e28fc 28-Jun-2010 Jim Grosbach <grosbach@apple.com> minor housekeeping cleanup: 80-column, trailing whitespace, spelling, etc.. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106988 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA8.td
RMScheduleA9.td
humb2ITBlockPass.cpp
06a2798498b807185f64d16352c77c028bb4e246 26-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Followup to r106770: actually generate SXTB and SXTH for sign-extensions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a2c6f457a4954d8e38b4c2c69b011cdfa123ad02 26-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Followup to r106770: actually generate SXTB and SXTH for sign-extensions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4c5c79d288a17ed7be2d8e9155188a3d26a8515d 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding NEON VMOV (from scalar to core register) instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106938 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
52e4a0a074b758ad3dbf6841b249aaf3baf08f28 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding NEON VMOV (from scalar to core register) instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106938 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
ce0e66f1ee93efa564eee248dcbedeac82d68d0b 26-Jun-2010 Evan Cheng <evan.cheng@apple.com> It's now possible to run code placement pass for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106935 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f6799394d5a656fa5adec4619d60c5f79fdb43f5 26-Jun-2010 Evan Cheng <evan.cheng@apple.com> It's now possible to run code placement pass for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106935 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c1bffa7b33791ff818ac443b3b879f1136b25028 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Renumber NEON instruction formats to be consecutive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106927 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
80d9bc0336821ca2a94a7afe2daac6e8bc689ef7 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Renumber NEON instruction formats to be consecutive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106927 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
9f1aa33dab8eabb08e383cdef3204fa1e6c8e77f 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename ARM instruction formats NEONGetLnFrm, NEONSetLnFrm and NEONDupFrm to
"N..." instead of "NEON..." for consistency with the other NEON format names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106921 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
184723d9be17fa0d136b564b2dca44c5216044d6 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename ARM instruction formats NEONGetLnFrm, NEONSetLnFrm and NEONDupFrm to
"N..." instead of "NEON..." for consistency with the other NEON format names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106921 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
1a071f68b23b4fbf696b1f7d207565393984774f 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Remove unused NEONFrm and ThumbMiscFrm ARM instruction formats.
Renumber MiscFrm to 25.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106916 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
26532631653be91f9ccc99fca3bfb8027da7c70b 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Remove unused NEONFrm and ThumbMiscFrm ARM instruction formats.
Renumber MiscFrm to 25.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106916 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
isassembler/ARMDisassemblerCore.cpp
6b9223fcf67da4c1983ee73bbfbc952bb6adb001 26-Jun-2010 Daniel Dunbar <daniel@zuster.org> Thumb2ITBlockPass: Fix a possible dereference of an invalid iterator. This was
introduced in r106343, but only showed up recently (with a particular compiler &
linker combination) because of the particular check, and because we have no
builtin checking for dereferencing the end of an array, which is truly
unfortunate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106908 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
e39e06af38281bb8923d28b554a11a74e4eb67b7 26-Jun-2010 Daniel Dunbar <daniel@zuster.org> Thumb2ITBlockPass: Fix a possible dereference of an invalid iterator. This was
introduced in r106343, but only showed up recently (with a particular compiler &
linker combination) because of the particular check, and because we have no
builtin checking for dereferencing the end of an array, which is truly
unfortunate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106908 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
09f725277d18268655bf3e5e261061a54bfa1d14 26-Jun-2010 Evan Cheng <evan.cheng@apple.com> Change if-conversion block size limit checks to add some flexibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106901 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
13151432edace19ee867a93b5c14573df4f75d24 26-Jun-2010 Evan Cheng <evan.cheng@apple.com> Change if-conversion block size limit checks to add some flexibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106901 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
383e846e3abbfb4e09bd7e020a9d46c424755e34 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding 3-register NEON instructions, and fix
emitNEON2RegInstruction's handling of 2-address operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106900 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5e7b607f725e5c07aacd1d0cfe5fefb6b3900ae2 26-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding 3-register NEON instructions, and fix
emitNEON2RegInstruction's handling of 2-address operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106900 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
a7ba9cda87adafd4fcb30902120010c21888e8f4 25-Jun-2010 Dale Johannesen <dalej@apple.com> The hasMemory argument is irrelevant to how the argument
for an "i" constraint should get lowered; PR 6309. While
this argument was passed around a lot, this is the only
place it was used, so it goes away from a lot of other
places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106893 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
1784d160e4efa75782884d451d0788b9457e67dc 25-Jun-2010 Dale Johannesen <dalej@apple.com> The hasMemory argument is irrelevant to how the argument
for an "i" constraint should get lowered; PR 6309. While
this argument was passed around a lot, this is the only
place it was used, so it goes away from a lot of other
places.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106893 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
f1672483d8ff3d19e647cc959edefc853902012d 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding 2-register NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106891 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
583a2a06152de7796967488f3689e109ba6c5364 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add support for encoding 2-register NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106891 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
40763e060ed493a2b2e3f9bd7cbfc85a1fd4b5ca 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106881 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8c605c601da54a09c14c1a9a59e75dbb24df2a43 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106881 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4d27e7b766c2d13bfc849a54feb39493a8d6defa 25-Jun-2010 Jim Grosbach <grosbach@apple.com> IT instructions are considered to be scheduling hazards, but are scheduled
with the following instructions. This is done via trickery by considering the
instruction preceding the IT to be the hazard. Care must be taken to ensure
it's the first non-debug instruction, or the presence of debug info will
affect codegen.

Part of the continuing work for rdar://7797940, making ARM code-gen unaffected
by the presence of debug information.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106871 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
57bb3948034436a458f5ef857eb2e831a47e7401 25-Jun-2010 Jim Grosbach <grosbach@apple.com> IT instructions are considered to be scheduling hazards, but are scheduled
with the following instructions. This is done via trickery by considering the
instruction preceding the IT to be the hazard. Care must be taken to ensure
it's the first non-debug instruction, or the presence of debug info will
affect codegen.

Part of the continuing work for rdar://7797940, making ARM code-gen unaffected
by the presence of debug information.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106871 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
bea33f596ec9065a282d81c3279f8a05a0892cab 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add missing ARM and Thumb data layout info for vector types.
Radar 8128745.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106820 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
ade57fa619f9ed750a359c06ae031e3979e915c0 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add missing ARM and Thumb data layout info for vector types.
Radar 8128745.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106820 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
9986b9f068debf39de9fb587fc697cad86cafc71 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106819 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
86fe66db3ad19bc20dbb9803e4bf032aa6cd1924 25-Jun-2010 Bob Wilson <bob.wilson@apple.com> Reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106819 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a800df9065b67bfdae22819f31d25deb4622f7b9 24-Jun-2010 Evan Cheng <evan.cheng@apple.com> Oops. IT block formation pass needs to be run at any optimization level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106775 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8acf67672bf53ba9b168a3b11fba42988708b7a0 24-Jun-2010 Evan Cheng <evan.cheng@apple.com> Oops. IT block formation pass needs to be run at any optimization level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106775 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8ca0d0011be5bf73750206990ad726c669e870aa 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
RMInstrThumb2.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
RMInstrThumb2.td
d834d604eca8794261523af0daaae7efdc25c66b 24-Jun-2010 Bob Wilson <bob.wilson@apple.com> PR7458: Try commuting Thumb2 instruction operands to put them into 2-address
form so they can be narrowed to 16-bit instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106762 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
789fef987f9c3dd14743731e3a6733f2f90c9778 24-Jun-2010 Bob Wilson <bob.wilson@apple.com> PR7458: Try commuting Thumb2 instruction operands to put them into 2-address
form so they can be narrowed to 16-bit instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106762 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
3d03781d96a1076d8f5dfd3910702a5dd8671499 24-Jun-2010 Bill Wendling <isanbard@gmail.com> We are missing opportunites to use ldm. Take code like this:

void t(int *cp0, int *cp1, int *dp, int fmd) {
int c0, c1, d0, d1, d2, d3;
c0 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
c1 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
/* ... */
}

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106693 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
4b722108e2cf8e77157e0879a23789cd44829933 24-Jun-2010 Bill Wendling <isanbard@gmail.com> We are missing opportunites to use ldm. Take code like this:

void t(int *cp0, int *cp1, int *dp, int fmd) {
int c0, c1, d0, d1, d2, d3;
c0 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
c1 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
/* ... */
}

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106693 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
b09e66eb68648b8d544ae1f6337e5f8bfcd218f8 23-Jun-2010 Dale Johannesen <dalej@apple.com> Do not do tail calls to external symbols. If the
branch turns out to be ARM-to-Thumb or vice versa
the linker cannot resolve this. 8120438.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106662 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e39fdbe1187b74f8c415adb9f807fa56f1e055aa 23-Jun-2010 Dale Johannesen <dalej@apple.com> Do not do tail calls to external symbols. If the
branch turns out to be ARM-to-Thumb or vice versa
the linker cannot resolve this. 8120438.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106662 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c4c46f871e5d8603c9af6fc163c0bf39365fd422 23-Jun-2010 Jim Grosbach <grosbach@apple.com> When using libcall expansions for the atomic intrinsics, the explicit
MEMBARRIER fences aren't necessary for ARM. Tell the combiner to fold them
away.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106631 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5def57aaf477e3383cbd1b925233098a54273146 23-Jun-2010 Jim Grosbach <grosbach@apple.com> When using libcall expansions for the atomic intrinsics, the explicit
MEMBARRIER fences aren't necessary for ARM. Tell the combiner to fold them
away.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106631 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
69a4c0861855d688bc0832e90759fb3786db118d 23-Jun-2010 Bob Wilson <bob.wilson@apple.com> Thumb1 functions using @llvm.returnaddress were not saving the incoming LR.
Radar 8031193.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106582 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
a3a204664db165f7b58a45e2239127513b207e8f 23-Jun-2010 Bob Wilson <bob.wilson@apple.com> Thumb1 functions using @llvm.returnaddress were not saving the incoming LR.
Radar 8031193.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106582 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
559d513348a11936bc90b64aad75e2540b26c6a4 22-Jun-2010 Dan Gohman <gohman@apple.com> Use pre-increment instead of post-increment when the result is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
fe60104ac97f3a8736dcfbfdf9547c7b7cc7b951 22-Jun-2010 Dan Gohman <gohman@apple.com> Use pre-increment instead of post-increment when the result is not used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
8bed85099fd6ea5f408e5dbaa7c1e60dade7e159 22-Jun-2010 Evan Cheng <evan.cheng@apple.com> Tail merging pass shall not break up IT blocks. rdar://8115404


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106517 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
4d54e5b2dd4a3d3bed38ff9c7aa57fc66adb5855 22-Jun-2010 Evan Cheng <evan.cheng@apple.com> Tail merging pass shall not break up IT blocks. rdar://8115404


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106517 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
4962539ccfd20df4f062134f4313de24a832b7df 21-Jun-2010 Bob Wilson <bob.wilson@apple.com> sign_extend_inreg needs to be expanded for pre-v6 Thumb as well as ARM.
Radar 8104310.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
56a1a69a35ca2ee0d1249d705de8936096c6f008 21-Jun-2010 Bob Wilson <bob.wilson@apple.com> sign_extend_inreg needs to be expanded for pre-v6 Thumb as well as ARM.
Radar 8104310.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
20f2e6efb0e121f11de954f7fe4e7d3ce84baf28 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
548e6e14ba7ecf78071037dd71500ee078a76a5d 21-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7421: bug in kill transferring logic. It was ignoring loads / stores which have already been processed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106481 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
d95ea2da28901ca6e81645e444e528d66350d781 21-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix PR7421: bug in kill transferring logic. It was ignoring loads / stores which have already been processed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106481 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3d63f8a10a0cc52ad504c09a9ddf068f0e93982d 21-Jun-2010 Dale Johannesen <dalej@apple.com> Fix PR 7433. Silly typo in non-Darwin ARM tail call
handling, plus correct R9 handling in that mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106434 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.td
b0ccb757b3ece5897e61643e055c30df407c0fc6 21-Jun-2010 Dale Johannesen <dalej@apple.com> Fix PR 7433. Silly typo in non-Darwin ARM tail call
handling, plus correct R9 handling in that mode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106434 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.td
c69a904599265192740373d5d58eb243650eeb42 21-Jun-2010 Jim Grosbach <grosbach@apple.com> early exit for dbg_value instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106430 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9cfcfeb24bf7182d40d8e8a54e350451b67a1136 21-Jun-2010 Jim Grosbach <grosbach@apple.com> early exit for dbg_value instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106430 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
23a5d6753ba766a754e5cb37deef19a2a6c82e82 20-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix a crash caused by dereference of MBB.end(). rdar://8110842

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106399 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
859df5e9f9a71213dd7e017683d359131ec2d263 20-Jun-2010 Evan Cheng <evan.cheng@apple.com> Fix a crash caused by dereference of MBB.end(). rdar://8110842

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106399 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
dbe1ce39595800f1976e70bda0fc386bdec1d406 19-Jun-2010 Bob Wilson <bob.wilson@apple.com> Remove a fixme comment that is no longer relevant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106382 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
31ef8e6663d41bc166b9061c4e9b0472889d49e8 19-Jun-2010 Bob Wilson <bob.wilson@apple.com> Remove a fixme comment that is no longer relevant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106382 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5f85e6378998a1d3120738c9136907ddf4873c00 19-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix error message to match function name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dc076da4d25a447982c0629da91e322eda511cbf 19-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix error message to match function name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7a8db740bf72f2534bc2a2bb6683fce0539cfbc5 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Ignore dbg_value's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106373 91177308-0d34-0410-b5e6-96231b3b80d8
humb2HazardRecognizer.cpp
02ba9e19c7f537904d02b5df9a12ac5f895c4c0c 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Ignore dbg_value's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106373 91177308-0d34-0410-b5e6-96231b3b80d8
humb2HazardRecognizer.cpp
609ecbec1ed7352caa2e4e4e1516564545129886 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Disable sibcall optimization for Thumb1 for now since Thumb1RegisterInfo::emitEpilogue is not expecting them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106368 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0110ac66ebd1e59e6ac163e13670f36d091084f6 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Disable sibcall optimization for Thumb1 for now since Thumb1RegisterInfo::emitEpilogue is not expecting them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106368 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2bcb7065b47c2a8eb8d18398731be4bdc5100010 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Indentation and remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106362 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6523d2ff7f3c583995b018ecc09391c26b37fce4 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Indentation and remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106362 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6d21b6e06548bfd5b4df53d6f87c2d9216dfbb5c 19-Jun-2010 Dan Gohman <gohman@apple.com> Silence compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106360 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
9559e3b99af79da0e97027992345b74db2f7f6a2 19-Jun-2010 Dan Gohman <gohman@apple.com> Silence compiler warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106360 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
a529d78106a6145221da33d002df4640aa06a874 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Move ARM if-conversion before post-ra scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106355 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
96c3da64363ef8c0fddf4dbba7576332ef868780 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Move ARM if-conversion before post-ra scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106355 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
f2573901bb4ccbf3a1c3f4e637505f73200e7b66 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Update cmake list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106348 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
3ee608c5aa2954ac2af655b2d73ea6e907465e0e 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Update cmake list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106348 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
8fab63a5051350c8b97d940c5be069b3290f3feb 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Thumb2 hazard recognizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106347 91177308-0d34-0410-b5e6-96231b3b80d8
humb2HazardRecognizer.cpp
humb2HazardRecognizer.h
886459456c58695fe30dbf5b91954aa36a7a3674 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Thumb2 hazard recognizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106347 91177308-0d34-0410-b5e6-96231b3b80d8
humb2HazardRecognizer.cpp
humb2HazardRecognizer.h
24ff056654cd4eae6c6403b81dfceaa46605f395 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrThumb2.td
RMMachineFunctionInfo.h
RMRegisterInfo.td
RMTargetMachine.cpp
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrThumb2.td
RMMachineFunctionInfo.h
RMRegisterInfo.td
RMTargetMachine.cpp
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
dd67159ea024c078f6c9f3c41bc400b1f3f2f6e1 19-Jun-2010 Jim Grosbach <grosbach@apple.com> back-end libcall handling for ATOMIC_SWAP (__sync_lock_test_and_set)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106342 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ef6eb9c7ab7967790566c5e2d47977d89fc060ee 19-Jun-2010 Jim Grosbach <grosbach@apple.com> back-end libcall handling for ATOMIC_SWAP (__sync_lock_test_and_set)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106342 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4df250458e54135b6af7c19132b8f29d2751ed9a 19-Jun-2010 Jim Grosbach <grosbach@apple.com> Enable Expand handling of atomics for subtargets that can't do them inline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106336 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
68741be5e6a4a0e633928e4d86eea38aa07a2ca0 19-Jun-2010 Jim Grosbach <grosbach@apple.com> Enable Expand handling of atomics for subtargets that can't do them inline.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106336 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7a7f12d06b652a70dc597c490c46672575bb3458 18-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rewrite chained if's as switches and replace assertions with llvm_unreachable
(as suggested in radar 8104405).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106318 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ebe99b2c198ec08c5e4a032ec0afb0345c747706 18-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rewrite chained if's as switches and replace assertions with llvm_unreachable
(as suggested in radar 8104405).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106318 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
248a97be8c83f228ca62f82b750ac3ad183dd2cc 18-Jun-2010 Dale Johannesen <dalej@apple.com> Fix ARM/Thumb reversal in previous attempt.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106314 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
51bd47edbc6112212291f4e82502c8b33ff799f1 18-Jun-2010 Dale Johannesen <dalej@apple.com> Fix ARM/Thumb reversal in previous attempt.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106314 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8e241b80bc33222e22da8f5060c2224b22c1817f 18-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When using ADDri to get the address of a stack object, 255 is a conservative
limit on the offset that can be materialized without using the register
scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106312 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
52c61ec1640a9fa1cf8c2fde97a14dfbf5e702b7 18-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> When using ADDri to get the address of a stack object, 255 is a conservative
limit on the offset that can be materialized without using the register
scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106312 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
967a639933a223c03154115afb3977f771b37919 18-Jun-2010 Dale Johannesen <dalej@apple.com> An attempt to fix the problem Anton reported with
ARM tail calls. Don't know if it works, but it
doesn't break Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106309 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMInstrInfo.td
10416803c1370fe1e52a7f1c431fe506be9c1ef5 18-Jun-2010 Dale Johannesen <dalej@apple.com> An attempt to fix the problem Anton reported with
ARM tail calls. Don't know if it works, but it
doesn't break Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106309 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMInstrInfo.td
f78836334612e03afa79b8b6c1b94ffd1236f44b 18-Jun-2010 Dale Johannesen <dalej@apple.com> Enable tail calls on ARM by default, with some
basic tests.

This has been well tested on Darwin but not elsewhere.
It should work provided the linker correctly resolves
B.W <label in other function>
which it has not seen before, at least from llvm-based
compilers. I'm leaving the arm-tail-calls switch in
until I see if there's any problems because of that;
it might need to be disabled for some environments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106299 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c66cdf74a9f1ee12cb9bff39cbd6bc518fbc2d3e 18-Jun-2010 Dale Johannesen <dalej@apple.com> Enable tail calls on ARM by default, with some
basic tests.

This has been well tested on Darwin but not elsewhere.
It should work provided the linker correctly resolves
B.W <label in other function>
which it has not seen before, at least from llvm-based
compilers. I'm leaving the arm-tail-calls switch in
until I see if there's any problems because of that;
it might need to be disabled for some environments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106299 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
05bf7d1642fe2553cc94fd2c27da62357560ab8d 18-Jun-2010 Dan Gohman <gohman@apple.com> Start TargetRegisterClass indices at 0 instead of 1, so that
MachineRegisterInfo doesn't have to confusingly allocate an extra
entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106296 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
a606d955de3b0f777131d74162eb6f11b5f95d75 18-Jun-2010 Dan Gohman <gohman@apple.com> Start TargetRegisterClass indices at 0 instead of 1, so that
MachineRegisterInfo doesn't have to confusingly allocate an extra
entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106296 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
f8df119403b59c66c2886c26be2146edac74566e 18-Jun-2010 Dale Johannesen <dalej@apple.com> Last round of changes for ARM tail calls.
Not turning them on yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106295 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
df50d7e238c4802eb2de04646b8f7ff7327730a0 18-Jun-2010 Dale Johannesen <dalej@apple.com> Last round of changes for ARM tail calls.
Not turning them on yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106295 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
2edb384bae37fa5f99fe42882a05fad4d8f8842f 18-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Treat the ARM inline asm {cc} constraint as a physreg (%CPSR), just like X86
does for {flags}. If we create virtual registers of the CCR class, RegAllocFast
may try to spill them, and we can't do that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106289 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0d8ba3303b40a150f70ff63f04f57160984492c1 18-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Treat the ARM inline asm {cc} constraint as a physreg (%CPSR), just like X86
does for {flags}. If we create virtual registers of the CCR class, RegAllocFast
may try to spill them, and we can't do that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106289 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bcc946d7409ba0d8918f4d0256090ff1a8b90392 18-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate unnecessary uses of getZExtValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e368b460a206fafa0d31d5d059b1779b94f7df8c 18-Jun-2010 Dan Gohman <gohman@apple.com> Eliminate unnecessary uses of getZExtValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9fa5e3347d0fcd2a4626807dc2d8f7ceedf48ffd 18-Jun-2010 Stuart Hastings <stuart@apple.com> Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). This
addresses a longstanding deficiency noted in many FIXMEs scattered
across all the targets.

This effectively moves the problem up one level, replacing eleven
FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path
through FastISel where we actually supply a DebugLoc, fixing Radar
7421831.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106243 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
3bf912593301152b65accb9d9c37a95172f1df5a 18-Jun-2010 Stuart Hastings <stuart@apple.com> Add a DebugLoc parameter to TargetInstrInfo::InsertBranch(). This
addresses a longstanding deficiency noted in many FIXMEs scattered
across all the targets.

This effectively moves the problem up one level, replacing eleven
FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path
through FastISel where we actually supply a DebugLoc, fixing Radar
7421831.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106243 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
828feb68940e33608f14c3d7183fe41ae0464a1b 17-Jun-2010 Jim Grosbach <grosbach@apple.com> Thumb1 and any pre-v6 ARM target should use the libcall expansion of
ISD::MEMBARRIER. v7 and v7 ARM mode continue to use the custom lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106204 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7072cf62a52787c461e3371ad36e1754e8a0dc97 17-Jun-2010 Jim Grosbach <grosbach@apple.com> Thumb1 and any pre-v6 ARM target should use the libcall expansion of
ISD::MEMBARRIER. v7 and v7 ARM mode continue to use the custom lowering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106204 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
96b81269d6484b1b8587294de7a47ffdfea67d91 17-Jun-2010 Jim Grosbach <grosbach@apple.com> simplify code a bit and add a more explanatory assert for cases that
previously would result in 'cannot yet select' errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106199 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c73993b67815c96bb270034bdc7b7e8edc16d614 17-Jun-2010 Jim Grosbach <grosbach@apple.com> simplify code a bit and add a more explanatory assert for cases that
previously would result in 'cannot yet select' errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106199 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6190f65b9987a44f09b29efabab78e39d9f2436a 17-Jun-2010 Jim Grosbach <grosbach@apple.com> format and 80-column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106173 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7616b646f1436d11ce0cb16f52ffa10b5522b0ac 17-Jun-2010 Jim Grosbach <grosbach@apple.com> format and 80-column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106173 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6b1388e7bc002b965a2472dd7f85e41a71d465c8 17-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't attempt preserving conservative kill flags. We were doing it wrong.
This is before LiveVariables anyway, where these kill flags are recalculated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106157 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
a2846b4bee819c02094c41d44c4e92e03fc830dd 17-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't attempt preserving conservative kill flags. We were doing it wrong.
This is before LiveVariables anyway, where these kill flags are recalculated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106157 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
3f0cad3dbf6e69208cfcb8dcc713bdb6b46e8aa3 16-Jun-2010 Bob Wilson <bob.wilson@apple.com> Remove the hidden "neon-reg-sequence" option. The reg sequences are working
now, so there's no need to disable them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106155 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
EONPreAllocPass.cpp
07f6e805b1e832a2c34a83862cec27736bb471bf 16-Jun-2010 Bob Wilson <bob.wilson@apple.com> Remove the hidden "neon-reg-sequence" option. The reg sequences are working
now, so there's no need to disable them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106155 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
EONPreAllocPass.cpp
160f30cd4ff881f768384f38f1b9d7694faa0b40 16-Jun-2010 Evan Cheng <evan.cheng@apple.com> Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106091 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetMachine.cpp
46df4eb46e784036cf895db271fe29e1cf2a975a 16-Jun-2010 Evan Cheng <evan.cheng@apple.com> Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106091 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetMachine.cpp
b332030af5d914aa9815669fe5ff1d814fd12a64 16-Jun-2010 Dale Johannesen <dalej@apple.com> Add file missing from previous commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106058 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
38d5f0441cb0e78a1ba89d46489ec27a31f0cec5 16-Jun-2010 Dale Johannesen <dalej@apple.com> Add file missing from previous commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106058 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
192119a1cea4cf5a149bc3ed77306060c689095d 16-Jun-2010 Dale Johannesen <dalej@apple.com> Next round of tail call changes. Register used in a tail
call must not be callee-saved; following x86, add a new
regclass to represent this. Also fixes a couple of bugs.
Still disabled by default; Thumb doesn't work yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106053 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMRegisterInfo.td
humb1InstrInfo.cpp
humb2InstrInfo.cpp
6470a116f17b70aba0c2e7ee751551a5ac9797f6 16-Jun-2010 Dale Johannesen <dalej@apple.com> Next round of tail call changes. Register used in a tail
call must not be callee-saved; following x86, add a new
regclass to represent this. Also fixes a couple of bugs.
Still disabled by default; Thumb doesn't work yet.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106053 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMRegisterInfo.td
humb1InstrInfo.cpp
humb2InstrInfo.cpp
52f4ff720cb1747339abafc668550f7b4094b0fc 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add basic support for NEON modified immediates besides VMOV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106030 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
827b2106fe39c4195f5f5393b6bab70cc297657d 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add basic support for NEON modified immediates besides VMOV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106030 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
3cae8c16381853de40154818a76d6f0ef735a86e 15-Jun-2010 Daniel Dunbar <daniel@zuster.org> Add <cstddef> include to get ptrdiff_t, for gcc-4.6; patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105994 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
f4a7bf4ec3faf80a9c890408d574a3d2e7ed1e1e 15-Jun-2010 Daniel Dunbar <daniel@zuster.org> Add <cstddef> include to get ptrdiff_t, for gcc-4.6; patch by Dimitry Andric.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105994 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
4c5ba5264f5e636c896f7535d1316f6bbea8198f 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> VMOVQQ and VMOVQQQQ are pseudo instructions and not predicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105990 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
14f1d4e74bd52b044a2c2bb6dd8df20b0480e633 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> VMOVQQ and VMOVQQQQ are pseudo instructions and not predicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105990 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
bb8a0a630475339df6375468255da8157e9c9e0b 15-Jun-2010 Jim Grosbach <grosbach@apple.com> Make sure to skip dbg_value instructions when finding an insertion point for
the combined load/store instruction. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105982 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
400c95fe3802821815c69077e48c8fd276ec6494 15-Jun-2010 Jim Grosbach <grosbach@apple.com> Make sure to skip dbg_value instructions when finding an insertion point for
the combined load/store instruction. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105982 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
a70a91b9867f7e8fc3af65e14e2c4e0f30c2d55d 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename functions referring to VMOV immediates to refer to NEON "modified
immediate" operands. These functions have so far only been used for VMOV
but they also apply to other NEON instructions with modified immediate
operands. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105969 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
d3c4284849ccfbc501483ec3c0810d1d9ef853b6 15-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename functions referring to VMOV immediates to refer to NEON "modified
immediate" operands. These functions have so far only been used for VMOV
but they also apply to other NEON instructions with modified immediate
operands. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105969 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
a394cd6dac8c0187bb25028649fabc77fe781aa1 12-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add a missing bitcast. This code used to only handle conversions between
i64 and f64 types, but now it also handle Neon vector types, so the f64 result
of VMOVDRR may need to be converted to a Neon type. Radar 8084742.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105845 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1114f568bc35cf13064c864df44194630449bec5 12-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add a missing bitcast. This code used to only handle conversions between
i64 and f64 types, but now it also handle Neon vector types, so the f64 result
of VMOVDRR may need to be converted to a Neon type. Radar 8084742.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105845 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
73e9f2e91b86c25a1b908e7dc9a65c2d84339e81 11-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add instruction encoding for the Neon VMOV immediate instruction. This changes
the machine instruction representation of the immediate value to be encoded
into an integer with similar fields as the actual VMOV instruction. This makes
things easier for the disassembler, since it can just stuff the bits into the
immediate operand, but harder for the asm printer since it has to decode the
value to be printed. Testcase for the encoding will follow later when MC has
more support for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105836 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMISelLowering.cpp
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassemblerCore.cpp
1a913ed17875d1a0fb490e1266b74c057c76a94b 11-Jun-2010 Bob Wilson <bob.wilson@apple.com> Add instruction encoding for the Neon VMOV immediate instruction. This changes
the machine instruction representation of the immediate value to be encoded
into an integer with similar fields as the actual VMOV instruction. This makes
things easier for the disassembler, since it can just stuff the bits into the
immediate operand, but harder for the asm printer since it has to decode the
value to be printed. Testcase for the encoding will follow later when MC has
more support for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105836 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMISelLowering.cpp
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassemblerCore.cpp
b50cf05f6bb9106ee625baa08e5c196cb977315f 10-Jun-2010 Evan Cheng <evan.cheng@apple.com> Delete code that's not safe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105774 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
aa4b5429ef0c174dbff52b6e67b78c0a68f2025e 10-Jun-2010 Evan Cheng <evan.cheng@apple.com> Delete code that's not safe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105774 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
3a208ae6a713461313e373c8e486b74e143829c9 10-Jun-2010 Jim Grosbach <grosbach@apple.com> be slightly more subtle about skipping dbg_value instructions; otherwise, if a
dbg_value immediately follows a sequence of ldr/str instructions that should
be combined into an ldm/stm and is the last instruction in the block, then
combine may end up being skipped.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105758 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
db03adb34615331c6ef55ebbd80d8bc750deefe0 10-Jun-2010 Jim Grosbach <grosbach@apple.com> be slightly more subtle about skipping dbg_value instructions; otherwise, if a
dbg_value immediately follows a sequence of ldr/str instructions that should
be combined into an ldm/stm and is the last instruction in the block, then
combine may end up being skipped.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105758 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
88287d63dcf967e22d0e235765743e4f09e3ce5d 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow target to place 2-address pass inserted copies in better spots. Thumb2 will use this to try to avoid breaking up IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105745 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
68fc2daf8fa446be04d2ed2b3cbb1b00c382458f 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow target to place 2-address pass inserted copies in better spots. Thumb2 will use this to try to avoid breaking up IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105745 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
ac722a52bc3c3d52557f6bfbba7d2ad07ee332fe 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105677 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
34aa4238142371d35d3774435b21cb966b2a2c28 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105677 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8bf0e4870680e0e6043b8696b22b82eaf93cfd6c 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Thumb2 IT blocks are fairly expensive. When there are multiple selects using
the same condition, it's important to make sure they are scheduled together
to avoid forming multiple IT blocks. I'm adding a pre-regalloc pass that forms
IT blocks early (by re-scheduling instructions and split basic blocks) to
attempt to fix this. This is not turned on by default since I am not sure this
is the right fix.

Another issue is llvm selects are modeled as two-address conditional moves.
This can be very bad when the copies before the conditional moves are not
coalesced away. Teach IT formation pass to move the copies above the IT block
(when legal) to avoid breaking the IT block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105669 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
humb2ITBlockPass.cpp
d84712421121744797210a7814aafce8c5377d92 09-Jun-2010 Evan Cheng <evan.cheng@apple.com> Thumb2 IT blocks are fairly expensive. When there are multiple selects using
the same condition, it's important to make sure they are scheduled together
to avoid forming multiple IT blocks. I'm adding a pre-regalloc pass that forms
IT blocks early (by re-scheduling instructions and split basic blocks) to
attempt to fix this. This is not turned on by default since I am not sure this
is the right fix.

Another issue is llvm selects are modeled as two-address conditional moves.
This can be very bad when the copies before the conditional moves are not
coalesced away. Teach IT formation pass to move the copies above the IT block
(when legal) to avoid breaking the IT block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105669 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
humb2ITBlockPass.cpp
c6afe24569131e628add7653391bad92ced2c25c 09-Jun-2010 Jim Grosbach <grosbach@apple.com> fix copy/paste/modify think-o

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105653 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
6335ac67b60c69c7314b1fb16721ae4a51043fc0 09-Jun-2010 Jim Grosbach <grosbach@apple.com> fix copy/paste/modify think-o

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105653 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
b5e6eed4be00564e022fea3f1bc684533fd38607 09-Jun-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Reapply r105521, this time appending "LLU" to 64 bit
immediates to avoid breaking the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105652 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassemblerCore.h
99405df044f2c584242e711cc9023ec90356da82 09-Jun-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Reapply r105521, this time appending "LLU" to 64 bit
immediates to avoid breaking the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105652 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassemblerCore.h
351a6ed29ff31726e7cfc8b14827aa46b0c60683 08-Jun-2010 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105634 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
b84adb3b80c5b17befffd4f1d31ec5331ddcb792 08-Jun-2010 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105634 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
28188e1c4986d9e4985f0f4a8ce268743eb94631 08-Jun-2010 Shih-wei Liao <sliao@google.com> Git hiccup. Retry....

Change-Id: I5a329137a43f36bab32ea62386ade11da550c0b0
ndroid.mk
smParser/Android.mk
smPrinter/Android.mk
isassembler/Android.mk
argetInfo/Android.mk
c156bc696311928af01132d159b9e307436779bb 08-Jun-2010 Shih-wei Liao <sliao@google.com> Fix llvm.mk and the other 49 mk files

Change-Id: I5aa02363c1083297d163a575f5a35c495f950230
ndroid.mk
smParser/Android.mk
smPrinter/Android.mk
isassembler/Android.mk
argetInfo/Android.mk
f4c4adfd7271437b3ba269685d31031a3b73281d 08-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105591 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
dd726e5bce1d7e612d8de5c4782409858f915b37 08-Jun-2010 Bob Wilson <bob.wilson@apple.com> Fix up a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105591 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
945161acde5b78f7310276c350d44fb825cd9a13 08-Jun-2010 Bob Wilson <bob.wilson@apple.com> Further changes for Neon vector shuffles:
- change isShuffleMaskLegal to show that all shuffles with 32-bit and 64-bit
elements are legal
- the Neon shuffle instructions do not support 64-bit elements, but we were
not checking for that before lowering shuffles to use them
- remove some 64-bit element vduplane patterns that are no longer needed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105586 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
53dd2454d5a38af455a9b23a16b0cca8e691b070 08-Jun-2010 Bob Wilson <bob.wilson@apple.com> Further changes for Neon vector shuffles:
- change isShuffleMaskLegal to show that all shuffles with 32-bit and 64-bit
elements are legal
- the Neon shuffle instructions do not support 64-bit elements, but we were
not checking for that before lowering shuffles to use them
- remove some 64-bit element vduplane patterns that are no longer needed


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105586 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
1f4a831994cc33a23be2716f312e0c568791d48b 07-Jun-2010 Jim Grosbach <grosbach@apple.com> Handle dbg_value instructions (i.e., skip them) when generating IT blocks.
rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105557 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
8077e76f934d575437a55315a0d5fcdcab6d6608 07-Jun-2010 Jim Grosbach <grosbach@apple.com> Handle dbg_value instructions (i.e., skip them) when generating IT blocks.
rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105557 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
d6b67b086e22513262254c0f1b5cf056e84ac72e 05-Jun-2010 Chris Lattner <sabre@nondot.org> revert r105521, which is breaking the buildbots with stuff like this:

In file included from X86InstrInfo.cpp:16:
X86GenInstrInfo.inc:2789: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2790: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2792: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2793: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2808: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2809: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2816: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2817: error: integer constant is too large for 'long' type



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105524 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassemblerCore.h
1087f54ddb70bd2a7ab62608161e4a3f0c345935 05-Jun-2010 Chris Lattner <sabre@nondot.org> revert r105521, which is breaking the buildbots with stuff like this:

In file included from X86InstrInfo.cpp:16:
X86GenInstrInfo.inc:2789: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2790: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2792: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2793: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2808: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2809: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2816: error: integer constant is too large for 'long' type
X86GenInstrInfo.inc:2817: error: integer constant is too large for 'long' type



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105524 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassemblerCore.h
2525d7f040971a06e4e36f946dbd6bcbd722c3b5 05-Jun-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Initial AVX support for some instructions. No patterns matched
yet, only assembly encoding support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105521 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassemblerCore.h
3eca98bb3ab1ec27ab8763298c416d282cdaa261 05-Jun-2010 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Initial AVX support for some instructions. No patterns matched
yet, only assembly encoding support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105521 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
isassembler/ARMDisassemblerCore.h
0f57ab63e04de9405b02066027aebb898ee3739e 05-Jun-2010 Dale Johannesen <dalej@apple.com> Improvements to tail call code. No functional effect
unless using -arm-tail-calls.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105515 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cf296fa1629f02e63aa1264a619a65cfc66ef173 05-Jun-2010 Dale Johannesen <dalej@apple.com> Improvements to tail call code. No functional effect
unless using -arm-tail-calls.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105515 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8a54f3e1f79c1e57e76a1cc53c6c5697374ea7b5 04-Jun-2010 Shih-wei Liao <sliao@google.com> Initial slang.

Change-Id: I4f84a741e5fbc440cd4c251406d2b611a237f713
ndroid.mk
smPrinter/Android.mk
argetInfo/Android.mk
ed426cc1234231c434523439ef1a8d87a0323e22 04-Jun-2010 Dale Johannesen <dalej@apple.com> More thoroughly disable tails calls by default.
8060143, although this doesn't fix the real problem with tail call.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105472 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8fa8e7fe95db6a8c8581ccfe9db2c9faac819f8d 04-Jun-2010 Dale Johannesen <dalej@apple.com> More thoroughly disable tails calls by default.
8060143, although this doesn't fix the real problem with tail call.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105472 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b858f76cf5c27bed2a81f6982bafa86b51dc9d8b 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Another fix to prevent debug info from affecting codegen. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105470 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
8af44b687b0ee552b696361e1ab4b2c178ff6f9e 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Another fix to prevent debug info from affecting codegen. rdar://7797940

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105470 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
c4b03875964b621cfb2dbe0ada3ceb054935d1d2 04-Jun-2010 Jim Grosbach <grosbach@apple.com> more dbg_value adjustments so debug info doesn't affect codegen

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105454 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
958e4e1967838766d327f1112e5b4900be939275 04-Jun-2010 Jim Grosbach <grosbach@apple.com> more dbg_value adjustments so debug info doesn't affect codegen

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105454 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
2f61019ceb041eaef447b5b358a4c33aff89a48d 04-Jun-2010 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105441 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
d089a7ac70397ea41fe6128639dc54b8e273ed60 04-Jun-2010 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105441 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
4a4ebb84467bc63f5c935ac5269f9c965af11c46 04-Jun-2010 Bob Wilson <bob.wilson@apple.com> For NEON vectors with 32- or 64-bit elements, select BUILD_VECTORs and
VECTOR_SHUFFLEs to REG_SEQUENCE instructions. The standard ISD::BUILD_VECTOR
node corresponds closely to REG_SEQUENCE but I couldn't use it here because
its operands do not get legalized. That is pretty awful, but I guess it
makes sense for other targets. Instead, I have added an ARM-specific version
of BUILD_VECTOR that will have its operands properly legalized.
This fixes the rest of Radar 7872877.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105439 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
40cbe7d5d41d22d32e8ce773548f510fd1ee0ed9 04-Jun-2010 Bob Wilson <bob.wilson@apple.com> For NEON vectors with 32- or 64-bit elements, select BUILD_VECTORs and
VECTOR_SHUFFLEs to REG_SEQUENCE instructions. The standard ISD::BUILD_VECTOR
node corresponds closely to REG_SEQUENCE but I couldn't use it here because
its operands do not get legalized. That is pretty awful, but I guess it
makes sense for other targets. Instead, I have added an ARM-specific version
of BUILD_VECTOR that will have its operands properly legalized.
This fixes the rest of Radar 7872877.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105439 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
c038c98ca7c495eaaeeecb9e0b82698891363ef4 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Teach the ARM load-store optimizer to deal with dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105427 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3de755bb407f91c494ae675fa6408a29b1954a52 04-Jun-2010 Jim Grosbach <grosbach@apple.com> Teach the ARM load-store optimizer to deal with dbg_value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105427 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
4ee77f2e3f64eb92b1c7601a054d033171eacc4e 03-Jun-2010 Dale Johannesen <dalej@apple.com> Early implementation of tail call for ARM.
A temporary flag -arm-tail-calls defaults to off,
so there is no functional change by default.
Intrepid users may try this; simple cases work
but there are bugs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105413 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
51e28e634880849ed9f7c02e93c08d25dd70291b 03-Jun-2010 Dale Johannesen <dalej@apple.com> Early implementation of tail call for ARM.
A temporary flag -arm-tail-calls defaults to off,
so there is no functional change by default.
Intrepid users may try this; simple cases work
but there are bugs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105413 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
d2776e0f42e69a90cd99e134481505520973584b 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly change the meaning of the reMaterialize target hook when the original
instruction defines subregisters.

Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.

Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:

%reg1234:foo = FLAP %reg1234<imp-def>

will reMaterialize(%reg3333, bar) like this:

%reg3333:bar-foo = FLAP %reg333:bar<imp-def>

Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105358 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
9edf7deb37f0f97664f279040fa15d89f32e23d9 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly change the meaning of the reMaterialize target hook when the original
instruction defines subregisters.

Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.

Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:

%reg1234:foo = FLAP %reg1234<imp-def>

will reMaterialize(%reg3333, bar) like this:

%reg3333:bar-foo = FLAP %reg333:bar<imp-def>

Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105358 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
8ff4917b26a45db09087b5c994b11bd5214789cd 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMRegisterInfo.td
RMScheduleV6.td
humb1RegisterInfo.h
humb2InstrInfo.cpp
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMRegisterInfo.td
RMScheduleV6.td
humb1RegisterInfo.h
humb2InstrInfo.cpp
9699a4f87d05daf8809924950a4301a2f93058ad 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the TargetRegisterClass member from CalleeSavedInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105344 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
42d075c4fb21995265961501cec9ff6e3fb497ce 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Remove the TargetRegisterClass member from CalleeSavedInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105344 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
89e6290f4307712cdf70249b099f9a9df0b407f5 02-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename canCombinedSubRegIndex method to something more grammatically correct
and tidy up the comment describing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105339 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
91a74da036d3a9442953ae1de3e797a50da4ccf0 02-Jun-2010 Bob Wilson <bob.wilson@apple.com> Rename canCombinedSubRegIndex method to something more grammatically correct
and tidy up the comment describing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105339 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
26c20ff4b09ec5508622be0837408516d2857201 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Replace ARM's getCalleeSavedRegClasses with a simpler solution

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105335 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
20fae651816916000c47b78843f22fd259ba4216 02-Jun-2010 Rafael Espindola <rafael.espindola@gmail.com> Replace ARM's getCalleeSavedRegClasses with a simpler solution

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105335 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
be3e42114d3c7b2ae7396da5fcdb192b5939b5b6 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Some A9 load/store cleanups

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105109 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
4ed81ecbcd139fe13985a1b962f6cd522b90b79e 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Some A9 load/store cleanups

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105109 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
ad64f2d67f34d25a9cd034202457ff54e47a3bde 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Some rough approximations for load/stores on A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105108 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
8207fce96f44f4e0246781eec909ffbe4fd9ab7f 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Some rough approximations for load/stores on A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105108 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
0ab44bf02562525d04a5eb9970b438c46f46cad7 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> NEON/VFP stuff can be issued only via Pipe1 on A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105107 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
1098ef5fa46bf212e49306ec9f6f0c791cab2077 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> NEON/VFP stuff can be issued only via Pipe1 on A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105107 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
0d83b588da07f9fe815d2fcd16d954498f517328 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some integer instruction itineraries for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105106 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
1845a387e104c8b1ad5bb38ccea345f333dcc644 29-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some integer instruction itineraries for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105106 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleA9.td
c2d375ac4db07e84bec72f589d77647ddfd65a29 29-May-2010 Evan Cheng <evan.cheng@apple.com> Schedule high latency instructions for latency reduction even if they are not vfp / NEON instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105060 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c10f5434b4ad0758f948c52c18d5740c7f44e8b3 29-May-2010 Evan Cheng <evan.cheng@apple.com> Schedule high latency instructions for latency reduction even if they are not vfp / NEON instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105060 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
878fa5b3b97b7c3234c67b5b7afe9d98a792cee8 28-May-2010 Jim Grosbach <grosbach@apple.com> correct retattr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bc213209bf3dd5d0b6262464e468fe0d685b24e0 28-May-2010 Jim Grosbach <grosbach@apple.com> correct retattr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
099bac5fc77217992b73be52cc8bd3db010ac2ea 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
04bf1fe000c4b100251fdb3f3dcf2810fa546942 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
91a0905536ad0c5ee542b19726aea8244835b247 28-May-2010 Bob Wilson <bob.wilson@apple.com> Add the cc_out operand for t2RSBrs instructions. I missed this when I changed
the instruction class for t2RSB to add that operand in svn r104582.
Radar 8033757.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104907 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
13ef8408073e00d3ae04067deee79721c62af209 28-May-2010 Bob Wilson <bob.wilson@apple.com> Add the cc_out operand for t2RSBrs instructions. I missed this when I changed
the instruction class for t2RSB to add that operand in svn r104582.
Radar 8033757.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104907 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1f2914c7abfcd183e1a4bd74d5378c0b4a92b0e6 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
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
5f3b96de192d111dbf648502f7eb6e670f7d57f7 28-May-2010 Evan Cheng <evan.cheng@apple.com> Use report_fatal_error, not llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
12616727c71721f480f69026d88a58a067d89824 28-May-2010 Evan Cheng <evan.cheng@apple.com> Use report_fatal_error, not llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104899 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ae810412a11fc5c29b2e0c452bccf28d41263528 28-May-2010 Jim Grosbach <grosbach@apple.com> back out 104862/104869. Can reuse stacksave after all. Very cool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104897 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
a65850230af7f13d9111450f645886b968dea2a2 28-May-2010 Jim Grosbach <grosbach@apple.com> back out 104862/104869. Can reuse stacksave after all. Very cool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104897 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c2cb3704c1cfe80a3466f222662c690828a89593 28-May-2010 Evan Cheng <evan.cheng@apple.com> llvm can't correctly support 'H', 'Q' and 'R' modifiers. Just mark it an error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104891 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
84f60b7359e1aa90794bb19de2bbf4d25dc2f01d 28-May-2010 Evan Cheng <evan.cheng@apple.com> llvm can't correctly support 'H', 'Q' and 'R' modifiers. Just mark it an error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104891 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
314d7ebaee7eccdc0d8ec10fbd13634eb3d8ca14 27-May-2010 Bob Wilson <bob.wilson@apple.com> Fix some bad fall-throughs in a switch statement. Both the 'Q' and 'R' cases
should fall through to the 'H' case, but instead 'Q' was falling through to 'R'
so that it would do the wrong thing for a big-endian ARM target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104883 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d984eb6073d5445f08fb0cea67a668b1b5e888e0 27-May-2010 Bob Wilson <bob.wilson@apple.com> Fix some bad fall-throughs in a switch statement. Both the 'Q' and 'R' cases
should fall through to the 'H' case, but instead 'Q' was falling through to 'R'
so that it would do the wrong thing for a big-endian ARM target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104883 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e09ee5c34f29616c2bd649b466551348449c74cf 27-May-2010 Jim Grosbach <grosbach@apple.com> add ISD::STACKADDR to get the current stack pointer. Will be used by sjlj EH
to update the jmpbuf in the presence of VLAs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104862 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ad9aaf038e1886013ef7118608182c479c986a97 27-May-2010 Jim Grosbach <grosbach@apple.com> add ISD::STACKADDR to get the current stack pointer. Will be used by sjlj EH
to update the jmpbuf in the presence of VLAs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104862 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
89b515b1412d0e7b1492aeebcd89a0845e01e382 27-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Give SubRegIndex names to all ARM subregisters. This will be required by
TableGen shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104754 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
c8b9f6ce232fcdd38d11c48b51e62fe02d8797ed 27-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Give SubRegIndex names to all ARM subregisters. This will be required by
TableGen shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104754 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
cc38a49327e841070b34fe1a92c1191a791887bb 26-May-2010 Jim Grosbach <grosbach@apple.com> Adjust eh.sjlj.setjmp to properly have a chain and to have an opcode entry in
ISD::. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104734 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
23ff7cff52702a8bff904d8ab4c9ca67cc19d6ca 26-May-2010 Jim Grosbach <grosbach@apple.com> Adjust eh.sjlj.setjmp to properly have a chain and to have an opcode entry in
ISD::. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104734 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
7b61d2d98875ee7cfd3402215bf85bd23d3343cd 26-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace the SubRegSet tablegen class with a less error-prone mechanism.

A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.

CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.

It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104704 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
ca561ffcf320e9dbfafcac5efcee81471f3259c3 26-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace the SubRegSet tablegen class with a less error-prone mechanism.

A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.

CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.

It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104704 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
37e3887649dc9013835f80283609b9709c2094a5 26-May-2010 Shih-wei Liao <sliao@google.com> Coding style change (Adding 1 missing space.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104670 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
9f3b6a381a4f70e8af7ddd8ea38981c6795833d4 26-May-2010 Shih-wei Liao <sliao@google.com> Coding style change (Adding 1 missing space.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104670 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
63ff440fd17c797cebb3c64c7198dad46ef7c90a 26-May-2010 Shih-wei Liao <sliao@google.com> Adding the missing implementation for ARM::SBFX and ARM::UBFX.
Fixing http://llvm.org/bugs/show_bug.cgi?id=7225.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104667 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
45469f38b602c8f10ea37dec8d0a4dbb725cf101 26-May-2010 Shih-wei Liao <sliao@google.com> Adding the missing implementation for ARM::SBFX and ARM::UBFX.
Fixing http://llvm.org/bugs/show_bug.cgi?id=7225.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104667 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
7a3d6753afec666711ff4c41ab95a490ba23f37d 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
6befc4388b163a196007644913cfe921d7b5ac26 26-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Replace the SubRegSet tablegen class with a less error-prone mechanism."

This reverts commit 104654.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104660 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
b555609e73f5091bf8180c0875fb1fa6c5ad0e7a 26-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Replace the SubRegSet tablegen class with a less error-prone mechanism."

This reverts commit 104654.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104660 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
dd65ed483487d5c4e6b3f16eaa70a74362864893 26-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace the SubRegSet tablegen class with a less error-prone mechanism.

A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.

CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.

It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104654 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
6a45d681e53a99b4c4f63e0b1664626a596a8151 26-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace the SubRegSet tablegen class with a less error-prone mechanism.

A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.

CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.

It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104654 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
ac79ed164b7f70ab2f16557c7d4eed7e9db3063a 26-May-2010 Shih-wei Liao <sliao@google.com> Adding the missing implementation of Bitfield's "clear" and "insert".
Fixing http://llvm.org/bugs/show_bug.cgi?id=7222.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104653 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
6d37a29588e9a48d81480501f895ac627bf60201 26-May-2010 Shih-wei Liao <sliao@google.com> Adding the missing implementation of Bitfield's "clear" and "insert".
Fixing http://llvm.org/bugs/show_bug.cgi?id=7222.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104653 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
521a8d4fa73593c22976fc4ad509d46840ef512b 26-May-2010 Shih-wei Liao <sliao@google.com> To handle s* registers in emitVFPLoadStoreMultipleInstruction().
Fixing http://llvm.org/bugs/show_bug.cgi?id=7221.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104652 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5170b71143d99a650921cb87223a0b3f46a74fb4 26-May-2010 Shih-wei Liao <sliao@google.com> To handle s* registers in emitVFPLoadStoreMultipleInstruction().
Fixing http://llvm.org/bugs/show_bug.cgi?id=7221.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104652 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5157ceb81fb9497b7dff69b2474bd5e4254fef88 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove NumberHack entirely.

SubRegIndex instances are now numbered uniquely the same way Register instances
are - in lexicographical order by name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104627 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
4fda9670f0a9cd448d1905ab669421316b8864c5 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove NumberHack entirely.

SubRegIndex instances are now numbered uniquely the same way Register instances
are - in lexicographical order by name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104627 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
47626de5233ae809b67cab19679c49874d0f2804 25-May-2010 Zonr Chang <zonr.xchg@gmail.com> Add missing implementation to the materialization of VFP misc. instructions (vmrs, vmsr and vmov (immediate))

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104588 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
f3c770a2cb39e3293992f017c23539f293286bcc 25-May-2010 Zonr Chang <zonr.xchg@gmail.com> Add missing implementation to the materialization of VFP misc. instructions (vmrs, vmsr and vmov (immediate))

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104588 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5d392dd93e023f9c14353ea84e2db717792db4bd 25-May-2010 Zonr Chang <zonr.xchg@gmail.com> Add support to MOVimm32 using movt/movw for ARM JIT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104587 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMRelocations.h
f86399be0c2cd095ebaa80dcc0180dab45ec263c 25-May-2010 Zonr Chang <zonr.xchg@gmail.com> Add support to MOVimm32 using movt/movw for ARM JIT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104587 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMRelocations.h
1b468abc07f76ea922eea6a7b9a5467c96e50ada 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
RMInstrThumb2.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
RMInstrThumb2.td
b86e6e746cb737a404ff899174a9e6aac8850e2e 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
RMInstrThumb2.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
RMInstrThumb2.td
7c56214077521f8bd8b820684dcc3263e81d6fea 25-May-2010 Bob Wilson <bob.wilson@apple.com> Clean up indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104580 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ab3912e3ce5a58a6dbdc2780ae489162faa5452d 25-May-2010 Bob Wilson <bob.wilson@apple.com> Clean up indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104580 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6ce14ee8be65cdbcbaca5e235c3eb28e5ec59170 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use enums instead of literals in the ARM backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104573 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
smPrinter/ARMAsmPrinter.cpp
e00fa64c16f40230d76417be8f09166b7c84c52d 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use enums instead of literals in the ARM backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104573 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
smPrinter/ARMAsmPrinter.cpp
9a8a51545c3e8eeeda47a53e5ba70a79ddd3deaf 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch SubRegSet to using symbolic SubRegIndices

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104571 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
33276d95ef4191663d8e6b972481f9faf37ce541 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch SubRegSet to using symbolic SubRegIndices

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104571 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
5ef47c6fc440a8894864248d7583fce03e9967b1 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
RMInstrThumb2.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
RMInstrThumb2.td
43e1f8e1e35a248ba631a1006f68297d8049d109 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Lose the dummies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104564 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
f27462eb29667d2327116caec5c2d57653888a0a 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Lose the dummies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104564 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
2aadda9d09368ccc1a44b795896f74df647752f8 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace the tablegen RegisterClass field SubRegClassList with an alist-like data
structure that represents a mapping without any dependencies on SubRegIndex
numbering.

This brings us closer to being able to remove the explicit SubRegIndex
numbering, and it is now possible to specify any mapping without inventing
*_INVALID register classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104563 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
09bc0298650c76db1a06e20ca84c1dcb34071600 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace the tablegen RegisterClass field SubRegClassList with an alist-like data
structure that represents a mapping without any dependencies on SubRegIndex
numbering.

This brings us closer to being able to remove the explicit SubRegIndex
numbering, and it is now possible to specify any mapping without inventing
*_INVALID register classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104563 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
644f902eacb2c9ac0fd99ebd5e93e298e0aa68d8 24-May-2010 Bob Wilson <bob.wilson@apple.com> Clean up some extra whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104544 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
d303846e162e18e0f1fb02d3826dc4d38244f86a 24-May-2010 Bob Wilson <bob.wilson@apple.com> Clean up some extra whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104544 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
1c72147872643779249632583f5abbcc47bdc2c5 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
RMInstrThumb2.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
RMInstrThumb2.td
d66243ff34982809bffcf5bb533044f8c64c9ad9 24-May-2010 Evan Cheng <evan.cheng@apple.com> LR is in GPR, not tGPR even in Thumb1 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104518 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c7cf10c97ef08dc3dbe917e16908cc9bd3d888e6 24-May-2010 Evan Cheng <evan.cheng@apple.com> LR is in GPR, not tGPR even in Thumb1 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104518 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b3a1b9d01cf5eddca16cf2d073070494dbbdbe2f 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a few places that depended on the numeric value of subreg indices.
Add assertions in places that depend on consecutive indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104510 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.td
7bb31e3187c0ba5a076313e5fe9dd869500a6ecf 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a few places that depended on the numeric value of subreg indices.
Add assertions in places that depend on consecutive indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104510 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.td
204c1852a25a6329334caa8ebc0041ef3cbb57d0 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch ARMRegisterInfo.td to use SubRegIndex and eliminate the parallel enums
from ARMRegisterInfo.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104508 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONPreAllocPass.cpp
558661d2718cf5750907c449d36ff1231924a2d1 24-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch ARMRegisterInfo.td to use SubRegIndex and eliminate the parallel enums
from ARMRegisterInfo.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104508 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONPreAllocPass.cpp
74f5e7708bda2936249a57105303b589e4b11827 23-May-2010 Bob Wilson <bob.wilson@apple.com> VDUP doesn't support vectors with 64-bit elements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104455 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
069e4348685e5e7a472787fc9950a081633bf928 23-May-2010 Bob Wilson <bob.wilson@apple.com> VDUP doesn't support vectors with 64-bit elements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104455 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
32d1bb9fe7eadcd5088e8048cfd952fc6178604e 22-May-2010 Evan Cheng <evan.cheng@apple.com> Implement @llvm.returnaddress. rdar://8015977.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104421 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMISelLowering.h
humb1InstrInfo.cpp
humb1InstrInfo.h
2457f2c66184e978d4ed8fa9e2128effff26cb0b 22-May-2010 Evan Cheng <evan.cheng@apple.com> Implement @llvm.returnaddress. rdar://8015977.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104421 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelLowering.cpp
RMISelLowering.h
humb1InstrInfo.cpp
humb1InstrInfo.h
237b7dd26af11c4e0e8d1acc829cf12bfb50cd1a 22-May-2010 Jim Grosbach <grosbach@apple.com> Implement eh.sjlj.longjmp for ARM. Clean up the intrinsic a bit.
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104419 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
5eb195153950bc7ebfc30649494a78b2096b5ef8 22-May-2010 Jim Grosbach <grosbach@apple.com> Implement eh.sjlj.longjmp for ARM. Clean up the intrinsic a bit.
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104419 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
5ca56682f87008da5585a5c27c967e43de279d1d 22-May-2010 Bob Wilson <bob.wilson@apple.com> Recognize more BUILD_VECTORs and VECTOR_SHUFFLEs that can be implemented by
copying VFP subregs. This exposed a bunch of dead code in the *spill-q.ll
tests, so I tweaked those tests to keep that code from being optimized away.
Radar 7872877.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104415 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
be751cfe9cbcc760e24599a59e5b9699d4d4f9e0 22-May-2010 Bob Wilson <bob.wilson@apple.com> Recognize more BUILD_VECTORs and VECTOR_SHUFFLEs that can be implemented by
copying VFP subregs. This exposed a bunch of dead code in the *spill-q.ll
tests, so I tweaked those tests to keep that code from being optimized away.
Radar 7872877.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104415 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f35de8139bfbacae63ae994e461eb7af3c413b10 21-May-2010 Evan Cheng <evan.cheng@apple.com> Change ARM scheduling default to list-hybrid if the target supports floating point instructions (and is not using soft float).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104307 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f7d87ee1584bffe361b39f8cec7a39131c8c4efc 21-May-2010 Evan Cheng <evan.cheng@apple.com> Change ARM scheduling default to list-hybrid if the target supports floating point instructions (and is not using soft float).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104307 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5373b294648bf0285621a82281f136578ba70082 21-May-2010 Evan Cheng <evan.cheng@apple.com> Allow targets more controls on what nodes are scheduled by reg pressure, what for latency in hybrid mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104293 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
1cc3984148be113c6e5e470f23c9ddbd37679c5f 21-May-2010 Evan Cheng <evan.cheng@apple.com> Allow targets more controls on what nodes are scheduled by reg pressure, what for latency in hybrid mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104293 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
cd182e19d1886d837407e6811187db30e88aa118 20-May-2010 Bob Wilson <bob.wilson@apple.com> Handle Neon v2f64 and v2i64 vector shuffles as register copies.
This fixes the remaining issue with pr7167.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104257 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
63b8845e786d1204d41952da938518baa3159a97 20-May-2010 Bob Wilson <bob.wilson@apple.com> Handle Neon v2f64 and v2i64 vector shuffles as register copies.
This fixes the remaining issue with pr7167.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104257 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a9d350eb0820423726b445a8b31dfe8b9830f6f3 19-May-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring: pull SchedPreference enum from TargetLowering.h to TargetMachine.h and put it in its own namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104147 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
211ffa13519cadfb7f9baf4c8447fa055bf38fe8 19-May-2010 Evan Cheng <evan.cheng@apple.com> Code refactoring: pull SchedPreference enum from TargetLowering.h to TargetMachine.h and put it in its own namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104147 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b90ee5d04e44f07f296034e2af58da76d8435e32 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
6744835a83389560a92234d8adc120942eec9999 19-May-2010 Evan Cheng <evan.cheng@apple.com> Use 'adr' for LEApcrel and LEApcrel. Mark LEApcrel re-materializable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104114 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
27fa722311f98f3ba55173aebf9bbd8b5acbc1e1 19-May-2010 Evan Cheng <evan.cheng@apple.com> Use 'adr' for LEApcrel and LEApcrel. Mark LEApcrel re-materializable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104114 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b8e418ae381cfdd209d75671d21609110fd8da3a 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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
28006e3787efd57ed3e2b671f1b352881a3a2fc8 19-May-2010 Evan Cheng <evan.cheng@apple.com> Target instruction selection should copy memoperands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104110 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3c3195cbf19030ae3b1c854f3a3cd5fcef520e07 19-May-2010 Evan Cheng <evan.cheng@apple.com> Target instruction selection should copy memoperands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104110 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
05efb04e4d6e6a02ed652ad4667af7c7e9bfeec6 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
e0dbb624960f848bac8e74be2e78cacaaaff5357 18-May-2010 Evan Cheng <evan.cheng@apple.com> Sink dag combine's post index load / store code that swap base ptr and index into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104060 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
28dad2a5caccf579f7430acd3af8fa6e6f8b575e 18-May-2010 Evan Cheng <evan.cheng@apple.com> Sink dag combine's post index load / store code that swap base ptr and index into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104060 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
01a9e0f3b686c9ba2aa4d48021e1afeb1ec22419 18-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> ARMBaseRegisterInfo::estimateRSStackSizeLimit() could return prematurely with a
too large limit.

The function would return immediately when finding an addrmode 3/5 instruction.
It needs to keep scanning in case there is an addrmode 6 instruction which drops
the limit to 0.

A test case is very difficult to produce because it will only fail when the
scavenger is used.

rdar://problem/7894847

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103995 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
535af4a320ba169342c87433841dc64fbdcd72b3 18-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> ARMBaseRegisterInfo::estimateRSStackSizeLimit() could return prematurely with a
too large limit.

The function would return immediately when finding an addrmode 3/5 instruction.
It needs to keep scanning in case there is an addrmode 6 instruction which drops
the limit to 0.

A test case is very difficult to produce because it will only fail when the
scavenger is used.

rdar://problem/7894847

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103995 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
84d010929a14d8b4fee5dff78468aa1bc163282c 17-May-2010 Evan Cheng <evan.cheng@apple.com> vmov of immediates are trivially re-materializable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103982 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
47006be498e256cc8c356a2325c918b825ab2ab7 17-May-2010 Evan Cheng <evan.cheng@apple.com> vmov of immediates are trivially re-materializable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103982 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
96a67704edb141ad41fd4609eb49365d401a2cd8 17-May-2010 Bob Wilson <bob.wilson@apple.com> Fix a regression in 464.h264 for thumb1 and thumb2 nightly tests.
Obvious in retrospect but not fun to debug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103969 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7f43fd84db4dcb5b948b92ab4a92327c22093556 17-May-2010 Bob Wilson <bob.wilson@apple.com> Fix a regression in 464.h264 for thumb1 and thumb2 nightly tests.
Obvious in retrospect but not fun to debug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103969 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
6aa42b0256b14858bf869dcf3d99fed4f2c690ee 17-May-2010 Evan Cheng <evan.cheng@apple.com> Turn on -neon-reg-sequence by default.

Using NEON load / store multiple instructions will no longer create gobs of vmov of D registers!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103960 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
620612425082ab5d6c6016ae59f8ae9afc6c5776 17-May-2010 Evan Cheng <evan.cheng@apple.com> Turn on -neon-reg-sequence by default.

Using NEON load / store multiple instructions will no longer create gobs of vmov of D registers!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103960 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
29afe434bc80b290bced2dbb1bfdca8792f49923 17-May-2010 Evan Cheng <evan.cheng@apple.com> No reason not to run the NEON domain croassing fix up pass in thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103917 91177308-0d34-0410-b5e6-96231b3b80d8
EONMoveFix.cpp
9c207ac0dc3b2f6af9eac52de488d568a4f96291 17-May-2010 Evan Cheng <evan.cheng@apple.com> No reason not to run the NEON domain croassing fix up pass in thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103917 91177308-0d34-0410-b5e6-96231b3b80d8
EONMoveFix.cpp
5636a6e84251a36ec051353eb5f1c7c387ce6692 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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
45141181198840d6a4df48db6c338a5042692fcb 16-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Generalize the ARM DAG combiner of mul with constants to all power-of-two cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103901 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4878b8415fd524489b4bee5f90e969f6ccb253d4 16-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Generalize the ARM DAG combiner of mul with constants to all power-of-two cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103901 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d477a099287ec13a80a64a359a15c9057c12e400 16-May-2010 Evan Cheng <evan.cheng@apple.com> Model vst lane instructions with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103898 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
8f6de385d64922b6d42b91a4d63f862b33ca13e8 16-May-2010 Evan Cheng <evan.cheng@apple.com> Model vst lane instructions with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103898 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c579fc616a92f70dd5b238a9c55bda58618b606a 15-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Some cheap DAG combine goodness for multiplication with a particular constant.
This can be extended later on to handle more "complex" constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103881 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a9790d739a7970dd516c57f56d67cf9aa01b9d39 15-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Some cheap DAG combine goodness for multiplication with a particular constant.
This can be extended later on to handle more "complex" constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103881 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4c777120443be13cfab727aacc636e2e7d83b14b 15-May-2010 Anton Korobeynikov <asl@math.spbu.ru> "trap" pseudo-op turned out to be apple-local.
Temporary emit it as raw bytes until it will be added to binutils as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103878 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
418d1d954daf87965757f5aa5bf8d546d3e40a82 15-May-2010 Anton Korobeynikov <asl@math.spbu.ru> "trap" pseudo-op turned out to be apple-local.
Temporary emit it as raw bytes until it will be added to binutils as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103878 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
d5f7e4a4ab736e620110bd58ba859d096ec07f7c 15-May-2010 Evan Cheng <evan.cheng@apple.com> Model 128-bit vld lane with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103868 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7189fd03fa66642b58b1e88be385bedeff0ac91d 15-May-2010 Evan Cheng <evan.cheng@apple.com> Model 128-bit vld lane with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103868 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4e18478b4beb9e5aa81bb383041d1ec69400e66c 15-May-2010 Evan Cheng <evan.cheng@apple.com> v4i64 and v8i64 are only synthesizable when NEON is available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103855 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4782b1e2caf0030eab1112c12dd4a2ffca688ecd 15-May-2010 Evan Cheng <evan.cheng@apple.com> v4i64 and v8i64 are only synthesizable when NEON is available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103855 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
968b906bd404b338d0f2cfbc817c56fef170e378 15-May-2010 Evan Cheng <evan.cheng@apple.com> Allow TargetLowering::getRegClassFor() to be called on illegal types. Also
allow target to override it in order to map register classes to illegal
but synthesizable types. e.g. v4i64, v8i64 for ARM / NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103854 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
06b666c7056376b8aaf40be0dc00b97b2cfceb6c 15-May-2010 Evan Cheng <evan.cheng@apple.com> Allow TargetLowering::getRegClassFor() to be called on illegal types. Also
allow target to override it in order to map register classes to illegal
but synthesizable types. e.g. v4i64, v8i64 for ARM / NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103854 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
26e7e48dfc4e565cb30c7637ad7cf007ffbc482d 15-May-2010 Evan Cheng <evan.cheng@apple.com> Model 64-bit lane vld with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103851 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7092c2bfcb91c367b091e037f0568e249e1b0a57 15-May-2010 Evan Cheng <evan.cheng@apple.com> Model 64-bit lane vld with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103851 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
37f5064fd0e6e9524efc05736649b20d5ba0ec66 15-May-2010 Evan Cheng <evan.cheng@apple.com> Teach two-address pass to do some coalescing while eliminating REG_SEQUENCE
instructions.

e.g.
%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1027<def> = EXTRACT_SUBREG %reg1026, 6
%reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5
...
%reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12

After REG_SEQUENCE is eliminated, we are left with:

%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6
%reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5

The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't
know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the
target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger
sub-register (or combined to be reg1026 itself as is the case here). If it is possible,
it will be able to replace references of reg1026 with reg1029 + the larger sub-register
index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103835 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMRegisterInfo.h
RMRegisterInfo.td
EONPreAllocPass.cpp
b990a2f249196ad3e0cc451d40a45fc2f9278eaf 15-May-2010 Evan Cheng <evan.cheng@apple.com> Teach two-address pass to do some coalescing while eliminating REG_SEQUENCE
instructions.

e.g.
%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1027<def> = EXTRACT_SUBREG %reg1026, 6
%reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5
...
%reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12

After REG_SEQUENCE is eliminated, we are left with:

%reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
%reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6
%reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5

The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't
know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the
target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger
sub-register (or combined to be reg1026 itself as is the case here). If it is possible,
it will be able to replace references of reg1026 with reg1029 + the larger sub-register
index.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103835 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMRegisterInfo.h
RMRegisterInfo.td
EONPreAllocPass.cpp
ea089df6e30fb71bcff5403e86ea8bc17f11de0b 15-May-2010 Evan Cheng <evan.cheng@apple.com> Model VST*_UPD and VST*oddUPD pair with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103833 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
12c24690c7dc53cf6e6ca8cb062255e82d568edf 15-May-2010 Evan Cheng <evan.cheng@apple.com> Model VST*_UPD and VST*oddUPD pair with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103833 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b6d3f2514f08b9451a7b7fb8599c87aba6f0cb7f 14-May-2010 Bill Wendling <isanbard@gmail.com> Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
the variable actually tracks.

N.B., several back-ends are using "HasCalls" as being synonymous for something
that adjusts the stack. This isn't 100% correct and should be looked into.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103802 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b92187a4103dca24c3767c380f63593d1f6161a7 14-May-2010 Bill Wendling <isanbard@gmail.com> Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
the variable actually tracks.

N.B., several back-ends are using "HasCalls" as being synonymous for something
that adjusts the stack. This isn't 100% correct and should be looked into.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103802 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
40f4ccc80abe01e5b5af3c7a8e278f3429bc6e3b 14-May-2010 Evan Cheng <evan.cheng@apple.com> Model VLD*_UPD and VLD*odd_UPD pair with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103790 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
EONPreAllocPass.cpp
5c6aba2e3ac2239a3de85a77f09cdac9eef68467 14-May-2010 Evan Cheng <evan.cheng@apple.com> Model VLD*_UPD and VLD*odd_UPD pair with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103790 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
EONPreAllocPass.cpp
ee9f5c0a63197e6e3148f09b401f0056cdf1a179 14-May-2010 Shih-wei Liao <sliao@google.com> 3 fixes:
1. ubfx (lsb, width and src)
2. vbfx
3. vstm (If Si, NumRegs shouldn't be doubled. If Di, NumRegs *= 2)

Change-Id: Ib5d8f5498f069f597c7af8d2cf1a293d15ddf484
RMCodeEmitter.cpp
79599dec649aa4fbe90481ab26828f9b5575cacc 14-May-2010 Evan Cheng <evan.cheng@apple.com> Added a QQQQ register file to model 4-consecutive Q registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103760 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
22c687b6421d9cc03351ddb0c7fd3d45382bc01a 14-May-2010 Evan Cheng <evan.cheng@apple.com> Added a QQQQ register file to model 4-consecutive Q registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103760 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
db929f9a1234155ce719299e3ede36a5c05b33bc 14-May-2010 Evan Cheng <evan.cheng@apple.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103749 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7f687195175f01d820eea70e8a647a61d5b99fce 14-May-2010 Evan Cheng <evan.cheng@apple.com> Fix comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103749 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1feebb5df60f176a6338d45bef7cdf8b55aa2298 14-May-2010 Shih-wei Liao <sliao@google.com> Add "*2" to vstmia

Change-Id: I95e6eda70555757ca9378d508d0470b5ef0f64b2
RMCodeEmitter.cpp
520a99752caa9708012ada768303a20591716370 13-May-2010 Evan Cheng <evan.cheng@apple.com> Add comment about the pseudo registers QQ, each of which is a pair of Q registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103731 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
c4ca40eb5e632c5700fecc12ca02064429b842b0 13-May-2010 Evan Cheng <evan.cheng@apple.com> Add comment about the pseudo registers QQ, each of which is a pair of Q registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103731 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
86d13bed2afb33efa5b9d005e6601784fdffd6cb 13-May-2010 Bob Wilson <bob.wilson@apple.com> Fix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers.
Do not use those for Thumb1 functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103730 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
1190c14b547a1e275e80e43a6ad52178312adbd7 13-May-2010 Bob Wilson <bob.wilson@apple.com> Fix pr7110: For non-Darwin targets UnspilledCS1GPRs may include high registers.
Do not use those for Thumb1 functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103730 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f034392cf27727b6f43a5e6e9a35a4090c475660 13-May-2010 Shih-wei Liao <sliao@google.com> Fix vstmia instruction selection/emission problem.

Change-Id: I34137e9a3490fe8859201f727cce6df81ad93173
RMCodeEmitter.cpp
22ef75746a5a2c499e2da158b62069690aac213f 13-May-2010 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103694 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
1860e7dcfd98fb4b73c0933573195562978137ef 13-May-2010 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103694 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
b4593017814e15378b13fb0a693d1fa6a4d0a6c3 13-May-2010 Evan Cheng <evan.cheng@apple.com> Bring back VLD1q and VST1q and use them for reloading / spilling Q registers. This allows folding loads and stores into VMOVQ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103692 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
69b9f9883e10efa266d59a5dd2f4d99de92c6707 13-May-2010 Evan Cheng <evan.cheng@apple.com> Bring back VLD1q and VST1q and use them for reloading / spilling Q registers. This allows folding loads and stores into VMOVQ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103692 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
40562ccfe5586bee876bf26a9b931d0ff337392c 13-May-2010 Evan Cheng <evan.cheng@apple.com> Expand VMOVQQ into a pair of VMOVQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103684 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
d929f7773812535271ae6969331f8164c1f7f3b2 13-May-2010 Evan Cheng <evan.cheng@apple.com> Expand VMOVQQ into a pair of VMOVQ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103684 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
d8e697a06cc6b72c55ad95149abedf8d4713188d 13-May-2010 Evan Cheng <evan.cheng@apple.com> Mark some pattern-less instructions as neverHasSideEffects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103683 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
020cc1b4d0551a95b1f46046e4fb7cbd11a8678f 13-May-2010 Evan Cheng <evan.cheng@apple.com> Mark some pattern-less instructions as neverHasSideEffects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103683 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
b2e4a3f124cdf52c43e918f35e90d2d83ddcc2f7 13-May-2010 Evan Cheng <evan.cheng@apple.com> Fix some potential issues in the pseudo instruction expansion phase: copy implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103667 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
431300797b84600fc9b4eb8ca283277d3e0674eb 13-May-2010 Evan Cheng <evan.cheng@apple.com> Fix some potential issues in the pseudo instruction expansion phase: copy implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103667 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
57d4b224657e81a7a99ed1d4d89b216a533142ad 12-May-2010 Evan Cheng <evan.cheng@apple.com> Remove a dead fixme.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103642 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
a4d73d01c4850dce6a951228b13dcd8e733704b4 12-May-2010 Evan Cheng <evan.cheng@apple.com> Remove a dead fixme.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103642 91177308-0d34-0410-b5e6-96231b3b80d8
RMExpandPseudoInsts.cpp
5fc3053c3a78d6fd90c85c50efa5a28b82c81d5c 12-May-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for movi32 of global values to the new (MC) asm printer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103576 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
18c1021ec108722506125926087b1e5fcfb28046 12-May-2010 Rafael Espindola <rafael.espindola@gmail.com> Add support for movi32 of global values to the new (MC) asm printer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103576 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
43a693338d58381ae977086aedc3cb4f1b1d4f4d 12-May-2010 Shih-wei Liao <sliao@google.com> Implement bit field clear/insert. Constant pool fixes

Change-Id: Ie14c0679db2d8fa3a9a6a24d5217c5d9c4e7fd35
RMCodeEmitter.cpp
36e9f2eff323d79426a87fec5fcaaa771b920250 12-May-2010 Evan Cheng <evan.cheng@apple.com> vst instructions are modeled as this:
v1024 = REG_SEQUENCE ...
v1025 = EXTRACT_SUBREG v1024, 5
v1026 = EXTRACR_SUBREG v1024, 6
= VSTxx <addr>, v1025, v1026

The REG_SEQUENCE ensures the sources that feed into the VST instruction
are getting the right register allocation so they form a large super-
register. The extract_subreg will be coalesced away all would just work:
v1024 = REG_SEQUENCE ...
= VSTxx <addr>, v1024:5, v1024:6

The problem is if the coalescer isn't run, the extract_subreg instructions
would stick around and there is no assurance v1025 and v1026 will get the
right registers.

As a short term workaround, teach the NEON pre-allocation pass to transfer
the sub-register indices over. An alternative would be do it 2addr pass
when reg_sequence's are eliminated. But that *seems* wrong and require
updating liveness information.

Another alternative is to do this in the scheduler when the instructions are
created. But that would mean somehow the scheduler this has to be done for
correctness reason. That's yucky as well. So for now, we are leaving this
in the target specific pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103540 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
5bdc2aa264b38a4632cf1e4fef1f328b464147a5 12-May-2010 Evan Cheng <evan.cheng@apple.com> vst instructions are modeled as this:
v1024 = REG_SEQUENCE ...
v1025 = EXTRACT_SUBREG v1024, 5
v1026 = EXTRACR_SUBREG v1024, 6
= VSTxx <addr>, v1025, v1026

The REG_SEQUENCE ensures the sources that feed into the VST instruction
are getting the right register allocation so they form a large super-
register. The extract_subreg will be coalesced away all would just work:
v1024 = REG_SEQUENCE ...
= VSTxx <addr>, v1024:5, v1024:6

The problem is if the coalescer isn't run, the extract_subreg instructions
would stick around and there is no assurance v1025 and v1026 will get the
right registers.

As a short term workaround, teach the NEON pre-allocation pass to transfer
the sub-register indices over. An alternative would be do it 2addr pass
when reg_sequence's are eliminated. But that *seems* wrong and require
updating liveness information.

Another alternative is to do this in the scheduler when the instructions are
created. But that would mean somehow the scheduler this has to be done for
correctness reason. That's yucky as well. So for now, we are leaving this
in the target specific pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103540 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
057000a0279da7b4d63dc02daed2ea4066518dd8 11-May-2010 Evan Cheng <evan.cheng@apple.com> Avoid breaking vstd when reg_sequence is not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103513 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
9647f3d98159ead48e8e4a2e2c19cde4beb25300 11-May-2010 Evan Cheng <evan.cheng@apple.com> Avoid breaking vstd when reg_sequence is not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103513 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
87177829e96ec9552c8a426fffd40a3090e515e5 11-May-2010 Duncan Sands <baldrick@free.fr> I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it
to LLVM_LIBRARY_VISIBILITY and introduce LLVM_GLOBAL_VISIBILITY, which is
the opposite, for future use by dragonegg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103495 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.h
16d8f8bd919b72866e687d99f3aa94a140137c59 11-May-2010 Duncan Sands <baldrick@free.fr> I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it
to LLVM_LIBRARY_VISIBILITY and introduce LLVM_GLOBAL_VISIBILITY, which is
the opposite, for future use by dragonegg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103495 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.h
cfbb32346a7eca19d4dc00fd2c1a0248537b3497 11-May-2010 Dan Gohman <gohman@apple.com> Implement a bunch more TargetSelectionDAGInfo infrastructure.

Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and
EmitTargetCodeForMemmove out of TargetLowering and into
SelectionDAGInfo to exercise this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103481 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
ff7a562751604a9fe13efc75bd59622244b54d35 11-May-2010 Dan Gohman <gohman@apple.com> Implement a bunch more TargetSelectionDAGInfo infrastructure.

Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and
EmitTargetCodeForMemmove out of TargetLowering and into
SelectionDAGInfo to exercise this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103481 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
a39553c3cf2066ec0854fb7c908707695422ce6b 11-May-2010 Dan Gohman <gohman@apple.com> Remove the TargetLowering::getSubtarget() virtual function, which
was unused. TargetMachine::getSubtarget() is used instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103474 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
419e4f92635cfaa409282691437aff99062e4e0b 11-May-2010 Dan Gohman <gohman@apple.com> Remove the TargetLowering::getSubtarget() virtual function, which
was unused. TargetMachine::getSubtarget() is used instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103474 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
eae570ed4a2f43ae796772f3b197a8d8311b6918 11-May-2010 Evan Cheng <evan.cheng@apple.com> Select @llvm.trap to the special B with 1111 condition (i.e. trap) instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
fb3611daad2bdf9fd50fe5ef1167fe6a8c950031 11-May-2010 Evan Cheng <evan.cheng@apple.com> Select @llvm.trap to the special B with 1111 condition (i.e. trap) instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
f49da1d2f3e3fff59348bdce0bf17ddcbe3286a2 11-May-2010 Evan Cheng <evan.cheng@apple.com> Model some vst3 and vst4 with reg_sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103453 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
EONPreAllocPass.cpp
0ce537a9db2da085ab50b15d2454cb7cac460eb7 11-May-2010 Evan Cheng <evan.cheng@apple.com> Model some vst3 and vst4 with reg_sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103453 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
EONPreAllocPass.cpp
d98cffb9c2137a94d93966077b39922ff883c97e 10-May-2010 Evan Cheng <evan.cheng@apple.com> Model some vld3 instructions with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103437 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
EONPreAllocPass.cpp
e9e2ba05de573f926f1d054add7ddbf15eab178a 10-May-2010 Evan Cheng <evan.cheng@apple.com> Model some vld3 instructions with REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103437 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
EONPreAllocPass.cpp
a92b2f3024fb3ce131097bbd3704965dc1fbdd6d 10-May-2010 Evan Cheng <evan.cheng@apple.com> Model vld2 / vst2 with reg_sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103411 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
EONPreAllocPass.cpp
603afbfe2ac8ccc21283b149a76a81eb44b956b0 10-May-2010 Evan Cheng <evan.cheng@apple.com> Model vld2 / vst2 with reg_sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103411 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
EONPreAllocPass.cpp
501b22f305e2fed4379c5d1e9c52194a780fbe4c 07-May-2010 Jim Grosbach <grosbach@apple.com> Clean up the conditional for handling of sign_extend_inreg based on
whether the extract instructions are available.

rdar://7956878



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103277 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4b77f6a85a206f4a4cd23f8cdf710f2574a5ac42 07-May-2010 Jim Grosbach <grosbach@apple.com> Clean up the conditional for handling of sign_extend_inreg based on
whether the extract instructions are available.

rdar://7956878



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103277 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
79ccdd7de9deecafa8a5664ac1b588b90c85246d 07-May-2010 Evan Cheng <evan.cheng@apple.com> Use VLD2q32 / VST2q32 to reload / spill QQ (pair of Q) registers when stack slot is sufficiently aligned. Use VLDMD / VSTMD otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103235 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
435d4991779d6a47cadff4ea670b490d8507d6c4 07-May-2010 Evan Cheng <evan.cheng@apple.com> Use VLD2q32 / VST2q32 to reload / spill QQ (pair of Q) registers when stack slot is sufficiently aligned. Use VLDMD / VSTMD otherwise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103235 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
aef3d93b3a69284b1ac517e72fcc8b1b11e6653a 07-May-2010 Evan Cheng <evan.cheng@apple.com> Use VSTMD / VLDMD for spills and reloads of Q registers instead of VSTMQ / VLDQ. The later are aliases which ought to be eliminated but we can't because they are used for storing and loading v2f64 values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103234 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
07a6d9391c74117ae79f832fd840deacab737b40 07-May-2010 Evan Cheng <evan.cheng@apple.com> Use VSTMD / VLDMD for spills and reloads of Q registers instead of VSTMQ / VLDQ. The later are aliases which ought to be eliminated but we can't because they are used for storing and loading v2f64 values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103234 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b64842b529f761402ff08a19c23393123796d6fe 07-May-2010 Evan Cheng <evan.cheng@apple.com> Remove VLD1q and VST1q for reloading and spilling Q registers. Just use VLD1q64 / VST1q64 and reference sub-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103218 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
c10b5afbe8138b0fdf3af4ed3e1ddf96cf3cb4cb 07-May-2010 Evan Cheng <evan.cheng@apple.com> Remove VLD1q and VST1q for reloading and spilling Q registers. Just use VLD1q64 / VST1q64 and reference sub-registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103218 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
75a44ec07c056f9bcf17368b6643810ecfbe1264 06-May-2010 Dan Gohman <gohman@apple.com> Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it
doesn't have to guess.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
EONPreAllocPass.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
34dcc6fadca0a1117cdbd0e9b35c991a55b6e556 06-May-2010 Dan Gohman <gohman@apple.com> Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it
doesn't have to guess.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
EONPreAllocPass.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
1f8534d080a425fa232552decf8012a4d6a95419 06-May-2010 Evan Cheng <evan.cheng@apple.com> Add argument TargetRegisterInfo to loadRegFromStackSlot and storeRegToStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103193 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
746ad69e088176819981b4b2c5ac8dcd49f5e60e 06-May-2010 Evan Cheng <evan.cheng@apple.com> Add argument TargetRegisterInfo to loadRegFromStackSlot and storeRegToStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103193 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
da33451615121df126298b41f4ca17f020090e2e 06-May-2010 Bob Wilson <bob.wilson@apple.com> Add a missing break statement to fix unintentional fall-through
(replacing the previous patch for the same issue).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103183 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
429009b0f1bef035b8ad1705edb7f1741ddaa427 06-May-2010 Bob Wilson <bob.wilson@apple.com> Add a missing break statement to fix unintentional fall-through
(replacing the previous patch for the same issue).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103183 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
82e8f76bc0c1fa402eddf85a25d2533e32376474 06-May-2010 Jim Grosbach <grosbach@apple.com> Fix unintentional fallthrough. Patch by Edmund Grimley-Evans <Edmund.Grimley-Evans@arm.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103181 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d31f00b7f78aff0aaec8322a1a9eccca915b88f4 06-May-2010 Jim Grosbach <grosbach@apple.com> Fix unintentional fallthrough. Patch by Edmund Grimley-Evans <Edmund.Grimley-Evans@arm.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103181 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
fed180e491e87d1b03fd59d9ed3593b90a2baa8b 06-May-2010 Shantonu Sen <ssen@apple.com> Fix "warning: extra ';' inside a struct or union" when building llvm with clang


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103179 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
eae216c6d3d29cb9024ddf436a8f2ce222bb9ec8 06-May-2010 Shantonu Sen <ssen@apple.com> Fix "warning: extra ';' inside a struct or union" when building llvm with clang


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103179 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
c867f7384908fb8ec50a8c18c99adcbed4558832 06-May-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 103156 and 103157. 103156 didn't break anything. 10315 exposed a coalescer bug that's fixed by 103170.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103172 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
b63387afc6b10e88631d1ef232c41ab6c18c8581 06-May-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 103156 and 103157. 103156 didn't break anything. 10315 exposed a coalescer bug that's fixed by 103170.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103172 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
54bbf7f44096c0eb2d4b3e759aafe2f4d3e112b7 06-May-2010 Dan Gohman <gohman@apple.com> Revert r103157, which broke test/CodeGen/ARM/2009-11-30-LiveVariablesBug.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103163 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1ef7c821287cd7734efb148aa3044de3e3e377a7 06-May-2010 Dan Gohman <gohman@apple.com> Revert r103157, which broke test/CodeGen/ARM/2009-11-30-LiveVariablesBug.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103163 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1613cdd2db71509fbb3319dccd737eadfe3575a1 06-May-2010 Eric Christopher <echristo@apple.com> Revert r103156 since it was breaking the build bots.

Reverse-merging r103156 into '.':
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/ARMRegisterInfo.h
U lib/Target/ARM/ARMBaseRegisterInfo.cpp
U lib/Target/ARM/ARMBaseInstrInfo.cpp
U lib/Target/ARM/ARMRegisterInfo.td



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103159 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
f865cb5c1f00d5655d981503ed5761b2836fa5a8 06-May-2010 Eric Christopher <echristo@apple.com> Revert r103156 since it was breaking the build bots.

Reverse-merging r103156 into '.':
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/ARMRegisterInfo.h
U lib/Target/ARM/ARMBaseRegisterInfo.cpp
U lib/Target/ARM/ARMBaseInstrInfo.cpp
U lib/Target/ARM/ARMRegisterInfo.td



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103159 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
af2b353d72cbc2e88ba890526a3c442b2f65efb5 06-May-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious bug in isMoveInstr. It needs to return sub-register indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103157 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
9c35ee2099108c43a02aa1f836c3cbf5a0cd6035 06-May-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious bug in isMoveInstr. It needs to return sub-register indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103157 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
cfde9059e55ea305d6c35ec064f8a382e8b5f99f 06-May-2010 Evan Cheng <evan.cheng@apple.com> Adding pseudo 256-bit registers QQ0 . . . QQ7 to represent pairs of Q registers. These will be used to model VLD2 / VST2 instructions in order to get substantially better codegen for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103156 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
4ffc22ae000f207d3c660ebc197d31940025fbfa 06-May-2010 Evan Cheng <evan.cheng@apple.com> Adding pseudo 256-bit registers QQ0 . . . QQ7 to represent pairs of Q registers. These will be used to model VLD2 / VST2 instructions in order to get substantially better codegen for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103156 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMInstrNEON.td
RMRegisterInfo.h
RMRegisterInfo.td
2b7b252f31eaef05a706838834cbe01f37873a6e 06-May-2010 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103155 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d31c5496d7e1580058b5c6fbc8fd537a641ea590 06-May-2010 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103155 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
cb54cf567e234155527605cebb57e6f1a9fe9529 06-May-2010 Evan Cheng <evan.cheng@apple.com> storeRegToStackSlot has forgotten about QPR_8 register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103154 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7f2f436267cc9684e11878500e017babd1779db0 06-May-2010 Evan Cheng <evan.cheng@apple.com> storeRegToStackSlot has forgotten about QPR_8 register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103154 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
da0cbe492f73481059759fe92dc79cd7161d664d 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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
3cdb17880f02f737348e1d3c6a3782433219ce42 06-May-2010 Evan Cheng <evan.cheng@apple.com> Do not pre-allocate references of D registers pairs if they are extracted from the same Q register and are in the right order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103124 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
676b2dfd2719e03bda4d1d99de67be2a9bdfb124 06-May-2010 Evan Cheng <evan.cheng@apple.com> Do not pre-allocate references of D registers pairs if they are extracted from the same Q register and are in the right order.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103124 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
744b14e0d606e803d484f2c0eb12ff1f1a0fe171 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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
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
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
ad2a1cc8f2c5bb7eda7a5f1cb83d393aa42b45e2 05-May-2010 Evan Cheng <evan.cheng@apple.com> Model CONCAT_VECTORS of two 64-bit values as a REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103104 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
de8aa4ed9c8d3654e08eda3973e0500ddc7ac0fd 05-May-2010 Evan Cheng <evan.cheng@apple.com> Model CONCAT_VECTORS of two 64-bit values as a REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103104 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
c96397aefb689bfe7be2262bb7061cdea42628b9 04-May-2010 Evan Cheng <evan.cheng@apple.com> With -neon-reg-sequence, models forming a Q register from a pair of consecutive D registers as a REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103047 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
94cc6d3a2b0a424527edcddd1875ed649e8b84f0 04-May-2010 Evan Cheng <evan.cheng@apple.com> With -neon-reg-sequence, models forming a Q register from a pair of consecutive D registers as a REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103047 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
33fcfb4abad8cad560ef9de88ad23d8b6addd1fa 04-May-2010 Evan Cheng <evan.cheng@apple.com> Do not pre-allocate for registers which form a REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103041 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
826bdfa603c81d9166fcc6b169585b07f670ae88 04-May-2010 Evan Cheng <evan.cheng@apple.com> Do not pre-allocate for registers which form a REG_SEQUENCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103041 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
13a08813d456d9536da574ee549b61b98a36d39f 04-May-2010 Shih-wei Liao <sliao@google.com> Added VFP support: Machine code emission of opcodes: ARM::VMRS, ARM::VMSR, ARM::FCONSTD and ARM::FCONSTS

Change-Id: I59050468dabf2bcfbb73604ee31abe588a28c670
RMCodeEmitter.cpp
452d952c5ca697114235f88dd4ea9f0e83354ac8 04-May-2010 Jim Grosbach <grosbach@apple.com> rdar://7937137 - dbg values not being handled in thumb1 version of
eliminateFrameIndex(), leading to llvm_unreachable() assertion failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102980 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
6e62b4ef14bf96e84962171dd3f115a7f8c6dc49 04-May-2010 Jim Grosbach <grosbach@apple.com> rdar://7937137 - dbg values not being handled in thumb1 version of
eliminateFrameIndex(), leading to llvm_unreachable() assertion failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102980 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
ed4dac7caf11058c1a988db9f7102187bd1cc9eb 02-May-2010 Shih-wei Liao <sliao@google.com> 1. Fix movw. 2. Change to vfp3.

Change-Id: If494e6c62e1d276b78c3d4d4fec5dea3ec7f0816
RMCodeEmitter.cpp
e9198cc2d055953ec847dbcaf55f92dd32b434cc 01-May-2010 Dan Gohman <gohman@apple.com> Get rid of the EdgeMapping map. Instead, just check for BasicBlock
changes before doing phi lowering for switches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102809 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
af1d8ca44a18f304f207e209b3bdb94b590f86ff 01-May-2010 Dan Gohman <gohman@apple.com> Get rid of the EdgeMapping map. Instead, just check for BasicBlock
changes before doing phi lowering for switches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102809 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
a59a85f8dd03d52907019f1a4caaf7653b01b7d3 29-Apr-2010 Shih-wei Liao <sliao@google.com> For disassembler

Change-Id: I14e64ec4640cbeb57ac87473775e8ba8a7320b3f
smParser/Android.mk
smPrinter/Android.mk
isassembler/ARMDisassembler.cpp
isassembler/Android.mk
f9c420a62a8bce383b4bb988ff468e36162e8dc9 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Frame index can be negative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102577 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
8601a3d4decff0a380e059b037dabf71075497d3 29-Apr-2010 Evan Cheng <evan.cheng@apple.com> Frame index can be negative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102577 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
2dc4fd904bd7c20984771453e6ab0a4cc3c274c7 28-Apr-2010 Jim Grosbach <grosbach@apple.com> Add sizes non-floating point versions for the eh sjlj intrinsic expansions.

rdar://7895451



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102526 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d100755bab38784703f677b8b8eb174b624b346b 28-Apr-2010 Jim Grosbach <grosbach@apple.com> Add sizes non-floating point versions for the eh sjlj intrinsic expansions.

rdar://7895451



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102526 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7abe37e4aee38cc79d91dd069a37d7e91d5bef53 28-Apr-2010 Shih-wei Liao <sliao@google.com> Sync upstream to r102410.
Re-turn on sdk.

Change-Id: I91a890863989a67243b4d2dfd1ae09b843ebaeaf
RM.td
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMMCAsmInfo.cpp
RMMachineFunctionInfo.h
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
RMScheduleV7.td
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
RMTargetObjectFile.cpp
RMTargetObjectFile.h
ndroid.mk
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
smParser/CMakeLists.txt
smParser/Makefile
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
smPrinter/ARMMCInstLower.cpp
smPrinter/Makefile
MakeLists.txt
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.h
akefile
EONPreAllocPass.cpp
EADME.txt
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2RegisterInfo.cpp
humb2SizeReduction.cpp
24bfa21232573864633b9ac159822a2583730c80 27-Apr-2010 Bob Wilson <bob.wilson@apple.com> Handle register-to-register copies within the tGPR class.
Radar 7896289


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102396 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
5dfa87ecc6a8b94096869ca0558c5437006d13b3 27-Apr-2010 Bob Wilson <bob.wilson@apple.com> Handle register-to-register copies within the tGPR class.
Radar 7896289


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102396 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
2ecdd06162e06fd6f3bd92794627988a1ef0d465 26-Apr-2010 Dale Johannesen <dalej@apple.com> Handle target-specific form of DBG_VALUE in AsmPrinter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3f282aa94b80f4a93ff3cbc37cf3cd4a851c8432 26-Apr-2010 Dale Johannesen <dalej@apple.com> Handle target-specific form of DBG_VALUE in AsmPrinter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102373 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
359ebdab2682b1eb35c7c36c929cf60af0bfcbe5 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Add ARM specific emitFrameIndexDebugValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102324 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
62b50656ceb854eb0be265d63b2a1d46e7400d8a 26-Apr-2010 Evan Cheng <evan.cheng@apple.com> Add ARM specific emitFrameIndexDebugValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102324 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
5ec7e6b764a28eaf2d952eaf831a3d362f0100e4 23-Apr-2010 Jim Grosbach <grosbach@apple.com> Update ARM DAGtoDAG for matching UBFX instruction for unsigned bitfield
extraction. This fixes PR5998.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102144 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3a1287b470bde29d10e7c6998fb69b74d2265b6c 23-Apr-2010 Jim Grosbach <grosbach@apple.com> Update ARM DAGtoDAG for matching UBFX instruction for unsigned bitfield
extraction. This fixes PR5998.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102144 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
044ac58243f2978911cc7f6e910e524db161ca93 21-Apr-2010 Johnny Chen <johnny.chen@apple.com> Modified some assert() msg strings; no other functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102008 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
c048f1d12c129e79c72eb58dea0ec64a23ce9824 21-Apr-2010 Johnny Chen <johnny.chen@apple.com> Modified some assert() msg strings; no other functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102008 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
8898906b56e8cd9ef4cbe04e36f8e9467bd59692 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Implement -disable-non-leaf-fp-elim which disable frame pointer elimination
optimization for non-leaf functions. This will be hooked up to gcc's
-momit-leaf-frame-pointer option. rdar://7886181


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101984 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e566763b1915c7a4821ce95937b763724d271fec 21-Apr-2010 Evan Cheng <evan.cheng@apple.com> Implement -disable-non-leaf-fp-elim which disable frame pointer elimination
optimization for non-leaf functions. This will be hooked up to gcc's
-momit-leaf-frame-pointer option. rdar://7886181


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101984 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a06f927cf67607bbe8e48ff587c9574b7842d3da 21-Apr-2010 Johnny Chen <johnny.chen@apple.com> Thumb instructions which have reglist operands at the end and predicate operands
before reglist were not properly handled with respect to IT Block. Fix that by
creating a new method ARMBasicMCBuilder::DoPredicateOperands() used by those
instructions for disassembly. Add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101974 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/ThumbDisassemblerCore.h
52d2b0ed00d71c8ba0ff1a0b35cad4ffebc81dd5 21-Apr-2010 Johnny Chen <johnny.chen@apple.com> Thumb instructions which have reglist operands at the end and predicate operands
before reglist were not properly handled with respect to IT Block. Fix that by
creating a new method ARMBasicMCBuilder::DoPredicateOperands() used by those
instructions for disassembly. Add a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101974 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/ThumbDisassemblerCore.h
aa811f058026c45a5235df8eb7bcdaa95a512d5a 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error-handling of getBitFieldInvMask() where msb < lsb (encoding error),
instead of just asserting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101942 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
d6b5d72c0fdd0c4717ee6c5357081ad67ca9f350 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error-handling of getBitFieldInvMask() where msb < lsb (encoding error),
instead of just asserting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101942 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
e4276e4a363743280203dabaf35555b4bfb0d287 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> For t2LDRT, t2LDRBT, t2LDRHT, t2LDRSBT, and t2LDRSHT, if Rn(Inst{19-16})=='1111',
transform the Opcode to the corresponding t2LDR*pci counterpart.

Ref: A8.6.86 LDRT, A8.6.65 LDRBT, A8.6.77 LDRHT, A8.6.81 LDRSBT, A8.6.85 LDRSHT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101915 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
ef37e3abb7fdcdb773163e4e48743b2f7b2141b3 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> For t2LDRT, t2LDRBT, t2LDRHT, t2LDRSBT, and t2LDRSHT, if Rn(Inst{19-16})=='1111',
transform the Opcode to the corresponding t2LDR*pci counterpart.

Ref: A8.6.86 LDRT, A8.6.65 LDRBT, A8.6.77 LDRHT, A8.6.81 LDRSBT, A8.6.85 LDRSHT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101915 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
deadd54dc48f7ffd890e44b27b0a883afb26f317 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error-handling for DisassembleThumb2DPModImm() with 2-reg operands where
d==15 is considered illegal. Return false instead of assert().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101852 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
3974ade503c14fb7c7db32e0032b77b5c55e6ea4 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error-handling for DisassembleThumb2DPModImm() with 2-reg operands where
d==15 is considered illegal. Return false instead of assert().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101852 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
c42f7a52028574f09556465caecad7c7517553ac 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> More IT instruction error-handling improvements from fuzzing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101839 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
6bcf52f00a4fc352e90ff11681a0e69f9757eb37 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> More IT instruction error-handling improvements from fuzzing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101839 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
55dcf1347645bfb9ba46fd3cadb1da3a013ae6b5 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error handling of invalid IT mask '0000', instead of just asserting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101827 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
d0f3c46d166b5d0ab4573987011cab7bd1ec28e0 20-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error handling of invalid IT mask '0000', instead of just asserting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101827 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
b0573281ad2b6d815f6dd2e7048afa50f5863dd6 19-Apr-2010 Johnny Chen <johnny.chen@apple.com> According to A8.6.16 B (Encoding T3) and A8.3 Conditional execution -- A8.3.1
Pseudocode details of conditional, Condition bits '111x' indicate the
instruction is always executed. That is, '1111' is a leagl condition field
value, which is now mapped to ARMCC::AL.

Also add a test case for condition field '1111'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101817 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
22e401f5d4d863e753bc8e5655bac481602d22e6 19-Apr-2010 Johnny Chen <johnny.chen@apple.com> According to A8.6.16 B (Encoding T3) and A8.3 Conditional execution -- A8.3.1
Pseudocode details of conditional, Condition bits '111x' indicate the
instruction is always executed. That is, '1111' is a leagl condition field
value, which is now mapped to ARMCC::AL.

Also add a test case for condition field '1111'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101817 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
067388a6d23c4f7a823a407b2545ec8ba23ed29c 19-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error-handling for DisassembleThumb2DPSoReg() where the 3-reg operand
instructions should have Rd (Inst{11-8}) != 0b1111.

Ref: A6.3 32-bit Thumb instruction encoding
A6.3.11 Data-processing (shifted register)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101788 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
d6cc53cfe4ac1978e591d14867b39744463356c0 19-Apr-2010 Johnny Chen <johnny.chen@apple.com> Better error-handling for DisassembleThumb2DPSoReg() where the 3-reg operand
instructions should have Rd (Inst{11-8}) != 0b1111.

Ref: A6.3 32-bit Thumb instruction encoding
A6.3.11 Data-processing (shifted register)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101788 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
a10c42a292cd56982ff3013f61a8a5772b9f1d96 19-Apr-2010 Johnny Chen <johnny.chen@apple.com> ARM disassembler did not react to recent changes to the NEON instruction table.
VLD1q*_UPD and VST1q*_UPD have the ${dst:dregpair} operand now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101784 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
4b7df442a8a3cc5eacd2a7bb93ef09b3d3bbe63b 19-Apr-2010 Johnny Chen <johnny.chen@apple.com> ARM disassembler did not react to recent changes to the NEON instruction table.
VLD1q*_UPD and VST1q*_UPD have the ${dst:dregpair} operand now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101784 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0054007bf3a7fcafa9598ee725854aefd944041c 18-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Make processor FUs unique for given itinerary. This extends the limit of 32
FU per CPU arch to 32 per intinerary allowing precise modelling of quite
complex pipelines in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101754 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
928eb49cae286c95dceecf4442997dd561c6e3b7 18-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Make processor FUs unique for given itinerary. This extends the limit of 32
FU per CPU arch to 32 per intinerary allowing precise modelling of quite
complex pipelines in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101754 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV6.td
2491664d4979d33da2b90fc471cab2287c863e59 17-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101655 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
3fb150a9024a38872ec4abbc3300e08a8bfc1812 17-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101655 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
443093da0797ffc3b48ef30121243d1a700e63df 17-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to TargetLoweringObjectFile usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0d805c33d134d88169e3dc4a3272cff9a5713ce7 17-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to TargetLoweringObjectFile usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101640 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
dbb121b1f19bf77e0bef8725d5ee42c1b8761caf 17-Apr-2010 Dan Gohman <gohman@apple.com> Use const qualifiers with TargetLowering. This eliminates several
const_casts, and it reinforces the design of the Target classes being
immutable.

SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.

And PIC16's AsmPrinter no longer uses TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101635 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMTargetMachine.h
d858e90f039f5fcdc2fa93035e911a5a9505cc50 17-Apr-2010 Dan Gohman <gohman@apple.com> Use const qualifiers with TargetLowering. This eliminates several
const_casts, and it reinforces the design of the Target classes being
immutable.

SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.

And PIC16's AsmPrinter no longer uses TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101635 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMTargetMachine.h
d80404c4e94e4252c0cb306b3e3fd7ba4dc2535d 17-Apr-2010 Dan Gohman <gohman@apple.com> Move per-function state out of TargetLowering subclasses and into
MachineFunctionInfo subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101634 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMMachineFunctionInfo.h
1e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6 17-Apr-2010 Dan Gohman <gohman@apple.com> Move per-function state out of TargetLowering subclasses and into
MachineFunctionInfo subclasses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101634 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMMachineFunctionInfo.h
f96d8e143dd936173abd66e2061bc06341ffa30a 17-Apr-2010 Bob Wilson <bob.wilson@apple.com> Revise my previous change to ExpandBIT_CONVERT. I hadn't realized that this
may be called when either the source or destination type is i64, and my
change also hadn't fixed the most obvious problem -- assuming that i64 will
only be bitconverted to f64, ignoring the various vector types.
Radar 7873160.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9f3f061d74e19543be61e797127c54546668600c 17-Apr-2010 Bob Wilson <bob.wilson@apple.com> Revise my previous change to ExpandBIT_CONVERT. I hadn't realized that this
may be called when either the source or destination type is i64, and my
change also hadn't fixed the most obvious problem -- assuming that i64 will
only be bitconverted to f64, ignoring the various vector types.
Radar 7873160.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2cce14d305a9987e2d5d4097f4e7cc7eefc9d68a 17-Apr-2010 Johnny Chen <johnny.chen@apple.com> Cast to (uint64_t) instead of relying on the "ul" suffix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101573 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
de0ade493900c0e5c9ebe1f795699b5a9d9f360b 17-Apr-2010 Johnny Chen <johnny.chen@apple.com> Cast to (uint64_t) instead of relying on the "ul" suffix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101573 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
8b8dc1cdcf5f34b66c3f929186168102f3149cb1 17-Apr-2010 Dan Gohman <gohman@apple.com> Add skeleton target-specific SelectionDAGInfo files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101564 91177308-0d34-0410-b5e6-96231b3b80d8
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
MakeLists.txt
53c5e42ab9c1a2cce7ad19bb0b4dffe33c9473e6 17-Apr-2010 Dan Gohman <gohman@apple.com> Add skeleton target-specific SelectionDAGInfo files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101564 91177308-0d34-0410-b5e6-96231b3b80d8
RMSelectionDAGInfo.cpp
RMSelectionDAGInfo.h
MakeLists.txt
01d31cff930935cd8c8a16ccc1e4315bed5e4f17 17-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed logic error. Should check Builder for validity before calling SetSession
on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101563 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
af5b0e851e42d7de1247c4084ba75a76c4497ca6 17-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed logic error. Should check Builder for validity before calling SetSession
on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101563 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
6b5e2261f03cd10090e15e29f0cb527298da111f 17-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed a bug in DisassembleN1RegModImmFrm() where a break stmt was missing for a
case. Also, the 0xFF hex literal involved in the shift for ESize64 should be
suffixed "ul" to preserve the shift result.

Implemented printHex*ImmOperand() by copying from ARMAsmPrinter.cpp and added a
test case for DisassembleN1RegModImmFrm()/printHex64ImmOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101557 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassemblerCore.cpp
c7b65914e080b5236078e5f58ded5503226bcb71 17-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed a bug in DisassembleN1RegModImmFrm() where a break stmt was missing for a
case. Also, the 0xFF hex literal involved in the shift for ESize64 should be
suffixed "ul" to preserve the shift result.

Implemented printHex*ImmOperand() by copying from ARMAsmPrinter.cpp and added a
test case for DisassembleN1RegModImmFrm()/printHex64ImmOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101557 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassemblerCore.cpp
05af8f4b58d7f69cbbca8334ce41ced530dbe79b 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> In the same spirit of r101524, which removed the assert() from printAddrMode2OffsetOperand(),
this patch removes the assert() from printAddrMode3OffsetOperand() and adds a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101529 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
16fda6982b8fa366db2632d3b1775d71f1fd4eaa 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> In the same spirit of r101524, which removed the assert() from printAddrMode2OffsetOperand(),
this patch removes the assert() from printAddrMode3OffsetOperand() and adds a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101529 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
a4a41a75b4c4736d57964a8004eed1e35c026494 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> Multiclass LdStCop was using pre-UAL syntax LDC<c>L for the L fragment. Changed
to the UAL syntax of LDCL<c>, instead.

Add a test case for this change which also tests the removal of assert() from
printAddrMode2OffsetOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2fb10f17d8e4fc2142e97f4efe653a75177d2363 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> Multiclass LdStCop was using pre-UAL syntax LDC<c>L for the L fragment. Changed
to the UAL syntax of LDCL<c>, instead.

Add a test case for this change which also tests the removal of assert() from
printAddrMode2OffsetOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
eeff57418ec59658e07e967c7733cf67070caf1a 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> Remove the assert() from printAddrMode2OffsetOperand(). "#0 and #-0" are
considered legal instructions.

Refs: A8.6.51 LDC, LDC2 (immediate) -- page A8-107, A8.6.58 LDR (immediate, ARM)
-- page A8-121, and A8.6.194 STR (immediate, ARM) -- page A8-395.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101524 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
d73d187e335c251892eab74fe436ddd701865287 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> Remove the assert() from printAddrMode2OffsetOperand(). "#0 and #-0" are
considered legal instructions.

Refs: A8.6.51 LDC, LDC2 (immediate) -- page A8-107, A8.6.58 LDR (immediate, ARM)
-- page A8-121, and A8.6.194 STR (immediate, ARM) -- page A8-395.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101524 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
269b7aa0ccb5565cad0aa3fcd8117b4571bee47f 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> Use getAL() rather than a major constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101446 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
47b7b9f228435a7b570ab6fc9f3a9c44ff301ef2 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> Use getAL() rather than a major constant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101446 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
884b7e540566b617a0a273494c663a85cdf46028 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed a bug in ARM disassembly where LDRSBT should have am3offset operand, not
am2offset. Modified the instruction table entry and added a new test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101415 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1cfa094562457aa0c36818b93b481e4ff454ec92 16-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed a bug in ARM disassembly where LDRSBT should have am3offset operand, not
am2offset. Modified the instruction table entry and added a new test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101415 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
433194a604682fd84a49bc9305cbbd472e31d04e 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> Use default lowering of DYNAMIC_STACKALLOC. As far as I can tell, ARM isle is doing the right thing and codegen looks correct for both Thumb and Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101410 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
3a1588a2e38d57de3c4277f071f2316fb3dbc37a 16-Apr-2010 Evan Cheng <evan.cheng@apple.com> Use default lowering of DYNAMIC_STACKALLOC. As far as I can tell, ARM isle is doing the right thing and codegen looks correct for both Thumb and Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101410 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
a9b8c2c72967325277821e4a3063eaad68e7b8b6 15-Apr-2010 Evan Cheng <evan.cheng@apple.com> ARM SelectDYN_ALLOC should emit a copy from SP rather than referencing SP directly. In cases where there are two dyn_alloc in the same BB it would have caused the old SP value to be reused and badness ensues. rdar://7493908

llvm is generating poor code for dynamic alloca, I'll fix that later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101383 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
0ea7d219ec5bb45a0b3e96c01070cfc21227291d 15-Apr-2010 Evan Cheng <evan.cheng@apple.com> ARM SelectDYN_ALLOC should emit a copy from SP rather than referencing SP directly. In cases where there are two dyn_alloc in the same BB it would have caused the old SP value to be reused and badness ensues. rdar://7493908

llvm is generating poor code for dynamic alloca, I'll fix that later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101383 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a0fd4144c0c1b7860c2c6548e5be4271c77f95dc 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> DEBUG() print out "Unknown format" msg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101382 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
c8866980fe551352a7f9180248f1faa198ddae4e 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> DEBUG() print out "Unknown format" msg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101382 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
0d2e5f562a18139ac0b326c06f6d1ce397e72086 15-Apr-2010 Dan Gohman <gohman@apple.com> ReuseFrameIndexVals is used in multiple files, so it can't be static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101379 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
8c407d45964fbba19719be555324f247e4fb14e1 15-Apr-2010 Dan Gohman <gohman@apple.com> ReuseFrameIndexVals is used in multiple files, so it can't be static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101379 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
738422fa501a08e58d1d55ebebdf0ca499059d72 15-Apr-2010 Dan Gohman <gohman@apple.com> Fix a bunch of namespace polution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101376 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b35798347ea87b8b6d36155b211016a7769f01ab 15-Apr-2010 Dan Gohman <gohman@apple.com> Fix a bunch of namespace polution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101376 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
1eb7a9cc529c07b6dba2a2c205ef3a9b055e1b15 15-Apr-2010 Dan Gohman <gohman@apple.com> Add more const qualifiers for LLVM IR pointers in CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101342 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ae541aad5c36cb3e4256514447d1f81e253079c7 15-Apr-2010 Dan Gohman <gohman@apple.com> Add more const qualifiers for LLVM IR pointers in CodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101342 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
dbb6d1773175fd4945e1127745f66210021b7df3 15-Apr-2010 Anders Carlsson <andersca@mac.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101335 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0dbdca5a8594cbc2961faa37e3eadcd6e265fa90 15-Apr-2010 Anders Carlsson <andersca@mac.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101335 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
36c56d0353f1a9c4e878f509aff85a62e5087dd4 15-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to CodeGen's use of LLVM IR constructs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101334 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
46510a73e977273ec67747eb34cbdb43f815e451 15-Apr-2010 Dan Gohman <gohman@apple.com> Add const qualifiers to CodeGen's use of LLVM IR constructs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101334 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMExpandPseudoInsts.cpp
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
f6e1b42c4a0fe4eb7c2784f32cc6822d865ee8f3 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> Wrap the error msgs in DEBUG() macro so that they won't appear in NDEBUG build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101329 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
44398693e767f10c1c7edea3578796f12e05af6e 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> Wrap the error msgs in DEBUG() macro so that they won't appear in NDEBUG build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101329 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
bf3f0fab0ae55b42dc713122d73f14be38120cd6 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed another assert exposed by fuzzing. Now, the DisassembleVFPLdStMulFrm()
function checks whether we have a valid submode for VLDM/VSTM (must be either
"ia" or "db") before calling ARM_AM::getAM5Opc(AMSubMode, unsigned char).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101306 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
d1ec11a850843bd7afff1c939b29c9d18527e966 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed another assert exposed by fuzzing. Now, the DisassembleVFPLdStMulFrm()
function checks whether we have a valid submode for VLDM/VSTM (must be either
"ia" or "db") before calling ARM_AM::getAM5Opc(AMSubMode, unsigned char).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101306 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
6b39c65f2d4b0097abe957c924b4196449672fae 15-Apr-2010 Jim Grosbach <grosbach@apple.com> Add -arm-long-calls option to force calls to be indirect. This makes the
kernel linker happier when dealing with kexts.

Radar 7805069



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101303 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e7b52526d386cd0d3a08b8daa7db67839649bb37 15-Apr-2010 Jim Grosbach <grosbach@apple.com> Add -arm-long-calls option to force calls to be indirect. This makes the
kernel linker happier when dealing with kexts.

Radar 7805069



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101303 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4327798ba572584e7a305335d8babd652f15ebb9 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> For t2BFI disassembly, apply the same error checking as in r101205.
Change the error msg to read "Encoding error: msb < lsb".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101293 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
2fd100a4cb6c7c013f9bf78fc06b655515b0851c 15-Apr-2010 Johnny Chen <johnny.chen@apple.com> For t2BFI disassembly, apply the same error checking as in r101205.
Change the error msg to read "Encoding error: msb < lsb".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101293 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ThumbDisassemblerCore.h
882f9f8e14ddb741de2506ef37f22a0b48048400 14-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed another assert exposed by fuzzing. The utility function getRegisterEnum()
was asserting because the (RegClass, RegNum) combination doesn't make sense from
an encoding point of view.

Since getRegisterEnum() is used all over the place, to change the code to check
for encoding error after each call would not only bloat the code, but also make
it less readable. An Err flag is added to the ARMBasicMCBuilder where a client
can set a non-zero value to indicate some kind of error condition while building
up the MCInst. ARMBasicMCBuilder::BuildIt() checks this flag and returns false
if a non-zero value is detected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101290 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/ThumbDisassemblerCore.h
d907d2566af966333cf170fae27b3e7847a855a4 14-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed another assert exposed by fuzzing. The utility function getRegisterEnum()
was asserting because the (RegClass, RegNum) combination doesn't make sense from
an encoding point of view.

Since getRegisterEnum() is used all over the place, to change the code to check
for encoding error after each call would not only bloat the code, but also make
it less readable. An Err flag is added to the ARMBasicMCBuilder where a client
can set a non-zero value to indicate some kind of error condition while building
up the MCInst. ARMBasicMCBuilder::BuildIt() checks this flag and returns false
if a non-zero value is detected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101290 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/ThumbDisassemblerCore.h
b54145ebf6100d3c5880716d829aacd026fac7f6 14-Apr-2010 Bob Wilson <bob.wilson@apple.com> Don't custom lower bit converts to ARM VMOVDRRD or VMOVDRR when the operand
does not have a legal type. The legalizer does not know how to handle those
nodes. Radar 7854640.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101282 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
164cd8b8d305f93a1520fc1354d896acd1d002f4 14-Apr-2010 Bob Wilson <bob.wilson@apple.com> Don't custom lower bit converts to ARM VMOVDRRD or VMOVDRR when the operand
does not have a legal type. The legalizer does not know how to handle those
nodes. Radar 7854640.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101282 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9646fe1b20d9265f931b2b20919ebf93683f236a 14-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed another assert exposed by fuzzing. Now, when an encoding error occurs
involing getBFCInvMask() where lsb <= msb does not hold true, the disassembler
just returns false, instead of assert, to indicate disassembly error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101205 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
6f72ab345de0711aaa5509fd6de38f4eb0ed4070 14-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed another assert exposed by fuzzing. Now, when an encoding error occurs
involing getBFCInvMask() where lsb <= msb does not hold true, the disassembler
just returns false, instead of assert, to indicate disassembly error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101205 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
d75e3c7e0b326481fa6c1eaa16a92217678213cd 14-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed an assert() exposed by fuzzing. Now, instead of assert when an invalid
instruction encoding is encountered, we just return a NULL ARMBasicMCBuilder
instance and the client just returns false to indicate disassembly error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101201 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
efcdac0c41e7f14e81f79762423f30d892792261 14-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed an assert() exposed by fuzzing. Now, instead of assert when an invalid
instruction encoding is encountered, we just return a NULL ARMBasicMCBuilder
instance and the client just returns false to indicate disassembly error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101201 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
38df1ce442a5e391ee959999ff7dabdd2e65b97b 14-Apr-2010 Douglas Gregor <doug.gregor@gmail.com> Unbreak CMake build by improving the EnhancedDisassembly makefile a
bit (we're not trying to build a shared library yet) and generating
the X86GenEDInfo.inc and ARMGenEDInfo.inc files as necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101188 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
533ae9b71d88df8d1891c8c653eeb7912b25dbb0 14-Apr-2010 Douglas Gregor <dgregor@apple.com> Unbreak CMake build by improving the EnhancedDisassembly makefile a
bit (we're not trying to build a shared library yet) and generating
the X86GenEDInfo.inc and ARMGenEDInfo.inc files as necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101188 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
1650fabdd10e3987f6d079e2693d9741267076fc 14-Apr-2010 Bob Wilson <bob.wilson@apple.com> Handle a v2f64 formal parameter that is split between registers and memory
such that the entire second half is in memory. Radar 7855014.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101181 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6a234f07faf164e62f0799fa87f5742528cc043a 14-Apr-2010 Bob Wilson <bob.wilson@apple.com> Handle a v2f64 formal parameter that is split between registers and memory
such that the entire second half is in memory. Radar 7855014.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101181 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
eed7cb6cac7dab33af13858e6697d68caab8778f 13-Apr-2010 Sean Callanan <scallanan@apple.com> Fixed a nasty layering violation in the edis source
code. It used to #include the enhanced disassembly
information for the targets it supported straight
out of lib/Target/{X86,ARM,...} but now it uses a
new interface provided by MCDisassembler, and (so
far) implemented by X86 and ARM.

Also removed hacky #define-controlled initialization
of targets in edis. If clients only want edis to
initialize a limited set of targets, they can set
--enable-targets on the configure command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101179 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
9899f70a7406d632c82849978bf6981f1ee4ccb5 13-Apr-2010 Sean Callanan <scallanan@apple.com> Fixed a nasty layering violation in the edis source
code. It used to #include the enhanced disassembly
information for the targets it supported straight
out of lib/Target/{X86,ARM,...} but now it uses a
new interface provided by MCDisassembler, and (so
far) implemented by X86 and ARM.

Also removed hacky #define-controlled initialization
of targets in edis. If clients only want edis to
initialize a limited set of targets, they can set
--enable-targets on the configure command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101179 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
831311a36ea23627501023f84918a9d20f67a4a1 13-Apr-2010 Johnny Chen <johnny.chen@apple.com> Changed getSOImmValRotate()'s hunt retry logic to ignore the low order 6 bits,
instead of 7, because we are only looking for even rotate amount.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101172 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
8a87ffb9252d6d66093dcd96f3b9a496dae4a439 13-Apr-2010 Johnny Chen <johnny.chen@apple.com> Changed getSOImmValRotate()'s hunt retry logic to ignore the low order 6 bits,
instead of 7, because we are only looking for even rotate amount.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101172 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
2fcbd242b761e0fc22266baec227e210861aab55 13-Apr-2010 Dan Gohman <gohman@apple.com> Use MachineBasicBlock::isLiveIn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101144 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
c5e43c958e4a599aef0162cd71f864712b740ab5 13-Apr-2010 Dan Gohman <gohman@apple.com> Use MachineBasicBlock::isLiveIn.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101144 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
2e34623aa9ecf0590bcd2becd71fd1be93f6f98c 13-Apr-2010 Bob Wilson <bob.wilson@apple.com> Replace r101053 with a fix for getSOImmValRotate() so that it will correctly
recognize all the valid rotated immediates. This fixes the disassembler
issue and will also help codegen for some unusual constant values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101114 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMInstPrinter.cpp
b123b8bee0b2c3f5e296ef7ca067e20982a7dbc8 13-Apr-2010 Bob Wilson <bob.wilson@apple.com> Replace r101053 with a fix for getSOImmValRotate() so that it will correctly
recognize all the valid rotated immediates. This fixes the disassembler
issue and will also help codegen for some unusual constant values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101114 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMInstPrinter.cpp
67426ece69205097d45ec5d5a268c115dfafc248 12-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed a crasher in arm disassembler within ARMInstPrinter.cpp after calling
ARM_AM::getSoImmVal(V) with a legitimate so_imm value: #245 rotate right by 2.
Introduce ARM_AM::getSOImmValOneOrNoRotate(unsigned Arg) which is called from
ARMInstPrinter.cpp's printSOImm() function, replacing ARM_AM::getSOImmVal(V).

[12:44:43] johnny:/Volumes/data/llvm/git/trunk (local-trunk) $ gdb Debug/bin/llvm-mc
GNU gdb 6.3.50-20050815 (Apple version gdb-1346) (Fri Sep 18 20:40:51 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ... done

(gdb) set args -triple=arm-apple-darwin9 -debug-only=arm-disassembler --disassemble
(gdb) r
Starting program: /Volumes/data/llvm/git/trunk/Debug/bin/llvm-mc -triple=arm-apple-darwin9 -debug-only=arm-disassembler --disassemble
Reading symbols for shared libraries ++. done
0xf5 0x71 0xf0 0x53
Opcode=201 Name=MVNi Format=ARM_FORMAT_DPFRM(4)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 0: 1: 0: 1| 0: 0: 1: 1| 1: 1: 1: 1| 0: 0: 0: 0| 0: 1: 1: 1| 0: 0: 0: 1| 1: 1: 1: 1| 0: 1: 0: 1|
-------------------------------------------------------------------------------------------------

mvnpls r7, Assertion failed: (V != -1 && "Not a valid so_imm value!"), function printSOImm, file ARMInstPrinter.cpp, line 229.

Program received signal SIGABRT, Aborted.
0x00007fff88c65886 in __kill ()
(gdb) bt
#0 0x00007fff88c65886 in __kill ()
#1 0x00007fff88d05eae in abort ()
#2 0x00007fff88cf2ef0 in __assert_rtn ()
#3 0x000000010020e422 in printSOImm (O=@0x1010bdf80, V=-1, VerboseAsm=false, MAI=0x1020106d0) at ARMInstPrinter.cpp:229
#4 0x000000010020e5fe in llvm::ARMInstPrinter::printSOImmOperand (this=0x1020107e0, MI=0x7fff5fbfee70, OpNum=1, O=@0x1010bdf80) at ARMInstPrinter.cpp:254
#5 0x00000001001ffbc0 in llvm::ARMInstPrinter::printInstruction (this=0x1020107e0, MI=0x7fff5fbfee70, O=@0x1010bdf80) at ARMGenAsmWriter.inc:3236
#6 0x000000010020c27c in llvm::ARMInstPrinter::printInst (this=0x1020107e0, MI=0x7fff5fbfee70, O=@0x1010bdf80) at ARMInstPrinter.cpp:182
#7 0x000000010003cbff in PrintInsts (DisAsm=@0x10200f4e0, Printer=@0x1020107e0, Bytes=@0x7fff5fbff060, SM=@0x7fff5fbff078) at Disassembler.cpp:65
#8 0x000000010003c8b4 in llvm::Disassembler::disassemble (T=@0x1010c13c0, Triple=@0x1010b6798, Buffer=@0x102010690) at Disassembler.cpp:153
#9 0x000000010004095c in DisassembleInput (ProgName=0x7fff5fbff3f0 "/Volumes/data/llvm/git/trunk/Debug/bin/llvm-mc") at llvm-mc.cpp:347
#10 0x000000010003eefb in main (argc=4, argv=0x7fff5fbff298) at llvm-mc.cpp:374
(gdb) q
The program is running. Exit anyway? (y or n) y
[13:36:26] johnny:/Volumes/data/llvm/git/trunk (local-trunk) $


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101053 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMInstPrinter.cpp
bb6e9d8cf7c5a51b2f66568accc489927f0d538e 12-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed a crasher in arm disassembler within ARMInstPrinter.cpp after calling
ARM_AM::getSoImmVal(V) with a legitimate so_imm value: #245 rotate right by 2.
Introduce ARM_AM::getSOImmValOneOrNoRotate(unsigned Arg) which is called from
ARMInstPrinter.cpp's printSOImm() function, replacing ARM_AM::getSOImmVal(V).

[12:44:43] johnny:/Volumes/data/llvm/git/trunk (local-trunk) $ gdb Debug/bin/llvm-mc
GNU gdb 6.3.50-20050815 (Apple version gdb-1346) (Fri Sep 18 20:40:51 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ... done

(gdb) set args -triple=arm-apple-darwin9 -debug-only=arm-disassembler --disassemble
(gdb) r
Starting program: /Volumes/data/llvm/git/trunk/Debug/bin/llvm-mc -triple=arm-apple-darwin9 -debug-only=arm-disassembler --disassemble
Reading symbols for shared libraries ++. done
0xf5 0x71 0xf0 0x53
Opcode=201 Name=MVNi Format=ARM_FORMAT_DPFRM(4)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 0: 1: 0: 1| 0: 0: 1: 1| 1: 1: 1: 1| 0: 0: 0: 0| 0: 1: 1: 1| 0: 0: 0: 1| 1: 1: 1: 1| 0: 1: 0: 1|
-------------------------------------------------------------------------------------------------

mvnpls r7, Assertion failed: (V != -1 && "Not a valid so_imm value!"), function printSOImm, file ARMInstPrinter.cpp, line 229.

Program received signal SIGABRT, Aborted.
0x00007fff88c65886 in __kill ()
(gdb) bt
#0 0x00007fff88c65886 in __kill ()
#1 0x00007fff88d05eae in abort ()
#2 0x00007fff88cf2ef0 in __assert_rtn ()
#3 0x000000010020e422 in printSOImm (O=@0x1010bdf80, V=-1, VerboseAsm=false, MAI=0x1020106d0) at ARMInstPrinter.cpp:229
#4 0x000000010020e5fe in llvm::ARMInstPrinter::printSOImmOperand (this=0x1020107e0, MI=0x7fff5fbfee70, OpNum=1, O=@0x1010bdf80) at ARMInstPrinter.cpp:254
#5 0x00000001001ffbc0 in llvm::ARMInstPrinter::printInstruction (this=0x1020107e0, MI=0x7fff5fbfee70, O=@0x1010bdf80) at ARMGenAsmWriter.inc:3236
#6 0x000000010020c27c in llvm::ARMInstPrinter::printInst (this=0x1020107e0, MI=0x7fff5fbfee70, O=@0x1010bdf80) at ARMInstPrinter.cpp:182
#7 0x000000010003cbff in PrintInsts (DisAsm=@0x10200f4e0, Printer=@0x1020107e0, Bytes=@0x7fff5fbff060, SM=@0x7fff5fbff078) at Disassembler.cpp:65
#8 0x000000010003c8b4 in llvm::Disassembler::disassemble (T=@0x1010c13c0, Triple=@0x1010b6798, Buffer=@0x102010690) at Disassembler.cpp:153
#9 0x000000010004095c in DisassembleInput (ProgName=0x7fff5fbff3f0 "/Volumes/data/llvm/git/trunk/Debug/bin/llvm-mc") at llvm-mc.cpp:347
#10 0x000000010003eefb in main (argc=4, argv=0x7fff5fbff298) at llvm-mc.cpp:374
(gdb) q
The program is running. Exit anyway? (y or n) y
[13:36:26] johnny:/Volumes/data/llvm/git/trunk (local-trunk) $


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101053 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMInstPrinter.cpp
7adb1cf7f970835890b89cdf82dd9951680eb692 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
cfe06853d4488b6781a85f36ec2dfb1ecdbc056a 08-Apr-2010 Chris Lattner <sabre@nondot.org> delete a forwarding function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100815 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
287df1bc0309962770b6c176f2d143795dd3cc2f 08-Apr-2010 Chris Lattner <sabre@nondot.org> delete a forwarding function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100815 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.cpp
088d71c31dd9c483998972e3a75fa279a06a6e38 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove the TargetLoweringObjectFileMachO::getMachoSection
api and update clients to use MCContext instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100808 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
22772214de79aa1c5ca38c4fb1da137d8fb30a05 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove the TargetLoweringObjectFileMachO::getMachoSection
api and update clients to use MCContext instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100808 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7f42f72a50cf6b5e108f10c94e0c2e529a50497b 08-Apr-2010 Sean Callanan <scallanan@apple.com> Added support for ARM disassembly to edis.

I also added a rule to the ARM target's Makefile to
build the ARM-specific instruction information table
for the enhanced disassembler.

I will add the test harness for all this stuff in
a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100735 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
8f993b8c244bb5ec19d004a070eb9f32c5a29b1a 08-Apr-2010 Sean Callanan <scallanan@apple.com> Added support for ARM disassembly to edis.

I also added a rule to the ARM target's Makefile to
build the ARM-specific instruction information table
for the enhanced disassembler.

I will add the test harness for all this stuff in
a separate commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100735 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
87b9ecfac22af47b7c99193496de6aa0150b788a 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100714 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
28e830d25f035508c61fd376fa07e390e0bec54b 08-Apr-2010 Ted Kremenek <kremenek@apple.com> Update CMake build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100714 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
8316f2d3810dd37bae0f847bc3efd495432b5893 08-Apr-2010 Chris Lattner <sabre@nondot.org> rename llvm::llvm_report_error -> llvm::report_fatal_error



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
75361b69f3f327842b9dad69fa7f28ae3b688412 08-Apr-2010 Chris Lattner <sabre@nondot.org> rename llvm::llvm_report_error -> llvm::report_fatal_error



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
205e4273cf8515ffcd0d5c0d26bd153b65280a7d 08-Apr-2010 Johnny Chen <johnny.chen@apple.com> Missed this one line for the previous checkin to fix build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100697 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
b72e59e3615c4f8a8ac272629511814000cde5e0 08-Apr-2010 Johnny Chen <johnny.chen@apple.com> Missed this one line for the previous checkin to fix build warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100697 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
60eb15cb9cb57919bb9a2f1f19d26b26224e8955 08-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed warnings pointed out by clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100696 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
efd518e1fde69316ae3d860703848f329bd87262 08-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed warnings pointed out by clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100696 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
d834e29cbb84e0fe5b55e4fb510796231b40e26c 07-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed warnings pointed out by clang.
Next to work on is ARMDisassemblerCore.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100695 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
7e4823c51f40d810483a424836710ec6703c204f 07-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed warnings pointed out by clang.
Next to work on is ARMDisassemblerCore.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100695 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ThumbDisassemblerCore.h
c195a8be9ccb3ecb7ffddaad05511d23329a3bc5 07-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed 3 warnings pointed out by clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100693 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
c22e2fcf72780b4b66a4262c12208c2d5af2e213 07-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fixed 3 warnings pointed out by clang.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100693 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
d47ae912b9575fa3315d4fc3329b3ea754162a60 07-Apr-2010 Johnny Chen <johnny.chen@apple.com> Re-enable ARM/Thumb disassembler and add a workaround for a memcpy() call in
ARMDecoderEmitter.cpp, with FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100690 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/Makefile
akefile
3c500e6947ed8db719d87d47572de86e107ec094 07-Apr-2010 Johnny Chen <johnny.chen@apple.com> Re-enable ARM/Thumb disassembler and add a workaround for a memcpy() call in
ARMDecoderEmitter.cpp, with FIXME comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100690 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/Makefile
akefile
f3d16ef599d08f6093806e36cc3b88222efb924a 07-Apr-2010 Sean Callanan <scallanan@apple.com> Added an AsmLexer for the ARM target, which uses
a simple mapping of register names to IDs to
identify register tokens.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100685 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
90b7097f92f6b4f6b27cd88c7c88a21b777f5795 07-Apr-2010 Sean Callanan <scallanan@apple.com> Added an AsmLexer for the ARM target, which uses
a simple mapping of register names to IDs to
identify register tokens.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100685 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmLexer.cpp
smParser/ARMAsmParser.cpp
ac54897bffc47cf30c23cd6432baf3ec764fb88d 07-Apr-2010 Dale Johannesen <dalej@apple.com> Educate GetInstrSizeInBytes implementations that
DBG_VALUE does not generate code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100681 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
375be7730a6f3dee7a6dc319ee6c355a11ac99ad 07-Apr-2010 Dale Johannesen <dalej@apple.com> Educate GetInstrSizeInBytes implementations that
DBG_VALUE does not generate code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100681 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
e4454320b3cfffe926a487c33fbeb454366de2f8 07-Apr-2010 Shih-wei Liao <sliao@google.com> libbcc

Change-Id: Ieaa3ebd5a38f370752495549f8870b534eeedfc5
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMRelocations.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetObjectFile.h
ndroid.mk
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
EADME.txt
argetInfo/Android.mk
humb1RegisterInfo.cpp
a7a3476e84d08173b6bead2105e07675bc643cb2 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Remove late ARM codegen optimization pass committed by accident.
It is not ready for public yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100673 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMGlobalMerge.cpp
RMTargetMachine.cpp
RMTargetMachine.h
4b38debf597a22e2db02aafdaa40264d7770c1ad 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Remove late ARM codegen optimization pass committed by accident.
It is not ready for public yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100673 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMGlobalMerge.cpp
RMTargetMachine.cpp
RMTargetMachine.h
f6b0480857f2e43b7be9f72fdd059f6adbd1a3e0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Split A8/A9 itins - they already were too big.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100672 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV7.td
e1676011c615e81522278ad09ebb3d57e5e6bb94 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Split A8/A9 itins - they already were too big.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100672 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleA8.td
RMScheduleA9.td
RMScheduleV7.td
88797e58d2e6b68cb92ae5d21f2f4966642bbeab 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some crude itin approximation for VFP load / stores on A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100671 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
895867326ed541a1ada12f45ab8daf72aa2ad3d0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some crude itin approximation for VFP load / stores on A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100671 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
dd21ccf7216e65b46274cdc857d12310846c05c6 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some crude approximation for neon load/store instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100670 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
67867135ec71263295a00db983784ed63e3426c7 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some crude approximation for neon load/store instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100670 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
dd71847dd4db1aae097333b3572880b7e57a04da 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some A8-based approximation for instructions with unknown cycle times

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100669 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
9113052a1ff9a78a91d980c3205eb958efe94ae3 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add some A8-based approximation for instructions with unknown cycle times

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100669 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
f69a244eaee851f502dc36659b48b77b9e31f493 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Move NEON-VFP domain fixer upper, so post-RA scheduler would benefit from it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100668 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
ebd4cb43c2dd55f261e2515cae764d6552e2f2af 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Move NEON-VFP domain fixer upper, so post-RA scheduler would benefit from it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100668 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
72018765fd2cfcd61bc52745eafab5d0be9377c3 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Since tblgen bug was fixed (thanks Jakob!) we don't need InstrStage2 hack anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100667 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
9ad709b523b2cde67ffe20625fd5e2da9e9e0225 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Since tblgen bug was fixed (thanks Jakob!) we don't need InstrStage2 hack anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100667 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
2bf942435137563eaee22f36a9e93bf4479ab61a 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix A8 FP NEON MAC itins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100666 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
f3da92b2f27a99bf96939e39c6ec8a9d04d21ba4 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix A8 FP NEON MAC itins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100666 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
57f4726a114d00b43ca1ca583100332d15f6b997 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> A9 NEON FP itins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100665 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
924369d58ea6641419e4e38963ff39afad8098e8 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> A9 NEON FP itins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100665 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
7092bc25507bb277c1cd0c99a040add2bc61051a 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some permute goodness for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100664 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
ec69dfa7ca9ccd5b8d13594ad8655909920f9462 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some permute goodness for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100664 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
3d45d0552a9cbb0a7427506dba0f2eae20fdcaf7 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> More shift itins for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100663 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
5ca13c6ee390da552fc0fbf5ba795a1550537413 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> More shift itins for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100663 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
8d062474d6f2cacc2a8a9842f254e971923b3049 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> More fixes for itins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100662 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ecc6406072ece090a434f53916514f854130c10a 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> More fixes for itins

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100662 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
290319b4c640dcef9216c9d309c9c9f373b96a1a 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix invalid itins for 32-bit varians of VMLAL and friends

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100661 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
95102073e8c610b3dbdbdd01a79dc8c0942ab34f 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix invalid itins for 32-bit varians of VMLAL and friends

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100661 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
81529e9c8b2eec9df6fc9245871deeb375a628b0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add MAC stuff for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100660 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
7930ac19e74e0836f93c9ad9f0e6e87aa7ba8eb3 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add MAC stuff for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100660 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
d64bb07a350fd21e6a7a4f9b66f358d4ad7e2dab 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix invalid NEON MAC itins on A8

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100659 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
d76da03e91e5ae31e944bd5e8f0c4a93bc6984e5 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix invalid NEON MAC itins on A8

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100659 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
ed57ba73a04fb97e3109fd0ca542f46a60a88389 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix itins for VPAL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100658 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
dc0bab70cfc0fe2f80e0b4c310581f4cfa57bfe4 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix itins for VPAL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100658 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
6928d7c46c4bab79cf3d22f6884dc9d8acc332db 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix itins for VABA

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100657 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleV7.td
0a3e2b591c0f5ae5d31aeb2eb794b3c5c38ffa98 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix itins for VABA

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100657 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleV7.td
ed60a4cca98f8054723c1e398c97bb5000cca532 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Correct VMVN itinerary: operand is read in the second cycle, not in the first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100656 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
fc2b08438c485e3c4c9c0328e38d8abb4687076d 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Correct VMVN itinerary: operand is read in the second cycle, not in the first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100656 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d36f994b6955365b2f2b6f4a1e1aeb385d1df2b6 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> More A9 itineraries

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100655 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMScheduleV7.td
e715b1e43ae14c07fdb36524a73183c56acb87f0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> More A9 itineraries

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100655 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMScheduleV7.td
4f2ada9422ed2e38ac0e53ca49f712e741bdff54 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Correct itinerary class for VPADD

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100654 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1c03f2493f93ed8fe3c99b39b5b3529771060d9b 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Correct itinerary class for VPADD

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100654 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
53ab10f9d8a59a95cd8d56dd23e42d782cf0a326 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> VP{MAX, MIN} are of IIC_VSUBi4D itin class as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100653 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4ac0af851f13aa29b4fc5416b90c00025ba05933 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> VP{MAX, MIN} are of IIC_VSUBi4D itin class as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100653 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
10775c13f7c0f589f24719dc3fb81af5b07c5213 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> VHADD differs from VHSUB at least on A9 - the former reads both operands in the second cycle, while the latter reads second operand in first cycle. Introduce new itin classes to catch this behavior. Whether this is true for A8 as well is WIP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100652 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleV7.td
f8b5c636178aa959539d8162c771dcb68a134706 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> VHADD differs from VHSUB at least on A9 - the former reads both operands in the second cycle, while the latter reads second operand in first cycle. Introduce new itin classes to catch this behavior. Whether this is true for A8 as well is WIP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100652 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMSchedule.td
RMScheduleV7.td
2cea67bb67b99cd41be73108d03cb5a2349ea1ef 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some easy NEON scheduling goodness for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100651 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
268b7446cfc14c35758f1b0b6b00eeaef3a43f5c 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some easy NEON scheduling goodness for A9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100651 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
1c05469155761552a82da4ac33647f47e4b45dd7 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Define new itin classes for ARM <-> VFP reg moves to distinguish from NEON ops. Define proper scheduling itinerary for them on A9. A8 TRM does not specify latency for them at all :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100650 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleV7.td
a31c6fb65e3741fc195ec7f89dc2ac4761ea298a 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Define new itin classes for ARM <-> VFP reg moves to distinguish from NEON ops. Define proper scheduling itinerary for them on A9. A8 TRM does not specify latency for them at all :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100650 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleV7.td
c12ea2987d16220178ec483cd7dbba171daa1690 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> FCONST{S,D} behaves the same way as FP unary instructions. This is true for both A8 and A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100649 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
63401e33cb438edbbae531389a79070026fefe9e 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> FCONST{S,D} behaves the same way as FP unary instructions. This is true for both A8 and A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100649 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
9b84130212977dc63cbe664606b491f9164f9a36 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Proper cycle times for locks, since wbck latency can be larger than fwd latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100648 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
bcc02d13bb268bcd95903c00d5f92ef37a6207e9 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Proper cycle times for locks, since wbck latency can be larger than fwd latency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100648 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
783dc90c81525ffbab082d0e68a77c9c913ffbd0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add new itin classes for FP16 <-> FP32 conversions and make uise of them for A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100647 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleV7.td
c492e094553bcd64be999f5068eca8d04d872a8a 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Add new itin classes for FP16 <-> FP32 conversions and make uise of them for A9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100647 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleV7.td
f396779d23e585c302178e01cc1d058aa7f8cae4 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Make use of new reserved/required scheduling stuff: introduce VFP and NEON locks to model domain cross stalls precisly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100646 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleV7.td
391b3431e2a9049fb1a5d51b6cca1c9a86d636c1 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Make use of new reserved/required scheduling stuff: introduce VFP and NEON locks to model domain cross stalls precisly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100646 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleV7.td
71e4e0315bffa9627b96bbb13846c9d3da5779b0 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some bits of A9 scheduling: VFP

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100643 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMScheduleV7.td
2eeeff83717498be1d7e52e2ef221e8d2f7df42d 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some bits of A9 scheduling: VFP

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100643 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMScheduleV7.td
5a998075a8f6fc6375c049ec82337e67402fc4be 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Separate const from non-const stuff during mergeing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100642 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
035b23a0f4320d8397c5eeef0b9d5feecfd205b5 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Separate const from non-const stuff during mergeing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100642 91177308-0d34-0410-b5e6-96231b3b80d8
RMGlobalMerge.cpp
3e27a4b83f35ac6c5c792c77c3b2b58cfaedd484 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some initial version of global merger

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100641 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMGlobalMerge.cpp
RMTargetMachine.cpp
RMTargetMachine.h
1e7b324fe517583eb093854e17f1619324da4582 07-Apr-2010 Anton Korobeynikov <asl@math.spbu.ru> Some initial version of global merger

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100641 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMGlobalMerge.cpp
RMTargetMachine.cpp
RMTargetMachine.h
1a85127694bde436b785778d5d28081aae85f9b1 07-Apr-2010 Bob Wilson <bob.wilson@apple.com> Expand SELECT and SELECT_CC for NEON vector types.
Radar 7770501.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100568 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d0910c4534d323d101729d796e70805d3c2f0716 07-Apr-2010 Bob Wilson <bob.wilson@apple.com> Expand SELECT and SELECT_CC for NEON vector types.
Radar 7770501.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100568 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8d357866cc99a950914087d748152975bb6ff3b6 05-Apr-2010 Chris Lattner <sabre@nondot.org> don't use emitlabel in the arm asm printer yet, the order
isn't well specified. ARM really needs to have its instprinter
finished at some point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
03335350547b5d3521f9912d301bbb799d7eea31 05-Apr-2010 Chris Lattner <sabre@nondot.org> don't use emitlabel in the arm asm printer yet, the order
isn't well specified. ARM really needs to have its instprinter
finished at some point.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100439 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
534cd52347e282750543244d9918fcaf8d46a748 05-Apr-2010 Chris Lattner <sabre@nondot.org> fix a couple problems I introduced handling symbols
with spaces in them. Sym->getName() != OS << *Sym




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100434 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0752cda4de245978e14d806831abba4506272cd0 05-Apr-2010 Chris Lattner <sabre@nondot.org> fix a couple problems I introduced handling symbols
with spaces in them. Sym->getName() != OS << *Sym




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100434 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6d64b1bf6e2ccf3cfdf7bbad7590b6ce47f860dc 05-Apr-2010 Johnny Chen <johnny.chen@apple.com> Get rid of traling whitespaces. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100404 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
7fb053dd45f7754b0a359a9de1a7445aefcca318 05-Apr-2010 Johnny Chen <johnny.chen@apple.com> Get rid of traling whitespaces. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100404 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
cf23d97c4882e2683452797b455f61722f912874 05-Apr-2010 Johnny Chen <johnny.chen@apple.com> The disassembler impl. of MCDisassembler::getInstruction() was using the pattern
uint32_t insn;
MemoryObject.readBytes(Address, 4, (uint8_t*)&insn, NULL)

to read 4 bytes of memory contents into a 32-bit uint variable. This leaves the
interpretation of byte order up to the host machine and causes PPC test cases of
arm-tests, neon-tests, and thumb-tests to fail. Fixed to use a byte array for
reading the memory contents and shift the bytes into place for the 32-bit uint
variable in the ARM case and 16-bit halfword in the Thumb case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100403 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
9d563b676cc9f3bcd9a9806ea5e9a791f35e3d70 05-Apr-2010 Johnny Chen <johnny.chen@apple.com> The disassembler impl. of MCDisassembler::getInstruction() was using the pattern
uint32_t insn;
MemoryObject.readBytes(Address, 4, (uint8_t*)&insn, NULL)

to read 4 bytes of memory contents into a 32-bit uint variable. This leaves the
interpretation of byte order up to the host machine and causes PPC test cases of
arm-tests, neon-tests, and thumb-tests to fail. Fixed to use a byte array for
reading the memory contents and shift the bytes into place for the 32-bit uint
variable in the ARM case and 16-bit halfword in the Thumb case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100403 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
4f8ea2957aa89b58fe484ab898ece009d2378173 05-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field.

When a target instruction wants to set target-specific flags, it should simply
set bits in the TSFlags bit vector defined in the Instruction TableGen class.

This works well because TableGen resolves member references late:

class I : Instruction {
AddrMode AM = AddrModeNone;
let TSFlags{3-0} = AM.Value;
}

let AM = AddrMode4 in
def ADD : I;

TSFlags gets the expected bits from AddrMode4 in this example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100384 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
fddb7667ca4d8fe83f96b388295849281ddaa5b4 05-Apr-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field.

When a target instruction wants to set target-specific flags, it should simply
set bits in the TSFlags bit vector defined in the Instruction TableGen class.

This works well because TableGen resolves member references late:

class I : Instruction {
AddrMode AM = AddrModeNone;
let TSFlags{3-0} = AM.Value;
}

let AM = AddrMode4 in
def ADD : I;

TSFlags gets the expected bits from AddrMode4 in this example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100384 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
6395b0ac8c233d46d84d3ee9e8e08c1d8ca42760 05-Apr-2010 Evan Cheng <evan.cheng@apple.com> Temporarily remove to disable building of ARM disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100380 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/Makefile
cb8660942179416e6505e202d0436ae0d58228d7 05-Apr-2010 Evan Cheng <evan.cheng@apple.com> Temporarily remove to disable building of ARM disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100380 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/Makefile
c477cefe21c994a36294390fc5d4b73df5c81603 05-Apr-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 100265 but instead disable building of ARM disassembly for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100379 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
akefile
f6232cf8bbb72ac270217455d2a198838566316e 05-Apr-2010 Evan Cheng <evan.cheng@apple.com> Re-apply 100265 but instead disable building of ARM disassembly for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100379 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
akefile
2b264adfbb8cad0f7b34f7270fbd86b05822680a 05-Apr-2010 Evan Cheng <evan.cheng@apple.com> Reverting 100265 to try to get buildbots green again. Lots of self-hosting buildbots started complaining since this commit. Also xfail ARM disassembly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100378 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
1b0194d646d67c341a162c580196bb25aee2e12a 05-Apr-2010 Evan Cheng <evan.cheng@apple.com> Reverting 100265 to try to get buildbots green again. Lots of self-hosting buildbots started complaining since this commit. Also xfail ARM disassembly tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100378 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
bec073cea9e938743567789cc5deac473da04506 05-Apr-2010 Chris Lattner <sabre@nondot.org> just have all targets create the DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
90429c487fe62582241ffe0d3e8acce936f2f8bc 05-Apr-2010 Chris Lattner <sabre@nondot.org> just have all targets create the DwarfWriter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0e21124a12a70b4f882c3227f711c944523b5698 05-Apr-2010 Chris Lattner <sabre@nondot.org> simplify various getAnalysisUsage implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8e680482c19a2fab185f88a0dea18313e4be70a9 05-Apr-2010 Chris Lattner <sabre@nondot.org> simplify various getAnalysisUsage implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100376 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1f850aa77bd5df21936cf59660b16368858e6d32 05-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate the magic AbsoluteDebugSectionOffsets MAI hook,
which is really a property of the section being referenced.
Add a predicate to MCSection to replace it.

Yay for reduction in magic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100367 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
3d2251361171b1a41bdb2ac71882e69d48617f49 05-Apr-2010 Chris Lattner <sabre@nondot.org> eliminate the magic AbsoluteDebugSectionOffsets MAI hook,
which is really a property of the section being referenced.
Add a predicate to MCSection to replace it.

Yay for reduction in magic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100367 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
cd21b8d590c5930b7bcaf1340cdca2f53c34ec06 04-Apr-2010 Chris Lattner <sabre@nondot.org> revert my patch, need to reconsider this and figure out what is really going on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100358 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
1d20473c9d920ce7d6aef438ea89544460c56f0f 04-Apr-2010 Chris Lattner <sabre@nondot.org> revert my patch, need to reconsider this and figure out what is really going on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100358 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
5acb9224102b971807fc6aa25ccacb13ccd4cf73 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix pasto, this is the wrong setting for arm elf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100357 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
416604703098e5c8e044828ebec6bdbf35d5039c 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix pasto, this is the wrong setting for arm elf.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100357 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
97c69b7c9f982bd1bd3bf1b67f82cb3778235939 04-Apr-2010 Chris Lattner <sabre@nondot.org> clean up the asmprinter header and privatize some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100342 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3f53c8398d81065736a784469c9dd5afff85673f 04-Apr-2010 Chris Lattner <sabre@nondot.org> clean up the asmprinter header and privatize some stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100342 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
017c7f97bb1d77c393f15ebba21c92c31631df9f 04-Apr-2010 Chris Lattner <sabre@nondot.org> remove TargetMachine.h #include, also, TRI isn't used frequently
enough to warrant caching in AsmPrinter, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100336 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9d1c1ada213c80135fbdda704175aae689daa6f9 04-Apr-2010 Chris Lattner <sabre@nondot.org> remove TargetMachine.h #include, also, TRI isn't used frequently
enough to warrant caching in AsmPrinter, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100336 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3eac1ed5c28f6fd3b670f996e71709c6b16ab9d6 04-Apr-2010 Chris Lattner <sabre@nondot.org> Momentous day: remove the "O" member from AsmPrinter. Now all
"asm printering" happens through MCStreamer. This also
Streamerizes PIC16 debug info, which escaped my attention.

This removes a leak from LLVMTargetMachine of the 'legacy'
output stream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b23569aff0a6d2b231cb93cc4acd0ac060ba560f 04-Apr-2010 Chris Lattner <sabre@nondot.org> Momentous day: remove the "O" member from AsmPrinter. Now all
"asm printering" happens through MCStreamer. This also
Streamerizes PIC16 debug info, which escaped my attention.

This removes a leak from LLVMTargetMachine of the 'legacy'
output stream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100327 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
82d07b7cf0920fe0c55f948f4577757e01becebb 04-Apr-2010 Chris Lattner <sabre@nondot.org> mcize a bunch more stuff, using EmitRawText for things we
don't have mcstreamer support for yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100319 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9d7efd3081ef13b4d1ac7e0ad4854e92e5f132ad 04-Apr-2010 Chris Lattner <sabre@nondot.org> mcize a bunch more stuff, using EmitRawText for things we
don't have mcstreamer support for yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100319 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ae18179a38d3ea80e7505a36e35313b9b075cf28 04-Apr-2010 Chris Lattner <sabre@nondot.org> convert the non-MCInstPrinter'ized EmitInstruction
implementations to use EmitRawText instead of writing
directly to "O".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100318 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7ad07c46362500f7291a92742569e94fd3538dfd 04-Apr-2010 Chris Lattner <sabre@nondot.org> convert the non-MCInstPrinter'ized EmitInstruction
implementations to use EmitRawText instead of writing
directly to "O".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100318 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3eb5dc17a0715f7c67caca590c8349f5599ff657 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix PrintAsmOperand and PrintAsmMemoryOperand to pass down
raw_ostream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100313 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c75c028a15a13786eee585aa634b4faf694dd00a 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix PrintAsmOperand and PrintAsmMemoryOperand to pass down
raw_ostream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100313 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
99fbae7d5b397f285b5e6a9d4da079f79214e1b3 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix an ugly wart in the MCInstPrinter api where the
raw_ostream to print an instruction to had to be specified
at MCInstPrinter construction time instead of being able
to pick at each call to printInstruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
d374087be5360a353a4239a155b1227057145f48 04-Apr-2010 Chris Lattner <sabre@nondot.org> fix an ugly wart in the MCInstPrinter api where the
raw_ostream to print an instruction to had to be specified
at MCInstPrinter construction time instead of being able
to pick at each call to printInstruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100307 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
4e972531cf2d719522ab38ce3b5ad1a625579d03 04-Apr-2010 Chris Lattner <sabre@nondot.org> change a ton of code to not implicitly use the "O" raw_ostream
member of AsmPrinter. Instead, pass it in explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
35c33bd772b3cfb34fdc6b5c9171f955454d0043 04-Apr-2010 Chris Lattner <sabre@nondot.org> change a ton of code to not implicitly use the "O" raw_ostream
member of AsmPrinter. Instead, pass it in explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100306 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
483af3c218eaedddcf8873e6af35eba739f593ab 04-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
20adc9dc4650313f017b27d9818eb2176238113d 04-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100304 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
6d718817f982b804ff516e43a47f38aa78d2a4a9 04-Apr-2010 Chris Lattner <sabre@nondot.org> asmstreamerize the .size directive for function bodies, force clients
of printOffset to pass in a stream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0c08d092049c025c9ccf7143e39f39dc4e30d6b4 04-Apr-2010 Chris Lattner <sabre@nondot.org> asmstreamerize the .size directive for function bodies, force clients
of printOffset to pass in a stream to print to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e04b73d1d82f9beac274d11d8a97457fef71865e 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Get rid of the middleman (ARMAlgorithm), which causes more trouble than the
abstraction it brings. And also get rid of the atexit() handler, it does not
belong in the lib directory. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100265 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
7fed809484195c5ae1ab7ab7b706320af2f35cf5 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Get rid of the middleman (ARMAlgorithm), which causes more trouble than the
abstraction it brings. And also get rid of the atexit() handler, it does not
belong in the lib directory. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100265 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
21c6bcb3f02225544028ce2db38008d55699add8 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100259 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
b7aaed83e2f51769c54d9b0c46fc22cb429881c2 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100259 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
af66e862f426ca84a82ca95b5e376263a1568545 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Register ARMAlgorithm::DoCleanup() to be called on exit to free the memory
occuplied by the cached ARMAlgorithm objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100258 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
b35ae7f7d6fb6bbeb08246922760f0f55b7a8b5d 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Register ARMAlgorithm::DoCleanup() to be called on exit to free the memory
occuplied by the cached ARMAlgorithm objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100258 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
bf51684944f98bbaf7a22c68c326c98121d65d54 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fix another build warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100251 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.h
a70261550ec464d3ccacd966e72664c997a4cbb7 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Fix another build warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100251 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassemblerCore.h
3ed7eaf80cf71dbd63fa9903a9412db9b2593252 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Second try of initial ARM/Thumb disassembler check-in. It consists of a tablgen
backend (ARMDecoderEmitter) which emits the decoder functions for ARM and Thumb,
and the disassembler core which invokes the decoder function and builds up the
MCInst based on the decoded Opcode.

Reviewed by Chris Latter and Bob Wilson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100233 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.h
akefile
b68a3ee82a8a34f7bae1d68d76f574e76a5535ef 03-Apr-2010 Johnny Chen <johnny.chen@apple.com> Second try of initial ARM/Thumb disassembler check-in. It consists of a tablgen
backend (ARMDecoderEmitter) which emits the decoder functions for ARM and Thumb,
and the disassembler core which invokes the decoder function and builds up the
MCInst based on the decoded Opcode.

Reviewed by Chris Latter and Bob Wilson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100233 91177308-0d34-0410-b5e6-96231b3b80d8
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.h
akefile
754058207f2cda84331c448ffcc115debc847bcd 03-Apr-2010 Sean Callanan <scallanan@apple.com> Added support for reporting operand token ranges
to the ARM AsmParser.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100232 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
762647673379dbcff6bbba6167b0b1b0d658ba9d 03-Apr-2010 Sean Callanan <scallanan@apple.com> Added support for reporting operand token ranges
to the ARM AsmParser.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100232 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d2c680be1a3161bc53018ae27f6a94628055a3ab 02-Apr-2010 Chris Lattner <sabre@nondot.org> use DebugLoc default ctor instead of DebugLoc::getUnknownLoc()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100214 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
c7f3ace20c325521c68335a1689645b43b06ddf0 02-Apr-2010 Chris Lattner <sabre@nondot.org> use DebugLoc default ctor instead of DebugLoc::getUnknownLoc()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100214 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
f9f760e09acb520d70f23cdbd6b2d288b9094a46 02-Apr-2010 Mon P Wang <wangmp@apple.com> Revert r100191 since it breaks objc in clang


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e754d3fb852abdeaf910c7331eed60f6303597c1 02-Apr-2010 Mon P Wang <wangmp@apple.com> Revert r100191 since it breaks objc in clang


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100199 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
703dd7c7eda9ffea68170bd9d8cdbc74322825dc 02-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e33c848fa481b038d5ad0c7c898c33b2b27ec71e 02-Apr-2010 Mon P Wang <wangmp@apple.com> Reapply address space patch after fixing an issue in MemCopyOptimizer.
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100191 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
139dcd7aa428c188facd672b1c5a0e299b298390 02-Apr-2010 Dale Johannesen <dalej@apple.com> Teach AnalyzeBranch, RemoveBranch and the branch
folder to be tolerant of debug info following the
branch(es) at the end of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100168 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
93d6a7e9c21204c52d6efec6c672163e7de79660 02-Apr-2010 Dale Johannesen <dalej@apple.com> Teach AnalyzeBranch, RemoveBranch and the branch
folder to be tolerant of debug info following the
branch(es) at the end of a block.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100168 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
58bf0eeec893ce128943d790b1dfd53a26612d06 01-Apr-2010 Jim Grosbach <grosbach@apple.com> vml[as] are slow on 1136jf-s also.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100066 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
1118b5e490717fc13895e1307a15eb663d3758d1 01-Apr-2010 Jim Grosbach <grosbach@apple.com> vml[as] are slow on 1136jf-s also.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100066 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
dfd093fd107d0f6047fe646d1ac90ee29c9ea52a 31-Mar-2010 Bill Wendling <isanbard@gmail.com> Comment the changes for r98218 and friends inside the source code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100031 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5e1b55d67288874f8669621b9176814ce449f8f5 31-Mar-2010 Bill Wendling <isanbard@gmail.com> Comment the changes for r98218 and friends inside the source code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100031 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
76821a73c39a21f7116ef99aa60940b07aedefac 31-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
100f090adde26005b9f1eca96871dff52825b27b 31-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert Mon Ping's change 99928, since it broke all the llvm-gcc buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99948 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
f4862b06ca84fae2bb80e4936b3b2e598419c704 30-Mar-2010 Mon P Wang <wangmp@apple.com> Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
808bab0169ab7d2e8dfdc72dd2c991cd8ff2396d 30-Mar-2010 Mon P Wang <wangmp@apple.com> Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
A update of langref will occur in a subsequent checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99928 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
3b197832bf569e331ee057aece06ecd99b13ba2f 30-Mar-2010 Chris Lattner <sabre@nondot.org> Rip out the 'is temporary' nonsense from the MCContext interface to
create symbols. It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.

This fixes rdar://7807601.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
9b97a73dedf736e14b04a3d1a153f10d25b2507b 30-Mar-2010 Chris Lattner <sabre@nondot.org> Rip out the 'is temporary' nonsense from the MCContext interface to
create symbols. It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.

This fixes rdar://7807601.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99902 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
8d65dc8ff1e323d95527508ee908e0adf02ee93a 29-Mar-2010 Chris Lattner <sabre@nondot.org> add a note.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99815 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
f283e40b6a48368a1713bddbb8556797bfec130b 29-Mar-2010 Chris Lattner <sabre@nondot.org> add a note.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99815 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
24b8129c8f398e17c779cc87c0861a4158665b8c 29-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVTBLFrm to represent A8.6.406 VTBL, VTBX Vector Table Lookup Instructions.
These instructions use byte index in a control vector (M:Vm) to lookup byte
values in a table and generate a new vector (D:Vd). The table is specified via
a list of vectors, which can be:

{Dn}
{Dn D<n+1>}
{Dn D<n+1> D<n+2>}
{Dn D<n+1> D<n+2> D<n+3>}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99789 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
79c4d820b46cee1e78ecdef80b3f2ed6373839b7 29-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVTBLFrm to represent A8.6.406 VTBL, VTBX Vector Table Lookup Instructions.
These instructions use byte index in a control vector (M:Vm) to lookup byte
values in a table and generate a new vector (D:Vd). The table is specified via
a list of vectors, which can be:

{Dn}
{Dn D<n+1>}
{Dn D<n+1> D<n+2>}
{Dn D<n+1> D<n+2> D<n+3>}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99789 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
0e28e4b5f66ec987dcf33396fa2106ed0936bce4 28-Mar-2010 Chris Lattner <sabre@nondot.org> fix integer negates to use the proper type for the zero vectors,
this also depends on the new "bitconvert dropping" behavior just
added to tblgen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99757 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0a00ed98f1d0734bc5bc699f58852144aa54195a 28-Mar-2010 Chris Lattner <sabre@nondot.org> fix integer negates to use the proper type for the zero vectors,
this also depends on the new "bitconvert dropping" behavior just
added to tblgen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99757 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
71c5b64ff9454bba229ee94146d1a3a6e67c7764 28-Mar-2010 Chris Lattner <sabre@nondot.org> fix vnot matching to explicitly specify the type of the
input to be v8i8 or v16i8, which buildvectors get canonicalized to.

This allows the patterns that were previously using a bare 'vnot' to
match, before they couldn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99754 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b26fdcb48bd8dcffa338c98cf9e9c05346f2bb51 28-Mar-2010 Chris Lattner <sabre@nondot.org> fix vnot matching to explicitly specify the type of the
input to be v8i8 or v16i8, which buildvectors get canonicalized to.

This allows the patterns that were previously using a bare 'vnot' to
match, before they couldn't.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99754 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
acfc7e49a105dba3b409f155e6f516aa245a6678 27-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99705 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2cd1a12fe07be753e331a12389aa1ceb49de836b 27-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99705 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
724df1cf3a37f805adc3064d63d0697860036224 27-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add a format argument to the N3V and N3VX classes, removing the N3Vf class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99704 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
10bc69c7262d32321b65f21b80a57826b1a90acd 27-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add a format argument to the N3V and N3VX classes, removing the N3Vf class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99704 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
9b2b64f7fe304b8d5700fd321f4a6ef1b8185d52 27-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVMulSLFrm to represent "3-register multiply with scalar" operations and set
it as the format for the appropriate N3V*SL*<> classes. These instructions
require special handling of the M:Vm field which encodes the restricted Dm and
the lane index within Dm.

Examples are A8.6.325 VMLA, VMLAL, VMLS, VMLSL (by scalar):

vmlal.s32 q3, d2, d10[0]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99690 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
897dd0c58859e10afaa36e4175eef9a703b4a794 27-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVMulSLFrm to represent "3-register multiply with scalar" operations and set
it as the format for the appropriate N3V*SL*<> classes. These instructions
require special handling of the M:Vm field which encodes the restricted Dm and
the lane index within Dm.

Examples are A8.6.325 VMLA, VMLAL, VMLS, VMLSL (by scalar):

vmlal.s32 q3, d2, d10[0]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99690 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
408b8036333b3f0e8963497f3bbab1032b16f4cb 27-Mar-2010 Jim Grosbach <grosbach@apple.com> Thumb2 storeFrom/LoadToStackSlot() need to handle tGPR regs directly, not pass
through to the generic version. The generic functions use STR/LDR, but T2
needs the t2STR/t2LDR instead so we get the addressing mode correct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99678 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
9ab042701528bc104053f93135ef7fd1bbb1153b 27-Mar-2010 Jim Grosbach <grosbach@apple.com> Thumb2 storeFrom/LoadToStackSlot() need to handle tGPR regs directly, not pass
through to the generic version. The generic functions use STR/LDR, but T2
needs the t2STR/t2LDR instead so we get the addressing mode correct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99678 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
fe0978b58bb89b23f7d60a9b507ceb11b4a2343a 27-Mar-2010 Johnny Chen <johnny.chen@apple.com> Remove the duplicate multiclass N3VSh_QHSD and use N3VInt_QHSD which is modified
to now take a format argument. N3VDInt<> and N3VQInt<> are modified to take a
format argument as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99676 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9ee9d7d4931ebfb5d16ca401aef96aeb88689d69 27-Mar-2010 Johnny Chen <johnny.chen@apple.com> Remove the duplicate multiclass N3VSh_QHSD and use N3VInt_QHSD which is modified
to now take a format argument. N3VDInt<> and N3VQInt<> are modified to take a
format argument as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99676 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
633601e00ff4db42bcfed568411852a1bfee5a7b 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVExtFrm to represent NEON Vector Extract Instructions, that uses Inst{11-8}
to encode the byte location of the extracted result in the concatenation of the
operands, from the least significant end.

Modify VEXTd and VEXTq classes to use the format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99659 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
629c25cda6af43c16ee4d1ef2301c9ff1531d041 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVExtFrm to represent NEON Vector Extract Instructions, that uses Inst{11-8}
to encode the byte location of the extracted result in the concatenation of the
operands, from the least significant end.

Modify VEXTd and VEXTq classes to use the format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99659 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
b78241ca7be28a0fb6f76710a6741cac6de530fc 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add N3RegVShFrm to represent 3-Register Vector Shift Instructions, which do not
follow the N3RegFrm's operand order of D:Vd N:Vn M:Vm. The operand order of
N3RegVShFrm is D:Vd M:Vm N:Vn (notice that M:Vm is the first src operand).

Add a parent class N3Vf which requires passing a Format argument and which the
N3V class is modified to inherit from. N3V class represents the "normal"
3-Register NEON Instructions with N3RegFrm.

Also add a multiclass N3VSh_QHSD to represent clusters of NEON 3-Register Shift
Instructions and replace 8 invocations with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99655 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
c6e704df8d6e96260a463dac4675ed6968e186e6 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add N3RegVShFrm to represent 3-Register Vector Shift Instructions, which do not
follow the N3RegFrm's operand order of D:Vd N:Vn M:Vm. The operand order of
N3RegVShFrm is D:Vd M:Vm N:Vn (notice that M:Vm is the first src operand).

Add a parent class N3Vf which requires passing a Format argument and which the
N3V class is modified to inherit from. N3V class represents the "normal"
3-Register NEON Instructions with N3RegFrm.

Also add a multiclass N3VSh_QHSD to represent clusters of NEON 3-Register Shift
Instructions and replace 8 invocations with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99655 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
6c24fc0ed48d4fd0b36f63999deedd1622e29232 26-Mar-2010 Jim Grosbach <grosbach@apple.com> vldm/vstm can only do up to 16 double-word registers at a time.
Radar 7797856

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99630 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
9a52d0c352c852dc9517430442afc54f53e1d4dd 26-Mar-2010 Jim Grosbach <grosbach@apple.com> vldm/vstm can only do up to 16 double-word registers at a time.
Radar 7797856

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99630 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
d98e797e5c4e9ec8cf91b549cfe6c1a3f17380b9 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add N3RegFrm to represent "NEON 3 vector register format" instructions.
Examples are VABA (Vector Absolute Difference and Accumulate), VABAL (Vector
Absolute Difference and Accumulate Long), and VABD (Vector Absolute Difference).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99628 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
575c91cba78332bd9add0949e31a9c228c44cf00 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add N3RegFrm to represent "NEON 3 vector register format" instructions.
Examples are VABA (Vector Absolute Difference and Accumulate), VABAL (Vector
Absolute Difference and Accumulate Long), and VABD (Vector Absolute Difference).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99628 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
81f9b983bd0dd9d73c89fc42ff39cade9377f25c 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add N2RegVShLFrm and N2RegVShRFrm formats so that the disassembler can easily
dispatch to the appropriate routines to handle the different interpretations of
the shift amount encoded in the imm6 field. The Vd, Vm fields are interpreted
the same between the two, though.

See, for example, A8.6.367 VQSHL, VQSHLU (immediate) for N2RegVShLFrm format and
A8.6.368 VQSHRN, VQSHRUN for N2RegVShRFrm format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99590 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
0a3dc10eba975195e8b9b028bd21a4969cd6f2de 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add N2RegVShLFrm and N2RegVShRFrm formats so that the disassembler can easily
dispatch to the appropriate routines to handle the different interpretations of
the shift amount encoded in the imm6 field. The Vd, Vm fields are interpreted
the same between the two, though.

See, for example, A8.6.367 VQSHL, VQSHLU (immediate) for N2RegVShLFrm format and
A8.6.368 VQSHRN, VQSHRUN for N2RegVShRFrm format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99590 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
20d1d65606b107e5f79552612df017f8265a0a53 26-Mar-2010 Jim Grosbach <grosbach@apple.com> switch the flag for using NEON for SP floating point to a subtarget 'feature'.

Re-commit. This time complete with testsuite updates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99570 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
7ec7a0e96b34fedf11445c1dde27a4fac8e8a1a7 26-Mar-2010 Jim Grosbach <grosbach@apple.com> switch the flag for using NEON for SP floating point to a subtarget 'feature'.

Re-commit. This time complete with testsuite updates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99570 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
48297ab3e63488b3542546c8749a8234e050fdd9 26-Mar-2010 Jim Grosbach <grosbach@apple.com> need to fix 'make check' tests first. revert for a moment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99569 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
78e496e165e3093f3d7373e50da1c91b9937bc69 26-Mar-2010 Jim Grosbach <grosbach@apple.com> need to fix 'make check' tests first. revert for a moment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99569 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
00f8f55dc6e38a9e05046abedc9e9628ab083c8c 26-Mar-2010 Jim Grosbach <grosbach@apple.com> switch the flag for using NEON for SP floating point to a subtarget 'feature'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99568 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
bd17bc96bf54cc58d91c2d20964c6c5e28bffa57 26-Mar-2010 Jim Grosbach <grosbach@apple.com> switch the flag for using NEON for SP floating point to a subtarget 'feature'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99568 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
bc4e39eed59cea7dcf004e98d49828841e43cc72 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Removed instruction class NI from ARMInstrFormats.td.
It doesn't seem to be used anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99566 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
da9283cd57843eb21fcd4117833e165017bb9123 26-Mar-2010 Johnny Chen <johnny.chen@apple.com> Removed instruction class NI from ARMInstrFormats.td.
It doesn't seem to be used anywhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99566 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
dc748c274ac77d5d2b2b56d486d8a29d0cb9bbcd 26-Mar-2010 Jim Grosbach <grosbach@apple.com> switch the use-vml[as] instructions flag to a subtarget 'feature'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99565 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
6b2e8dc9a0e4ebda645ee4eba95711eb630b4edf 26-Mar-2010 Jim Grosbach <grosbach@apple.com> switch the use-vml[as] instructions flag to a subtarget 'feature'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99565 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
d2048ff30674b142c716aacda171ac0c726ced40 25-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVDupLnFrm and change NVDupLane class to use that format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99557 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
2d2898e6e99a5a4a16352b86070fa0986b7d1efd 25-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVDupLnFrm and change NVDupLane class to use that format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99557 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
cd20f1b53c46d5e3d11a30ad2783aa33b83b2efe 25-Mar-2010 Jim Grosbach <grosbach@apple.com> ARM cortex-a8 doesn't do vmla/vmls well. disable them by default for that cpu

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99549 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
65cef00142c9a187707c56a293ae794765f7463b 25-Mar-2010 Jim Grosbach <grosbach@apple.com> ARM cortex-a8 doesn't do vmla/vmls well. disable them by default for that cpu

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99549 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
16e78bb21e443d10c53c341a852d3361e3d0b997 25-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVCVTFrm (NEON Convert with fractional bits immediate) and modify N2VImm to
expect a Format arg. N2VCvtD/N2VCvtQ are modified to use the NVCVTFrm format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
fa80bec349b7fff9ec97b5f66795d7bafa72da62 25-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NVCVTFrm (NEON Convert with fractional bits immediate) and modify N2VImm to
expect a Format arg. N2VCvtD/N2VCvtQ are modified to use the NVCVTFrm format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
01f7ec2003f453661eefbe68a5e5be3861f38b73 25-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added a new instruction class NVDupLane to be inherited by VDUPLND and VDUPLNQ,
instead of the current N2V. Format of NVDupLane instances are set to NEONFrm
currently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99518 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
e4614f7e84a7219164e9992fff855dee3816a08e 25-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added a new instruction class NVDupLane to be inherited by VDUPLND and VDUPLNQ,
instead of the current N2V. Format of NVDupLane instances are set to NEONFrm
currently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99518 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
bf83ec6ee76e43bf2c9e92d14b2c2c0114c81f43 24-Mar-2010 Jim Grosbach <grosbach@apple.com> Make the use of the vmla and vmls VFP instructions controllable via cmd line.
Preliminary testing shows significant performance wins by not using these
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99436 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
2676737e5ed3e4b5c89b4d06b60d998e9318eb73 24-Mar-2010 Jim Grosbach <grosbach@apple.com> Make the use of the vmla and vmls VFP instructions controllable via cmd line.
Preliminary testing shows significant performance wins by not using these
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99436 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
3cc826c09e8ca9b2406934c6e8967073c1a88419 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Trivial formating change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
69631b13275f7f1b35be2df9135632e0671c1a91 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Trivial formating change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
614338f13645d35bf9e01dc708c8781b73d873e4 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Reverted r99326 which added NVdVmVCVTFrm, and later renamed to NVCVTFrm.
NVCVTFrm will later be used to describe "vcvt with fractional bits".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99415 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
2fadd6b221893595a7a86eb4b03f5aeadb6088fc 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Reverted r99326 which added NVdVmVCVTFrm, and later renamed to NVCVTFrm.
NVCVTFrm will later be used to describe "vcvt with fractional bits".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99415 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
00f055180c03c8dae34718419aec3f38e781b7dd 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Reverted r99376. The disassembler will deal with the 2-reg format of these two
N3VX instructions using special case code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99409 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
7d85ac09f864bd0756c2a5be781e14b41b7521e6 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Reverted r99376. The disassembler will deal with the 2-reg format of these two
N3VX instructions using special case code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99409 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c4a782c11fd11ae908e3f852056b2539993ff4a3 24-Mar-2010 Jim Grosbach <grosbach@apple.com> tweak the arm if conversion heuristic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99402 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
35075a7e81338c0eea00d1bac6e0d4ffb9c82c82 24-Mar-2010 Jim Grosbach <grosbach@apple.com> tweak the arm if conversion heuristic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99402 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3d4b9e00aa7383a94189f8eb4efa80226291d885 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Mark VMOVDneon and VMOVQ as having the N2RegFrm form to help the disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99376 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b7ba5781e61099368499502636667be801945235 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Mark VMOVDneon and VMOVQ as having the N2RegFrm form to help the disassembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99376 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ee4e0fd45a7c4ee58e5dbe6809338f44db5978b7 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Renamed NVdVmImmFrm and NVdVmVCVTFrm to the more proper N2RegFrm and NVCVTFrm,
respectively, and add some more comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99373 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
c5f413a74c296864d54c8e1a3391e7b15c9b2f97 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Renamed NVdVmImmFrm and NVdVmVCVTFrm to the more proper N2RegFrm and NVCVTFrm,
respectively, and add some more comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99373 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
0c0e24ffceb034dbb951da77a728472823851d2e 24-Mar-2010 Jim Grosbach <grosbach@apple.com> try being more permissive for if-conversion on ARM V7. see what the nightly
test run permformance numbers say as to whether it helps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99355 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fceabef52cfdb9243f483af9030797a343cca2d9 24-Mar-2010 Jim Grosbach <grosbach@apple.com> try being more permissive for if-conversion on ARM V7. see what the nightly
test run permformance numbers say as to whether it helps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99355 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4d2ee1bf11af864e99c15e622406256a218ba775 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Renamed NVdImmFrm to N1RegModImmFrm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99344 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a271174771adce635d29219225843ddb3fb17770 24-Mar-2010 Johnny Chen <johnny.chen@apple.com> Renamed NVdImmFrm to N1RegModImmFrm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99344 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
4756f0ebbf866404e77cdd4d32cf7feb7fce23d1 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Fix typo in the comment for N3VX class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99328 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
841e828702df6c28f2af25930cc06e23bd8fcc88 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Fix typo in the comment for N3VX class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99328 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
7ae22f384ffa05455f329fc64c832cea85cce371 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99327 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
be7849ee7329bd849b09c086b862ed0506ed01a9 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99327 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ed4632eaa8faa98b2b6d0eaa52a91d79fd350260 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add New NEON Format NVdVmVCVTFrm.
Converted some of the NEON vcvt instructions to this format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99326 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
3ae9a57c74346e8697ebd64d3139a0ee6b78118a 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add New NEON Format NVdVmVCVTFrm.
Converted some of the NEON vcvt instructions to this format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99326 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
5d9945242c27bb5f4c21a23b7b7e8d3ef39d5df6 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add New NEON Format NVdVmImmFrm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99322 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
927b88f771ea0c9f511fd0a92dc4a6d4024fed7e 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add New NEON Format NVdVmImmFrm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99322 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
35b8d26e23f3379633190a1209539993484adcba 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix VLDMQ and VSTMQ instructions to use the correct encoding and address modes.
These instructions are only needed for codegen, so I've removed all the
explicit encoding bits for now; they should be set in the same way as the for
VLDMD and VSTMD whenever we add encodings for VFP. The use of addrmode5
requires that the instructions be custom-selected so that the number of
registers can be set in the AM5Opc value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99309 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
df9a4f0591e3f3e7ae3b3c119a0c8cf678594f6b 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix VLDMQ and VSTMQ instructions to use the correct encoding and address modes.
These instructions are only needed for codegen, so I've removed all the
explicit encoding bits for now; they should be set in the same way as the for
VLDMD and VSTMD whenever we add encodings for VFP. The use of addrmode5
requires that the instructions be custom-selected so that the number of
registers can be set in the AM5Opc value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99309 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
052c3813accd31c1d6e5f533301ada89ddfd3156 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix bad indentation, 80-column violations, and trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99295 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
011355944bc914b556d43ca4e3b422049791de08 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix bad indentation, 80-column violations, and trailing whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99295 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
ad4d8ec1d98bde55ab1813fe0c54cf947f81b547 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add New NEON Format NVdImmFrm.
Ref: A7.4.6 One register and a modified immediate value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99288 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
785516adc5f3de0911eca1ff94283e6bc8ace7ca 23-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add New NEON Format NVdImmFrm.
Ref: A7.4.6 One register and a modified immediate value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99288 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
2194448857f6c2525d9b041e6665ac05d6c19f47 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename some instructions to match the corresponding NEON opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99266 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
c289a0252bba42248d7b11699dda27feca8860b6 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename some instructions to match the corresponding NEON opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99266 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
d0a74632055346014293bf0c3341e899910747d3 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Change VST1 instructions for loading Q register values to operate on pairs
of D registers. Add a separate VST1q instruction with a Q register
source operand for use by storeRegToStackSlot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99265 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
11d98997590a1d636b04c4f0756eded6b2d037f3 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Change VST1 instructions for loading Q register values to operate on pairs
of D registers. Add a separate VST1q instruction with a Q register
source operand for use by storeRegToStackSlot.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99265 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
93e7f565dfa8ab025449fbc926210d90edd2c41c 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Change VLD1 instructions for loading Q register values to operate on pairs
of D registers. Add a separate VLD1q instruction with a Q register
destination operand for use by loadRegFromStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99261 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
621f1952430ee8b01b21ac94404e52500d79838b 23-Mar-2010 Bob Wilson <bob.wilson@apple.com> Change VLD1 instructions for loading Q register values to operate on pairs
of D registers. Add a separate VLD1q instruction with a Q register
destination operand for use by loadRegFromStackSlot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99261 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
d993310197e1ad54801651dc2dfe7c81cdd7f81a 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename one more NEON instruction that I missed earlier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99201 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
62ef3c89103484c394389129f1c8ee6f5c9f0f53 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename one more NEON instruction that I missed earlier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99201 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f2cc3780aa04d256935f07edc6aea62d05ad6009 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Regroup some instructions. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99192 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
052ba45bf85a3cdffdbdd016a78bafe03ed40e82 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Regroup some instructions. No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99192 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0ae8449059b4e55e3c9b15e810ffbc1ccf4805ff 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename some VLD1/VST1 instructions to match the implementation, i.e., the
corresponding NEON instructions, instead of operation they are currently
used for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99189 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
a6979754da61adbf1e7e21b5fc22a52d9074887e 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename some VLD1/VST1 instructions to match the implementation, i.e., the
corresponding NEON instructions, instead of operation they are currently
used for.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99189 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
331cdffb6731fd86a5ef1f8f49eb56843fcb7dd6 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove some redundant instruction classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99187 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
58393bc3fdcc0d1f58f4da72388e44d5ed62f927 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove some redundant instruction classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99187 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a4f5fe1090ed699aba4647162fc3ff470b2b3503 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Refactor instruction encoding arguments for VLDnLN/VSTnLN classes to
specify encoding bits in arguments instead of "let" expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99185 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
39842553e89e2c34a7dc31c4b4f118991baa3693 22-Mar-2010 Bob Wilson <bob.wilson@apple.com> Refactor instruction encoding arguments for VLDnLN/VSTnLN classes to
specify encoding bits in arguments instead of "let" expressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99185 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
686b173a02f572c9671fde378368134a9adec317 22-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Don't leak a MachineInstruction from Thumb1InstrInfo::restoreCalleeSavedRegisters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99182 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
fa72340ba096dbe0f765651e425c5c6aa8259931 22-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Don't leak a MachineInstruction from Thumb1InstrInfo::restoreCalleeSavedRegisters.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99182 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
6c566968feccfd14f70bdd2381848bb4857a9beb 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Fix create{AsmInfo,MCDisassembler} to return non-const objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99097 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
5d067fe1580772a8e012ff0acc06e21e9b95d340 20-Mar-2010 Daniel Dunbar <daniel@zuster.org> TargetRegistry: Fix create{AsmInfo,MCDisassembler} to return non-const objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99097 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
b0d7be6eb6b7a0d33687b5ca37ea7a67b5032824 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> pr6652: Use LDM to restore PC to the return address on ARMv4.
Patch by John Tytgat!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99096 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
c88d0722931b8442cd347bd530e2182d164c82c6 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> pr6652: Use LDM to restore PC to the return address on ARMv4.
Patch by John Tytgat!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99096 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
255e748b064722604ac95dc365639f0035c3e48a 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Re-commit r98683 ("remove redundant writeback flag from ARM address mode 6")
with changes to add a separate optional register update argument. Change all
the NEON instructions with address register writeback to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99095 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
EONPreAllocPass.cpp
226036ee731a2041f37f28f958d2b6a50373f4f4 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Re-commit r98683 ("remove redundant writeback flag from ARM address mode 6")
with changes to add a separate optional register update argument. Change all
the NEON instructions with address register writeback to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99095 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
EONPreAllocPass.cpp
029da9589fbb6ab0321af1cdc5582fa93074907a 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instruction variants for VST2, VST3, and VST4 "store-lane" operations with
address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99094 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d5fadaf56ee1e8ee137d34bed6749bd3b11ffd88 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instruction variants for VST2, VST3, and VST4 "store-lane" operations with
address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99094 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8119e92ebf6d7183c9afab1fa06f66890d07951b 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add variants of VST2, VST3 and VST4 with address register writeback, and
rewrite the existing VST3 and VST4 instructions to use the same classes as
the others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99093 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4f4f93f9d624f4fc8af2c508c1895961674f8e9d 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add variants of VST2, VST3 and VST4 with address register writeback, and
rewrite the existing VST3 and VST4 instructions to use the same classes as
the others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99093 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3e98d3665ef3b9438abe1942bcdda9a36f71c573 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instructions for double-spaced VST3 and VST4 without address register
writeback, and refactor the existing double-spaced VST2 instructions.
These are only for the disassembler since codegen doesn't use them, at
least for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99090 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
068b18be0da9ea5f76b727997a9de5d88eccd734 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instructions for double-spaced VST3 and VST4 without address register
writeback, and refactor the existing double-spaced VST2 instructions.
These are only for the disassembler since codegen doesn't use them, at
least for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99090 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6877421a1d94a035c06e0bef8fdb2bb5b72b8cff 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add VST1 instructions with address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99083 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
25eb5013d0516e7ba5105a1ca25c9f61d2ddb0b2 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add VST1 instructions with address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99083 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
29133b0786a7a86297ae5c975a6cce5b4f9d45ec 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instruction variants for VLD2, VLD3, and VLD4 "load-lane" operations with
address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99082 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a1023645f88a50bee7997dc355426049cc0c9799 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instruction variants for VLD2, VLD3, and VLD4 "load-lane" operations with
address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99082 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d22476d2e14f1fcf13348255b50484741c03a220 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Tidy some more comments and whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99081 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
41315282f9bff0a627838b6f4b706ef966354a51 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Tidy some more comments and whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99081 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e5cc860fef2e9c7278d3ab14fd60b1ac1314e0f0 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add variants of VLD2, VLD3 and VLD4 with address register writeback, and
rewrite the existing VLD3 and VLD4 instructions to use the same classes as
the others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99080 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
92cb9321a1bced8ba118e7970ab16e8e4f8f455a 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add variants of VLD2, VLD3 and VLD4 with address register writeback, and
rewrite the existing VLD3 and VLD4 instructions to use the same classes as
the others.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99080 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
15b46a4dd523ea0d20c084a3806d9f3ae37f0435 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Tidy some comments and whitespace for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99078 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
667a13e1be0b2994b7d109b6117647738a5915a4 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Tidy some comments and whitespace for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99078 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
14e26b3f55b772d277c9b56670a4d3bbd35f9e77 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename some instructions for consistency and sanity: use "_UPD" suffix for
load/stores with address register writeback, and use "odd" suffix to distinguish
instructions to access odd numbered registers (instead of "a" and "b").
No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99066 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
95ffecd4fe404b622c3f984995bc9e849be297a0 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Rename some instructions for consistency and sanity: use "_UPD" suffix for
load/stores with address register writeback, and use "odd" suffix to distinguish
instructions to access odd numbered registers (instead of "a" and "b").
No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99066 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
23406948a7dc3a969cfc1d1f7c9515063ac8b856 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instructions for double-spaced VLD3 and VLD4 without address register
writeback, and refactor the existing double-spaced VLD2 instructions.
These are only for the disassembler since codegen doesn't use them, at
least for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99065 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
00bf1d93d7c3274754f56c180556d4475cf91059 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add instructions for double-spaced VLD3 and VLD4 without address register
writeback, and refactor the existing double-spaced VLD2 instructions.
These are only for the disassembler since codegen doesn't use them, at
least for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99065 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
06ce5bf37becf3bd6126cb5325bd2f6230c95d00 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add VLD1 instructions with address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99062 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
99493b2b535697632e63be6d2689aaac6212e755 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Add VLD1 instructions with address register writeback.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99062 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b127434012c8a17e481f57e94459f8003b318601 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert the rest of 98679.
--- Reverse-merging r98679 into 'lib/Target/ARM/ARMInstrVFP.td':
U lib/Target/ARM/ARMInstrVFP.td


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99049 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
55c9cb5a222e1c26ded70d78b2b7ecc83fb54351 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert the rest of 98679.
--- Reverse-merging r98679 into 'lib/Target/ARM/ARMInstrVFP.td':
U lib/Target/ARM/ARMInstrVFP.td


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99049 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
95be1abbfb804a32e710569acb2322425c73219e 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix a very bad typo. Since the register number was off by one, the ARM
load/store optimizer would incorrectly think that registers D26 and D28
were consecutive and would generate a VLDM instruction to load them.
The assembler was not convinced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99043 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
98330ff8e344d2e88c0a2166901d394e813e8162 20-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix a very bad typo. Since the register number was off by one, the ARM
load/store optimizer would incorrectly think that registers D26 and D28
were consecutive and would generate a VLDM instruction to load them.
The assembler was not convinced.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99043 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
caf6bd5053a4dfffc6a403732eaf3dc05a0049a7 20-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NLdStFrm Format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99014 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
caa608e97c07ffe988dd7c76516b9f81ad8ffc0a 20-Mar-2010 Johnny Chen <johnny.chen@apple.com> Add NLdStFrm Format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99014 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
a51f67fd47ba88fc54cdf3f8abc67883a1f13dd1 20-Mar-2010 Johnny Chen <johnny.chen@apple.com> Revert r98679. The disassembler will be updated to depend on the existence of
IndexModeUpd and then populates the Inst{21}=1 while populating the instructions
for disassembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99013 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e86425f22443881ae1051419b4f47114271db79f 20-Mar-2010 Johnny Chen <johnny.chen@apple.com> Revert r98679. The disassembler will be updated to depend on the existence of
IndexModeUpd and then populates the Inst{21}=1 while populating the instructions
for disassembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99013 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
899588eebff371c519d09d10dbadef03dc810ba1 19-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert this change, since it was causing ARM performance regressions.

--- Reverse-merging r98889 into '.':
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/ARMISelLowering.h
U lib/Target/ARM/ARMInstrInfo.td
U lib/Target/ARM/ARMInstrVFP.td
U lib/Target/ARM/ARMISelLowering.cpp
U lib/Target/ARM/ARMInstrFormats.td


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99010 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
76a312b7d1c2b41394696510506967cd0794b831 19-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert this change, since it was causing ARM performance regressions.

--- Reverse-merging r98889 into '.':
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/ARMISelLowering.h
U lib/Target/ARM/ARMInstrInfo.td
U lib/Target/ARM/ARMInstrVFP.td
U lib/Target/ARM/ARMISelLowering.cpp
U lib/Target/ARM/ARMInstrFormats.td


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99010 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
12eb6cde809e11737427f15ec2d194d69326f55f 19-Mar-2010 Johnny Chen <johnny.chen@apple.com> Renumber LdStExFrm from 28 to 11 and shift the existing format values to make
room for it. This is in preparation for another patch which is adding NEON
subformats to facilitate disassembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98967 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
81f04d59f6216d0e105daa9bde2250ca6af35fa5 19-Mar-2010 Johnny Chen <johnny.chen@apple.com> Renumber LdStExFrm from 28 to 11 and shift the existing format values to make
room for it. This is in preparation for another patch which is adding NEON
subformats to facilitate disassembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98967 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrFormats.td
9c19026c6175cc8ed16153765d856b2b429c946d 19-Mar-2010 Chris Lattner <sabre@nondot.org> set SDNPVariadic on nodes throughout the rest of the targets that
need them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98937 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
60e9eac357dc6e6d9396f02b171baf9e70d97649 19-Mar-2010 Chris Lattner <sabre@nondot.org> set SDNPVariadic on nodes throughout the rest of the targets that
need them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98937 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
6ad99550f3416b80aa852d03fbcf0ec0d5bd0f5b 19-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Remove a memory leak from ThumbTargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98936 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.h
c3e45f1ee2741935cf15f0ad7e3e7694681fa125 19-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Remove a memory leak from ThumbTargetMachine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98936 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.h
22bc2c0e66421974fc3cce564d6acc4b04effc2b 19-Mar-2010 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
6b7c2cf5d46ef9d73df66163d3296bc4435a5e20 19-Mar-2010 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98928 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
3257f986d5c9b3be7db58d4efa271f789b0cdb02 19-Mar-2010 Bob Wilson <bob.wilson@apple.com> Update comment to refer to the right filename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98902 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
50622ce8cf429067540232ffabc5b53a81f53ca8 19-Mar-2010 Bob Wilson <bob.wilson@apple.com> Update comment to refer to the right filename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98902 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
2d5880949bac5fb395da458a967893428cf877a9 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Get rid of target-specific fp <-> int nodes when still I'm here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98889 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
341ab138fb3b7b7ebe12371481641f8681cd4e9d 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Get rid of target-specific fp <-> int nodes when still I'm here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98889 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
c761f639f56add3f00ac84e2379d30d648a8bb81 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Get rid of target-specific nodes for fp16 <-> fp32 conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98888 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
f0d500768d1a42e91c6324e6c8677cbe26df6e27 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Get rid of target-specific nodes for fp16 <-> fp32 conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98888 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
4875aab9914f89cc8e4de7a1dc96ce72c3fd597c 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Refactor Reg-Reg copy emission routine for ARM. This makes cross-regclass copies weirdness more straightforward. Also, add GPR <-> SPR copy support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98887 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
6755d97a62fd6796f4146833efb1051fc96a61c0 18-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Refactor Reg-Reg copy emission routine for ARM. This makes cross-regclass copies weirdness more straightforward. Also, add GPR <-> SPR copy support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98887 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
35c7a269c837375dc95e20ab60e8084b1ddb2c08 18-Mar-2010 Chris Lattner <sabre@nondot.org> fix some buggy ops concatentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98869 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
b7d5226a4ed0d5a7ea2441791cab093741ad5e9f 18-Mar-2010 Chris Lattner <sabre@nondot.org> fix some buggy ops concatentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98869 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
7070982a21f8c5b520efc26dedd8f909dd3e7fbe 18-Mar-2010 Bob Wilson <bob.wilson@apple.com> Refactor NEON ld/st instructions to hardcode class arguments that are constants.
No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98860 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
95808328b4d92e9e5398fe7b38079dcf4ecf1232 18-Mar-2010 Bob Wilson <bob.wilson@apple.com> Refactor NEON ld/st instructions to hardcode class arguments that are constants.
No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98860 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
7c3f38603828a513dcf5d161848d4f901a95c1b2 18-Mar-2010 Johnny Chen <johnny.chen@apple.com> Revert 98745 with respect to the addition of NEONFrm subformats for disassembly.
There is a better way coming up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98777 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
6c8648b4c9f3e02b625dd2d32e0315395da88e61 18-Mar-2010 Johnny Chen <johnny.chen@apple.com> Revert 98745 with respect to the addition of NEONFrm subformats for disassembly.
There is a better way coming up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98777 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
2a2d2e877e92f2f70331b3b06cfdd0e71c3b0700 18-Mar-2010 Johnny Chen <johnny.chen@apple.com> Fixed a bug in the IT mask printing where T means the cond bit in the mask
matches that of Firstcond[0] and E means otherwise. The Firstcond[0] is also
tagged in the Mask to facilitate Asm printing. The disassembler also depends
on this arrangement. This is similar to what's described in A2.5.2 ITSTATE.

Ran:

utils/lit/lit.py test/CodeGen/ARM test/CodeGen/Thumb test/CodeGen/Thumb2

successfully.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98775 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
b675e255d0def28e9718c62336be6fd6e7a22e54 18-Mar-2010 Johnny Chen <johnny.chen@apple.com> Fixed a bug in the IT mask printing where T means the cond bit in the mask
matches that of Firstcond[0] and E means otherwise. The Firstcond[0] is also
tagged in the Mask to facilitate Asm printing. The disassembler also depends
on this arrangement. This is similar to what's described in A2.5.2 ITSTATE.

Ran:

utils/lit/lit.py test/CodeGen/ARM test/CodeGen/Thumb test/CodeGen/Thumb2

successfully.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98775 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
16a9be72afa1d346f9b2be88afb61897e124ea92 18-Mar-2010 Johnny Chen <johnny.chen@apple.com> Refines 98745 so that it only contains the patch related to the output of the
addressing modes to omit the '+' from the assembler syntax #+/-<imm> or +/-<Rm>.

This patch removes the impl of printT2AddrModeImm8s4OffsetOperand() from
ARMAsmPrinter.cpp. It is used by disassembler as of now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98774 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
77bdc48eb66396cbc4f81bfd1ac9de257b83cf41 18-Mar-2010 Johnny Chen <johnny.chen@apple.com> Refines 98745 so that it only contains the patch related to the output of the
addressing modes to omit the '+' from the assembler syntax #+/-<imm> or +/-<Rm>.

This patch removes the impl of printT2AddrModeImm8s4OffsetOperand() from
ARMAsmPrinter.cpp. It is used by disassembler as of now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98774 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
164fe923dac9b977ab0e3d923978cf0ba875d959 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Clean up whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98769 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
87949d4d5af6f77e3ac1fbd2d1c0fcb327ed92a6 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Clean up whitespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98769 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
6c69015d29ae6318a076f596be373fd96cdb14eb 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Increase format field from 5 to 6 bits. ARMII::FormMask was increased to 0x3f
in svn r74988 but the format field was never widened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98768 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
89ef7b797ae949edd592f5f71dddbae6ea35c2bf 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Increase format field from 5 to 6 bits. ARMII::FormMask was increased to 0x3f
in svn r74988 but the format field was never widened.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98768 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
7a969d17cd8be3009224197ac249f6e84700df57 17-Mar-2010 Johnny Chen <johnny.chen@apple.com> 98745 contains something unrelated to the patch.
Remove it from ARMAddressingModes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98751 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
e6f83878bc7cc26ae2fcf3112e6a9fe687e8eba6 17-Mar-2010 Johnny Chen <johnny.chen@apple.com> 98745 contains something unrelated to the patch.
Remove it from ARMAddressingModes.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98751 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
09a43769d7a947c7af72c74955aac4dd12dbaaca 17-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm
instructions to help disassembly.

We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60.

And modified test cases to not expect '+' in +reg or #+num. For example,

; CHECK: ldr.w r9, [r7, #28]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98745 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
9e08876a2ae329feb7a76dbfe33666cb58033c00 17-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm
instructions to help disassembly.

We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60.

And modified test cases to not expect '+' in +reg or #+num. For example,

; CHECK: ldr.w r9, [r7, #28]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98745 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
d1092146fc9355099588c5742bdc78d6787bec85 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert 98683. It is breaking something in the disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98692 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONPreAllocPass.cpp
a43e6bf69093b9870548e7d782ea148e2ddd6449 17-Mar-2010 Bob Wilson <bob.wilson@apple.com> Revert 98683. It is breaking something in the disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98692 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONPreAllocPass.cpp
7474bb0fbb9640f6f799eea35d7fbaebd2312a09 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove redundant writeback flag from ARM address mode 6. Also remove the
optional register update argument, which is currently unused -- when we add
support for that, it can just be a separate operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98683 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONPreAllocPass.cpp
bb6c77e6b9be405fb4d57c8ee4cddc2018df392c 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove redundant writeback flag from ARM address mode 6. Also remove the
optional register update argument, which is currently unused -- when we add
support for that, it can just be a separate operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98683 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONPreAllocPass.cpp
bc6543220fcf2d3e29740db297b4ccf736a21fa7 16-Mar-2010 Johnny Chen <johnny.chen@apple.com> Disambiguate the *_UPD and * variants by specifying the writeback flag as 1.
This is for the disassembly work.

There are cases where this is not possible, for example, A8.6.53 LDM Encoding T1.
In such case, we'll use an adhoc approach to deduce the Opcode programmatically.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98679 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
2b0272e43de501891f09068f0a562792d4881044 16-Mar-2010 Johnny Chen <johnny.chen@apple.com> Disambiguate the *_UPD and * variants by specifying the writeback flag as 1.
This is for the disassembly work.

There are cases where this is not possible, for example, A8.6.53 LDM Encoding T1.
In such case, we'll use an adhoc approach to deduce the Opcode programmatically.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98679 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
a256a75c0333dcbac0e119dad233782527db513c 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove redundant writeback flag in ARM addressing mode 5.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98648 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMCodeEmitter.cpp
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
2d357f6b44159c59dbb58e03a22f94312696d064 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove redundant writeback flag in ARM addressing mode 5.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98648 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMCodeEmitter.cpp
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
dfa5da942162f3e44b08d27e4df9e7d94f17e13d 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
RMAddressingModes.h
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
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
RMAddressingModes.h
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
2830d1937d97bce9d0cb2538d8582638a45fa5b7 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
9e54b6ab3f14ec3743ba92a7a18bac3bce96ae1f 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98642 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
95c5fd1ea67f2612d5bd780f569fb6d33700edc2 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> --- Reverse-merging r98637 into '.':
U test/CodeGen/ARM/tls2.ll
U test/CodeGen/ARM/arm-negative-stride.ll
U test/CodeGen/ARM/2009-10-30.ll
U test/CodeGen/ARM/globals.ll
U test/CodeGen/ARM/str_pre-2.ll
U test/CodeGen/ARM/ldrd.ll
U test/CodeGen/ARM/2009-10-27-double-align.ll
U test/CodeGen/Thumb2/thumb2-strb.ll
U test/CodeGen/Thumb2/ldr-str-imm12.ll
U test/CodeGen/Thumb2/thumb2-strh.ll
U test/CodeGen/Thumb2/thumb2-ldr.ll
U test/CodeGen/Thumb2/thumb2-str_pre.ll
U test/CodeGen/Thumb2/thumb2-str.ll
U test/CodeGen/Thumb2/thumb2-ldrh.ll
U utils/TableGen/TableGen.cpp
U utils/TableGen/DisassemblerEmitter.cpp
D utils/TableGen/RISCDisassemblerEmitter.h
D utils/TableGen/RISCDisassemblerEmitter.cpp
U Makefile.rules
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/Makefile
U lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMInstPrinter.h
D lib/Target/ARM/Disassembler
U lib/Target/ARM/ARMInstrFormats.td
U lib/Target/ARM/ARMAddressingModes.h
U lib/Target/ARM/Thumb2ITBlockPass.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98640 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.cpp.inc
akefile
humb2ITBlockPass.cpp
49d9dc4dd205b615beb7af160ef974eaabe4d1cf 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> --- Reverse-merging r98637 into '.':
U test/CodeGen/ARM/tls2.ll
U test/CodeGen/ARM/arm-negative-stride.ll
U test/CodeGen/ARM/2009-10-30.ll
U test/CodeGen/ARM/globals.ll
U test/CodeGen/ARM/str_pre-2.ll
U test/CodeGen/ARM/ldrd.ll
U test/CodeGen/ARM/2009-10-27-double-align.ll
U test/CodeGen/Thumb2/thumb2-strb.ll
U test/CodeGen/Thumb2/ldr-str-imm12.ll
U test/CodeGen/Thumb2/thumb2-strh.ll
U test/CodeGen/Thumb2/thumb2-ldr.ll
U test/CodeGen/Thumb2/thumb2-str_pre.ll
U test/CodeGen/Thumb2/thumb2-str.ll
U test/CodeGen/Thumb2/thumb2-ldrh.ll
U utils/TableGen/TableGen.cpp
U utils/TableGen/DisassemblerEmitter.cpp
D utils/TableGen/RISCDisassemblerEmitter.h
D utils/TableGen/RISCDisassemblerEmitter.cpp
U Makefile.rules
U lib/Target/ARM/ARMInstrNEON.td
U lib/Target/ARM/Makefile
U lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMInstPrinter.h
D lib/Target/ARM/Disassembler
U lib/Target/ARM/ARMInstrFormats.td
U lib/Target/ARM/ARMAddressingModes.h
U lib/Target/ARM/Thumb2ITBlockPass.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98640 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.cpp.inc
akefile
humb2ITBlockPass.cpp
83eb6f1fd620dc8249ebe4cfdd99dbe67817bb43 16-Mar-2010 Johnny Chen <johnny.chen@apple.com> Initial ARM/Thumb disassembler check-in. It consists of a tablgen backend
(RISCDisassemblerEmitter) which emits the decoder functions for ARM and Thumb,
and the disassembler core which invokes the decoder function and builds up the
MCInst based on the decoded Opcode.

Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm
instructions to help disassembly.

We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60.

And modified test cases to not expect '+' in +reg or #+num. For example,

; CHECK: ldr.w r9, [r7, #28]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98637 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.cpp.inc
akefile
humb2ITBlockPass.cpp
d30a98e43ae18e1fc70a7dc748edf669d809c685 16-Mar-2010 Johnny Chen <johnny.chen@apple.com> Initial ARM/Thumb disassembler check-in. It consists of a tablgen backend
(RISCDisassemblerEmitter) which emits the decoder functions for ARM and Thumb,
and the disassembler core which invokes the decoder function and builds up the
MCInst based on the decoded Opcode.

Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm
instructions to help disassembly.

We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60.

And modified test cases to not expect '+' in +reg or #+num. For example,

; CHECK: ldr.w r9, [r7, #28]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98637 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
isassembler/ARMDisassembler.cpp
isassembler/ARMDisassembler.h
isassembler/ARMDisassemblerCore.cpp
isassembler/ARMDisassemblerCore.h
isassembler/Makefile
isassembler/ThumbDisassemblerCore.cpp.inc
akefile
humb2ITBlockPass.cpp
1d7bcd8876e207fd82646225539eb0d8db8de293 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Stop using the old pre-UAL syntax for LDM/STM instruction suffixes.
This does not move entirely to UAL syntax, since the default "increment after"
suffix is empty but we still use "IA" for that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98635 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
ea7f22c31d0d12923eaab6840322431cc0222ae9 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Stop using the old pre-UAL syntax for LDM/STM instruction suffixes.
This does not move entirely to UAL syntax, since the default "increment after"
suffix is empty but we still use "IA" for that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98635 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
b1a49d08ce463feae809d902c386954d9b5e4d4d 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Wrap a long line and add some parens to be consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98596 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
8d95e0be13079339c2b84f245fb1665953e2bc77 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Wrap a long line and add some parens to be consistent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98596 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
07a9f1bfc948604e35d50f2d3691b14127b88b38 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Translate "cc" clobber in ARM inline assembly to ARM::CCRRegisterClass.
Radar 7459078.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98586 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
33cc5cb9837469dabf31cc5a474e2c27d2b7d144 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Translate "cc" clobber in ARM inline assembly to ARM::CCRRegisterClass.
Radar 7459078.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98586 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
12759cef26b06f95d1290e60c2bb27a7b411edb7 15-Mar-2010 Bill Wendling <isanbard@gmail.com> Now that the default for Darwin platforms is to place the LSDA into the TEXT
section, remove the target-specific code that performs this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98580 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetObjectFile.cpp
RMTargetObjectFile.h
505ad8bed3321bc4b99af8fba4844efe2fe9e67a 15-Mar-2010 Bill Wendling <isanbard@gmail.com> Now that the default for Darwin platforms is to place the LSDA into the TEXT
section, remove the target-specific code that performs this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98580 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetObjectFile.cpp
RMTargetObjectFile.h
c002b5792482bd4d74855addc22f448b8bb9199f 15-Mar-2010 Chris Lattner <sabre@nondot.org> fix an ambiguous pattern, contrary to expectations, scalar_to_vector
doesn't have a type constraint on the scalar because we don't have
an 'sAny' type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
77144e719f6450c67612bbdd93635f523a41236c 15-Mar-2010 Chris Lattner <sabre@nondot.org> fix an ambiguous pattern, contrary to expectations, scalar_to_vector
doesn't have a type constraint on the scalar because we don't have
an 'sAny' type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a8f50d8f3b00059c1711a6fb980b3df445a1eeea 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add substarget feature for FP16

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98503 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
631379e79c0971c5bac13629b8caf8912ed4c35c 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add substarget feature for FP16

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98503 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
881c2e565f54f5585a3697583d2552442706d956 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add codegen support for FP16 on ARM

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98502 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
bec3dd25c76c825c179ef35794a8fa3620cf2559 14-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Add codegen support for FP16 on ARM

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98502 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
359731acbae700a9590257899bf54c05fee8a9cd 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the DBG_LABEL MachineInstr to always be created
with an MCSymbol instead of an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98481 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
6ffcccab5191ef1dcde876800c24a1f58b3b7ad8 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the DBG_LABEL MachineInstr to always be created
with an MCSymbol instead of an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98481 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
8574dddd63edcb47af66df3ea309ff03a6b04549 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the LabelSDNode to be EHLabelSDNode and make it hold
an MCSymbol. Make the EH_LABEL MachineInstr hold its label
with an MCSymbol instead of ID. Fix a bug in MMI.cpp which
would return labels named "Label4" instead of "label4".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98463 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
7561d480953e0a2faa4af9be0a00b1180097c4bd 14-Mar-2010 Chris Lattner <sabre@nondot.org> change the LabelSDNode to be EHLabelSDNode and make it hold
an MCSymbol. Make the EH_LABEL MachineInstr hold its label
with an MCSymbol instead of ID. Fix a bug in MMI.cpp which
would return labels named "Label4" instead of "label4".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98463 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
e3330170d608053806e37c4dc953f15cf47b3388 14-Mar-2010 Chris Lattner <sabre@nondot.org> change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's. This cleans up and regularizes a bunch
of code and makes way for future progress.

Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places. This is very sad and disturbing. :(

One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction. There should not be any
functionality change from doing this, but I'm not an EH expert.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
1611273351d75b5cbe2a67485bb9831d5916fe26 14-Mar-2010 Chris Lattner <sabre@nondot.org> change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's. This cleans up and regularizes a bunch
of code and makes way for future progress.

Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places. This is very sad and disturbing. :(

One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction. There should not be any
functionality change from doing this, but I'm not an EH expert.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98459 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d13daf889c4864428fa13fdf88a50a2fa6367c34 13-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the now-unneeded context argument of MBB::getSymbol()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98451 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
1b2eb0e8a6aaf034675b17be6d853cb1c666200f 13-Mar-2010 Chris Lattner <sabre@nondot.org> eliminate the now-unneeded context argument of MBB::getSymbol()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98451 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
f4853459db476c7487bc5b4b5bd68c5c7f995600 13-Mar-2010 Chris Lattner <sabre@nondot.org> rearrange MCContext ownership. Before LLVMTargetMachine created it
and passing off ownership to AsmPrinter. Now MachineModuleInfo
creates it and owns it by value. This allows us to use MCSymbols
more consistently throughout the rest of the code generator, and
simplifies a bit of code. This also allows MachineFunction to
keep an MCContext reference handy, and cleans up the TargetRegistry
interfaces for AsmPrinters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
11d53c129fc9c2a4510605ec0a1696f58750af52 13-Mar-2010 Chris Lattner <sabre@nondot.org> rearrange MCContext ownership. Before LLVMTargetMachine created it
and passing off ownership to AsmPrinter. Now MachineModuleInfo
creates it and owns it by value. This allows us to use MCSymbols
more consistently throughout the rest of the code generator, and
simplifies a bit of code. This also allows MachineFunction to
keep an MCContext reference handy, and cleans up the TargetRegistry
interfaces for AsmPrinters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
713a8646e6db41f46ffca0806115ab16dd7e653a 13-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix another warning. There is a functionality change but I believe it's correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98430 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
e17245dbe970faf29af408056f43ee543724d7fc 13-Mar-2010 Benjamin Kramer <benny.kra@googlemail.com> Fix another warning. There is a functionality change but I believe it's correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98430 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
b9ee99d999a51b1d9869853cba4b69e0b5b95e54 13-Mar-2010 Bob Wilson <bob.wilson@apple.com> Attempt to appease the arm-linux buildbot by fixing the JIT encodings for new
base register updating load/store-multiple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98427 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrVFP.td
bffb5b39bea3288bc557b10f3ed1864e6c7857e0 13-Mar-2010 Bob Wilson <bob.wilson@apple.com> Attempt to appease the arm-linux buildbot by fixing the JIT encodings for new
base register updating load/store-multiple instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98427 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrVFP.td
5ef33c75e408528b75baa2e0584711309959791e 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
RMConstantIslandPass.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
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
RMConstantIslandPass.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
618911a4092206888f3808184919881efbd8a3be 13-Mar-2010 Bob Wilson <bob.wilson@apple.com> Combine the code to build VLDM and VSTM instructions, since they are
mostly the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98402 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3943ac38c946aaac21dbe686978d098770d7679e 13-Mar-2010 Bob Wilson <bob.wilson@apple.com> Combine the code to build VLDM and VSTM instructions, since they are
mostly the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98402 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
fe460493143961f8225ccb85f75d974986af059f 12-Mar-2010 Bob Wilson <bob.wilson@apple.com> Tidy up. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98398 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
e4193b20fd30e59c389814835ed2f6b3bc3b225c 12-Mar-2010 Bob Wilson <bob.wilson@apple.com> Tidy up. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98398 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
d98a3acc2c5aaf86769a3c7bee88893721e37a84 12-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove obsolete comments. VLDM is implemented in ARMInstrVFP.td.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98395 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5027064c69c89ff605479d9e7eab2395a54b31e9 12-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove obsolete comments. VLDM is implemented in ARMInstrVFP.td.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98395 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1fa7b53035a38da8edfffc1fb00c30fbd61eec76 12-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix LLVM build when the user specifies CPPFLAGS on the make command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98394 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/Makefile
smPrinter/Makefile
150ae119761df40ca12f5d975a667778a7d011d7 12-Mar-2010 Jeffrey Yasskin <jyasskin@google.com> Fix LLVM build when the user specifies CPPFLAGS on the make command line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98394 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/Makefile
smPrinter/Makefile
2acc03c6ad219876410de4a0fa7f8ef42a97166d 12-Mar-2010 Chris Lattner <sabre@nondot.org> inline GetGlobalValueSymbol into the rest its callers and
remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98390 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
d62f1b4168d4327c119642d28c26c836ae6717ab 12-Mar-2010 Chris Lattner <sabre@nondot.org> inline GetGlobalValueSymbol into the rest its callers and
remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98390 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
5e318698ce09ecc215fffc3e3cfbe64a79833931 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
RMInstrThumb2.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
RMInstrThumb2.td
a9480cb333bdb8b7d11cb4012e5a7b02e8f087c5 11-Mar-2010 Bill Wendling <isanbard@gmail.com> When outputing a non-lazy pointer for a stub, we may need to fill in the value
for the NLP because the object it's pointing to may be internal to the file.

This seems counter-intuitive, but bear with me. When we place the LSDA into the
TEXT section, the type info pointers need to be indirect and pc-rel. We
accomplish this by using NLPs. However, sometimes the types are local to the
file. GCC gets around this by not using a NLP in this case, but a "regular"
indirection like this:

GCC_except_tbl:
.long Lfoo-.

__ZTIA: @ This is local
...

Lfoo:
.long __ZTIA

LLVM prefers NLPs on Darwin. In fact, it's more optimal for load performance to
use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98218 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
52a50e5d0e6ac08d86706dbdd8f4a5dbb44da4cb 11-Mar-2010 Bill Wendling <isanbard@gmail.com> When outputing a non-lazy pointer for a stub, we may need to fill in the value
for the NLP because the object it's pointing to may be internal to the file.

This seems counter-intuitive, but bear with me. When we place the LSDA into the
TEXT section, the type info pointers need to be indirect and pc-rel. We
accomplish this by using NLPs. However, sometimes the types are local to the
file. GCC gets around this by not using a NLP in this case, but a "regular"
indirection like this:

GCC_except_tbl:
.long Lfoo-.

__ZTIA: @ This is local
...

Lfoo:
.long __ZTIA

LLVM prefers NLPs on Darwin. In fact, it's more optimal for load performance to
use them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98218 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b79f0925ab184c9cd8716340d27b88cb70002506 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
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
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
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
7bd90eea10c84a2dbc72f84dd702346ac472a465 11-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix ARM buildbot breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98215 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5265a12f531be9456a238badc4e9ae43581effb3 11-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix ARM buildbot breakage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98215 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d2436aace0508a6f157cb35bc7230aef8d942790 11-Mar-2010 Bob Wilson <bob.wilson@apple.com> Lower small memcpys to load/stores on Thumb2.
Radar 7686922.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98210 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
4d6113ee0699ac1eff46971881179de53e2eb810 11-Mar-2010 Bob Wilson <bob.wilson@apple.com> Lower small memcpys to load/stores on Thumb2.
Radar 7686922.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98210 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
cd37910893c8c4400998b9578e433d65a99b04f8 10-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix an obvious typo in an assert.
Patch by Sean Callanan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98200 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
fbacc888eeb5636574cd2fec51c00fcbc8873117 10-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix an obvious typo in an assert.
Patch by Sean Callanan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98200 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
ce99651283626c14f32f25d4b0dc486e14ffd41b 10-Mar-2010 Bill Wendling <isanbard@gmail.com> Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that
indicates that an MCSymbol is external or not. (It's true if it's external.)
This will be used to specify the correct information to add to non-lazy
pointers. That will be explained further when this bit is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cebae36f57456fe6b0e13726acd1e0250654f02d 10-Mar-2010 Bill Wendling <isanbard@gmail.com> Add a bit along with the MCSymbols stored in the MachineModuleInfo maps that
indicates that an MCSymbol is external or not. (It's true if it's external.)
This will be used to specify the correct information to add to non-lazy
pointers. That will be explained further when this bit is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ac183b1b5cee11f753e8fc008bbb6e61bc9a93fd 10-Mar-2010 Jim Grosbach <grosbach@apple.com> Make sure the LR gets pushed in functions that use vaargs. This fixes
400.perlbench for the nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98183 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f49be7c96f5a57ba67e6b1dc4362273b5f7cbd81 10-Mar-2010 Jim Grosbach <grosbach@apple.com> Make sure the LR gets pushed in functions that use vaargs. This fixes
400.perlbench for the nightly tests.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98183 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e4c4bef88ab36061a5e2bf80f3e80729fec58bc3 10-Mar-2010 Jim Grosbach <grosbach@apple.com> comment why we use custom epilogue for t1 functions using vaargs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98182 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
004453e85e72a2a2ea9a70fc6b7b368feb877c4c 10-Mar-2010 Jim Grosbach <grosbach@apple.com> comment why we use custom epilogue for t1 functions using vaargs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98182 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
07bc4c66b068f3e15138c8330bc36ae961a92e54 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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
72121e4e6261beba09f5d22854cfcc3332f7c5bf 10-Mar-2010 Chris Lattner <sabre@nondot.org> set the temporary bit on MCSymbols correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98124 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
98cdab53c302a2d6686fa428c0e896b1fb195311 10-Mar-2010 Chris Lattner <sabre@nondot.org> set the temporary bit on MCSymbols correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98124 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
5a729995478d86e9f559b53d2ee4fb9b8c26e90b 10-Mar-2010 Jim Grosbach <grosbach@apple.com> Clear up the last (famous last words) frame index value reuse issues for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98109 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
7c617b5e53987d786451dd668b5113f2e2b983f8 10-Mar-2010 Jim Grosbach <grosbach@apple.com> Clear up the last (famous last words) frame index value reuse issues for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98109 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
b2247c71f6be3cb12c8aaf47c45d225e2e056856 09-Mar-2010 Jim Grosbach <grosbach@apple.com> Change the Value argument to eliminateFrameIndex to a type-tagged value. This
is preparatory to having PEI's scavenged frame index value reuse logic
properly distinguish types of frame values (e.g., whether the value is
stack-pointer relative or frame-pointer relative).

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98086 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
dff4b4c5a7cc894d3b4b6c6e779ea8f47fa50630 09-Mar-2010 Jim Grosbach <grosbach@apple.com> Change the Value argument to eliminateFrameIndex to a type-tagged value. This
is preparatory to having PEI's scavenged frame index value reuse logic
properly distinguish types of frame values (e.g., whether the value is
stack-pointer relative or frame-pointer relative).

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98086 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
c5f7bb4d203754a38d85c6a8537499ce264245fb 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
e0444f1f0d5303238263cab54773f6e7d8a4e6b7 09-Mar-2010 Jim Grosbach <grosbach@apple.com> scavenged frame index value re-use gets confused when more than one base
register is involved for thumb1. Work around this for the moment by only
re-using SP-relative offsets. This is temporary 'til the code can distinguish
multiple base registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98071 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
4e501545cd12d903d35096f42eb5fdbe4603d5da 09-Mar-2010 Jim Grosbach <grosbach@apple.com> scavenged frame index value re-use gets confused when more than one base
register is involved for thumb1. Work around this for the moment by only
re-using SP-relative offsets. This is temporary 'til the code can distinguish
multiple base registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98071 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
46718f5a8c23ad90bb2e974b0a5f3e8462766b2e 09-Mar-2010 Bill Wendling <isanbard@gmail.com> The ARM EH experiment worked!

Place the LSDA into the TEXT section for ARM platforms. This involves making the
encoding indirect, pcrel, and sdata4 instead of an absolute pointer. The
references to the type infos are then non-lazy pointers. Revision 98019 changed
the encoding of non-lazy pointers to add the symbol to the non-lazy pointer
definition if it's a local symbol (otherwise, it's external and set to '0' so
that the loader can adjust it to the real value). This paved the way for this
change to work on ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98068 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetObjectFile.cpp
RMTargetObjectFile.h
MakeLists.txt
bdc38e5aa27bf57b4315b961a172e250bcb1bd69 09-Mar-2010 Bill Wendling <isanbard@gmail.com> The ARM EH experiment worked!

Place the LSDA into the TEXT section for ARM platforms. This involves making the
encoding indirect, pcrel, and sdata4 instead of an absolute pointer. The
references to the type infos are then non-lazy pointers. Revision 98019 changed
the encoding of non-lazy pointers to add the symbol to the non-lazy pointer
definition if it's a local symbol (otherwise, it's external and set to '0' so
that the loader can adjust it to the real value). This paved the way for this
change to work on ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98068 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetObjectFile.cpp
RMTargetObjectFile.h
MakeLists.txt
b63a802baa747b858ac64a9230b0cfe3af09d10d 09-Mar-2010 Bill Wendling <isanbard@gmail.com> This is part of an LLC-beta test used to test <rdar://problem/6804645>. Please
bear with the awful code. It won't last in its current state beyond tonight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98040 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
94a1c631dbcad0c92032259444aa40b795b3d283 09-Mar-2010 Bill Wendling <isanbard@gmail.com> This is part of an LLC-beta test used to test <rdar://problem/6804645>. Please
bear with the awful code. It won't last in its current state beyond tonight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98040 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
341930ca152e4dcf70c609b5b0ac9ac3502f1cce 09-Mar-2010 Bill Wendling <isanbard@gmail.com> Print blank line and clear stubs vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98019 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cf6f28d84af09b38e96307007cd93760a7ca42d7 09-Mar-2010 Bill Wendling <isanbard@gmail.com> Print blank line and clear stubs vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98019 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4dfe49627d49476660378d6b5f4b39de8593f489 09-Mar-2010 Bill Wendling <isanbard@gmail.com> MC-ize the stub printing in ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98018 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
becd83e3f4eb996f8e43189ce482267b3b8351a8 09-Mar-2010 Bill Wendling <isanbard@gmail.com> MC-ize the stub printing in ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98018 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5ea11bb8e64516f169f4d2e839f25b03f53736ef 09-Mar-2010 Chris Lattner <sabre@nondot.org> don't reset defaults.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98004 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
82f05078b08f086b868e096ff0bb89324ca5c1d5 09-Mar-2010 Chris Lattner <sabre@nondot.org> don't reset defaults.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98004 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
6753310ec552a38fcf81b0cecac8f6c36a36903a 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
RMInstrThumb2.td
humb2InstrInfo.cpp
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
RMInstrThumb2.td
humb2InstrInfo.cpp
4e624721ef14562d4f8f7161356fe129ad3c9d00 08-Mar-2010 Chris Lattner <sabre@nondot.org> fix a bunch of partially ambiguous patterns on ARM. As an
example, this:

(set DPR:$dst, (fsub (fneg (fmul DPR:$a, DPR:$b)), DPR:$dstin))

is ambiguous because DPR contains both f64 and v2f32. tblgen
currently accidentally picks f64 because it's first in the
regclass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
d10a53d5a1a5f5a729b55638acfb25d3871df70b 08-Mar-2010 Chris Lattner <sabre@nondot.org> fix a bunch of partially ambiguous patterns on ARM. As an
example, this:

(set DPR:$dst, (fsub (fneg (fmul DPR:$a, DPR:$b)), DPR:$dstin))

is ambiguous because DPR contains both f64 and v2f32. tblgen
currently accidentally picks f64 because it's first in the
regclass.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
8e4674b1659726ad5a6ea240cc41160866b9dfc1 06-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Initial bits of ARMv4-only support.
Patch by John Tytgat!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97886 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrInfo.td
RMSubtarget.cpp
RMSubtarget.h
ce7bf1c55f5238870bae2909cd368151f1d813d1 06-Mar-2010 Anton Korobeynikov <asl@math.spbu.ru> Initial bits of ARMv4-only support.
Patch by John Tytgat!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97886 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrInfo.td
RMSubtarget.cpp
RMSubtarget.h
3a1e3927dabc414a5afa5b50a13b9aa170e162f6 06-Mar-2010 Jim Grosbach <grosbach@apple.com> Thumb1 epilogue code generation needs to take into account that callee-saved
registers may be restored via a pop instruction, not just a tRestore.
This fixes nightly test 471.omnetep for Thumb1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97867 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
e68bd742451aae5fcdf280e823d2829e11d184da 06-Mar-2010 Jim Grosbach <grosbach@apple.com> Thumb1 epilogue code generation needs to take into account that callee-saved
registers may be restored via a pop instruction, not just a tRestore.
This fixes nightly test 471.omnetep for Thumb1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97867 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
fff9efb51e49e327acf6815063ba9c0c4a396e95 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
RMInstrThumb2.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
RMInstrThumb2.td
ebdab78932b99809eb2eb2de9f1bbb1bb40e3d60 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
RMInstrThumb2.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
RMInstrThumb2.td
919644c45dccf74192347cc02c72e682069cdaf2 04-Mar-2010 Bob Wilson <bob.wilson@apple.com> pr6478: The frame pointer spill frame index is only defined when there is a
frame pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97755 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
436e6e7b5c85f12b7c2e41b7fd5c48e5d4d72912 04-Mar-2010 Bob Wilson <bob.wilson@apple.com> pr6478: The frame pointer spill frame index is only defined when there is a
frame pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97755 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b5a2ab22574a56127efcae74c69269e40f06d807 04-Mar-2010 Bob Wilson <bob.wilson@apple.com> pr6480: Don't try producing ld/st-multiple instructions when the address is
an undef value. This is only going to come up for bugpoint-reduced tests --
correct programs will not access memory at undefined addresses -- so it's not
worth the effort of doing anything more aggressive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97745 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
bbf39b0fd9c83f1d46ca5f858e66de66fb64ec98 04-Mar-2010 Bob Wilson <bob.wilson@apple.com> pr6480: Don't try producing ld/st-multiple instructions when the address is
an undef value. This is only going to come up for bugpoint-reduced tests --
correct programs will not access memory at undefined addresses -- so it's not
worth the effort of doing anything more aggressive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97745 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
97c362a27fe8b8f27837ec887b18d1257ff9e2e7 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
RMInstrThumb2.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
RMInstrThumb2.td
09bb7a31c262d4e75a101084336c987f0085344b 04-Mar-2010 Johnny Chen <johnny.chen@apple.com> Modified the asm string of 16-bit Thumb MUL instruction so that it prints:

MULS <Rdm>, <Rn>, <Rdm>

according to A8.6.105 MUL Encoding T1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97675 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
cb721da4c64bb9a844cf5180647dc926a5fd5f24 04-Mar-2010 Johnny Chen <johnny.chen@apple.com> Modified the asm string of 16-bit Thumb MUL instruction so that it prints:

MULS <Rdm>, <Rn>, <Rdm>

according to A8.6.105 MUL Encoding T1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97675 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
8cfa01cfb53183e28d45e72fba1099f5153c26d5 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
RMInstrThumb2.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
RMInstrThumb2.td
ed93c07fec80dfcc70cf62f1a6bd39f9bb0e5aa7 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
RMInstrThumb2.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
RMInstrThumb2.td
11fd549ebe3895b606a394ba8a0c239424b806cf 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97628 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
506049f29f4f202a8e45feb916cc0264440a7f6d 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97628 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
0129bca0bce1634150bc14700f8d1b4e750919e9 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
RMInstrThumb2.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
RMInstrThumb2.td
3d48b87e20e053cd2ae6d72e99d6c690d243734d 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
RMInstrThumb2.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
RMInstrThumb2.td
306c6903936dbfa08d32c711025f9f3aba86711f 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
RMInstrThumb2.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
RMInstrThumb2.td
0b4932e69129ab897d94cd68dea84d1da9a2481f 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
RMInstrThumb2.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
RMInstrThumb2.td
8bec96d80e52207ad5840258d9aa60e3251ad154 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
6d519bfe0bb32e61c60df9827f8b9b7d66dd3d78 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
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
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
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
3b7450da0c5896e8d9e07723c07231d05bfb6162 02-Mar-2010 Johnny Chen <johnny.chen@apple.com> Change some asm shift opcode strings to lowercase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97567 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7cfa51ebd8304eb565d8d6f2b1e50a55ef04d1ca 02-Mar-2010 Johnny Chen <johnny.chen@apple.com> Change some asm shift opcode strings to lowercase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97567 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
33ddaa3abd51020af9a179e1a683282420098639 02-Mar-2010 Xerxes Ranby <xerxes@zafena.se> fix typo add missing (


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97565 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
901a8b7c6b2525889282add0d902ce46e111e0c2 02-Mar-2010 Xerxes Ranby <xerxes@zafena.se> fix typo add missing (


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97565 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
d572a01f9619b7b45c525a4d68f02164fcacf2ee 02-Mar-2010 Xerxes Ranby <xerxes@zafena.se> Unbreak llvm-arm-linux buildbot and fix PR5309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97564 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
02735c97fd21f21ab6120aa3bd607b81d3bf5a3d 02-Mar-2010 Xerxes Ranby <xerxes@zafena.se> Unbreak llvm-arm-linux buildbot and fix PR5309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97564 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
6411e3e62ea9dfe23f5fa24b9d6a84da7ec70a98 02-Mar-2010 Chris Lattner <sabre@nondot.org> Sink InstructionSelect() out of each target into SDISel, and rename it
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader.
Sink some other stuff out of DAGISelHeader into SDISel.

Eliminate the various 'Indent' stuff from various targets, which dates
to when isel was recursive.

17 files changed, 114 insertions(+), 430 deletions(-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97555 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7c306da505e2d7f64e160890b274a47fa0740962 02-Mar-2010 Chris Lattner <sabre@nondot.org> Sink InstructionSelect() out of each target into SDISel, and rename it
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader.
Sink some other stuff out of DAGISelHeader into SDISel.

Eliminate the various 'Indent' stuff from various targets, which dates
to when isel was recursive.

17 files changed, 114 insertions(+), 430 deletions(-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97555 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b99f6f386c561b66675f0b9798487d12ee7a1600 02-Mar-2010 Eric Christopher <echristo@apple.com> Only save vector registers if we've defined for the vector registers.

Fixes PR5309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97554 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
8d17882efae2706c4a7a09db28ef3abb66c9dce0 02-Mar-2010 Eric Christopher <echristo@apple.com> Only save vector registers if we've defined for the vector registers.

Fixes PR5309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97554 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
1ca34452bef99e9607f302b2abb54693b7114076 02-Mar-2010 Bill Wendling <isanbard@gmail.com> Remove dead parameter passing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97536 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
46ada19645c981a0b7932487d163f7582074a4d9 02-Mar-2010 Bill Wendling <isanbard@gmail.com> Remove dead parameter passing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97536 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e6f5471be802e40237d50eb52b6eab7c087966d9 01-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added STRHT for disassembly only and fixed a bug in AI3sthpo class where the W
bit should be set to 0 instead of 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97481 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
ad4df4c0da1a0e4b091321e1ffdc7973669e4273 01-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added STRHT for disassembly only and fixed a bug in AI3sthpo class where the W
bit should be set to 0 instead of 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97481 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
6debe022afbe5ada4c5cfda0876c3088c6061d33 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
50528855a3a5fd32aefe594f573c51f7853583b3 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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
cd9965a04d180996ce0aa277e567b3582dad4fd3 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
RMInstrThumb2.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
RMInstrThumb2.td
99442df562535a009d0022cdadca78921977db31 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
RMInstrThumb2.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
RMInstrThumb2.td
f1fab372d87dcebe635e465d3ba6ee6778dc4ba9 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
RMInstrThumb2.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
RMInstrThumb2.td
880d7af912e3067b30ec0f2029f453497f217cab 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added the following 16-bit Thumb instructions for disassembly only: YIELD, WFE,
WFI, SEV, SETEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97149 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d86d269f08ec9a00bbceccef7d11fc430a8af76e 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added the following 16-bit Thumb instructions for disassembly only: YIELD, WFE,
WFI, SEV, SETEND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97149 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
fe73c98af21bccfaa2016ad98aabb10858a16f2c 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added tNOP for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97105 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
bd2c623903d4b9f4f1c8192bcf48811dbd3f7bc4 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added tNOP for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97105 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
145b5ebdaa64fccc0119b27fff04e9c253066c3d 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added tSVC and tTRAP for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97098 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
4c61cdd307929a125d1a503971a16cf55e31b252 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added tSVC and tTRAP for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97098 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
4460a1a06c2bff50f30edc9fe0f246640178192b 24-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Create a stack frame on ARM when

- Function uses all scratch registers AND
- Function does not use any callee saved registers AND
- Stack size is too big to address with immediate offsets.

In this case a register must be scavenged to calculate the address of a stack
object, and the scavenger needs a spare register or emergency spill slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97071 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
657baec0af38d84e24e4738b0696bb99d1517179 24-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Create a stack frame on ARM when

- Function uses all scratch registers AND
- Function does not use any callee saved registers AND
- Stack size is too big to address with immediate offsets.

In this case a register must be scavenged to calculate the address of a stack
object, and the scavenger needs a spare register or emergency spill slot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97071 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
9a176e2eda33ca927e76fe41fa77cbe2b32a4407 24-Feb-2010 Bob Wilson <bob.wilson@apple.com> Check for comparisons of +/- zero when optimizing less-than-or-equal and
greater-than-or-equal SELECT_CCs to NEON vmin/vmax instructions. This is
only allowed when UnsafeFPMath is set or when at least one of the operands
is known to be nonzero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97065 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e742bb53a3e68b88eac172782fd99cd98f89f4b3 24-Feb-2010 Bob Wilson <bob.wilson@apple.com> Check for comparisons of +/- zero when optimizing less-than-or-equal and
greater-than-or-equal SELECT_CCs to NEON vmin/vmax instructions. This is
only allowed when UnsafeFPMath is set or when at least one of the operands
is known to be nonzero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97065 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ed5852c5efc475390ab437324ecf9eff705f34a5 24-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added Vector Swap (VSWPd and VSWPq) instructions for disassembly only.

A8.6.405


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97052 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d88360495a6eed8853b4eead04e163f3e5aa632f 24-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added Vector Swap (VSWPd and VSWPq) instructions for disassembly only.

A8.6.405


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97052 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
fc252708ccaa1eb067c6f04de7da7e5959cb8393 24-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Stay away from str <undef> in ARMLoadStoreOpt. This pass does not understand
<undef> operands, and can cause scavenger failures when it translates
<kill,undef> to <kill>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97046 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
9e6396d05ee43858f04b0f52eb7da6240845f530 24-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Stay away from str <undef> in ARMLoadStoreOpt. This pass does not understand
<undef> operands, and can cause scavenger failures when it translates
<kill,undef> to <kill>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97046 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3df03de89c640c257d95cfb8106de81621ae7c6c 24-Feb-2010 Johnny Chen <johnny.chen@apple.com> Fixed typo of opcodestr, should be "vst1", not "vld1".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97044 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
39b03163a7f639b1c75c348bec425c35dc89eba4 24-Feb-2010 Johnny Chen <johnny.chen@apple.com> Fixed typo of opcodestr, should be "vst1", not "vld1".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97044 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
fb36419a8347792ab37b26caf44cf5e267f4ddfe 24-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Remove an unused variable. Was this intentional?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97022 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ff28103b192a7e818f92628c2a4e34e622c1a142 24-Feb-2010 Chandler Carruth <chandlerc@gmail.com> Remove an unused variable. Was this intentional?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97022 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
30c6aeb02e4f8bf3bbd5e34feccb757dbfc04365 24-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly VST1 (multiple single elements) which stores elements to
memory from three or four registers and VST2 (multiple two-element structures)
which stores to memory from two double-spaced registers.

A8.6.391 & A8.6.393


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97018 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f50e83fd03f179616d030982efa7005640f03300 24-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly VST1 (multiple single elements) which stores elements to
memory from three or four registers and VST2 (multiple two-element structures)
which stores to memory from two double-spaced registers.

A8.6.391 & A8.6.393


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97018 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c873ddd79ea24ebfd9a264ba33976d9015afad2b 24-Feb-2010 Jim Grosbach <grosbach@apple.com> handle very large call frames when require SPAdj != 0 for Thumb1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97013 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
5f366af2ff36cc65fe4964194b07bf1455828ff0 24-Feb-2010 Jim Grosbach <grosbach@apple.com> handle very large call frames when require SPAdj != 0 for Thumb1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97013 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
731eb315ab273a47dc2eec2dc5bfd52f7a5a9288 24-Feb-2010 Jim Grosbach <grosbach@apple.com> LowerCall() should always do getCopyFromReg() to reference the stack pointer.
Machine instruction selection is much happier when operands are in virtual
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97012 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f9a4b7653d2a838b344dc3cd38b37f7803059d79 24-Feb-2010 Jim Grosbach <grosbach@apple.com> LowerCall() should always do getCopyFromReg() to reference the stack pointer.
Machine instruction selection is much happier when operands are in virtual
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97012 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
39fb124f7d1d3174623b0e673dcff44e4ddcfad5 23-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly VLD1 (multiple single elements) which loads memory into
three or four registers and VLD2 (multiple two-element structures) which loads
memory into two double-spaced registers.

A8.6.307 & A8.6.310


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d7283d9c54dbc45d47ee0fbed0fbdcbf0ae74f23 23-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly VLD1 (multiple single elements) which loads memory into
three or four registers and VLD2 (multiple two-element structures) which loads
memory into two double-spaced registers.

A8.6.307 & A8.6.310


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
84ce50ccaebfc2eb904791111dd03df750bde3a6 23-Feb-2010 Jim Grosbach <grosbach@apple.com> Spelling. s/suppor /support /

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96954 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
cf453ee70a1ae03cc641686fd5db0f8a7d8ce250 23-Feb-2010 Jim Grosbach <grosbach@apple.com> Spelling. s/suppor /support /

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96954 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c2b70b58adfcb26aab3142e234d48d12bfdf462c 23-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added versions of VCGE, VCGT, VCLE, and VCLT NEON instructions which compare to
(immediate #0) for disassembly only.

A8.6.283, A8.6.285, A8.6.287, A8.6.290


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96856 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
363ac58263dc4ce7c380bbaddb64f90b507fb16d 23-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added versions of VCGE, VCGT, VCLE, and VCLT NEON instructions which compare to
(immediate #0) for disassembly only.

A8.6.283, A8.6.285, A8.6.287, A8.6.290


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96856 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
fc9ef99541ff7370e20223d6d4c48473c6460d40 23-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VCEQ (immediate #0) NEON instruction for disassembly only.

A8.6.281


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96838 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
ec5a4cd14c09e3d36b24411b8cd42166d91102f0 23-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VCEQ (immediate #0) NEON instruction for disassembly only.

A8.6.281


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96838 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1ec98d37dba535b039287f750e7ec12363982f9f 23-Feb-2010 Jim Grosbach <grosbach@apple.com> Updated version of r96634 (which was reverted due to failing 176.gcc and
126.gcc nightly tests. These failures uncovered latent bugs that machine DCE
could remove one half of a stack adjust down/up pair, causing PEI to assert.
This update fixes that, and the tests now pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96822 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.td
RMInstrThumb.td
4642ad3af1cf508ac320b9afd25b065f08b36574 23-Feb-2010 Jim Grosbach <grosbach@apple.com> Updated version of r96634 (which was reverted due to failing 176.gcc and
126.gcc nightly tests. These failures uncovered latent bugs that machine DCE
could remove one half of a stack adjust down/up pair, causing PEI to assert.
This update fixes that, and the tests now pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96822 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.td
RMInstrThumb.td
f95d729f9e82f345ddc81a80b547fc7ce46ad799 22-Feb-2010 Jim Grosbach <grosbach@apple.com> Clean up a bit and fix for when SPAdj != 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96818 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
5a0815fae849038c0f125d04ea948785f52d35cc 22-Feb-2010 Jim Grosbach <grosbach@apple.com> Clean up a bit and fix for when SPAdj != 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96818 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
4829e866c3939bd149a49420875bcacbc90570c4 22-Feb-2010 Jim Grosbach <grosbach@apple.com> The predicate index isn't fixed, so scan for it to make sure we get the proper
value.

Thumb2 uses the tADJCALLSTACK* instructions, and doesn't need t2 versions, so
remove the FIXME entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96817 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
4c7628e43d8468f215ea345545479b6d728cee92 22-Feb-2010 Jim Grosbach <grosbach@apple.com> The predicate index isn't fixed, so scan for it to make sure we get the proper
value.

Thumb2 uses the tADJCALLSTACK* instructions, and doesn't need t2 versions, so
remove the FIXME entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96817 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a21836942c9854fdfa3f42d52b255e83aa521a19 22-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added SEL, SXTB16, SXTAB16, UXTAB16, SMMULR, SMMLAR, SMMLSR, SMUAD, and SMUSD,
for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96806 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2ec5e49a2ba3c8a6ea53c13d4393d57ad1dbb64b 22-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added SEL, SXTB16, SXTAB16, UXTAB16, SMMULR, SMMLAR, SMMLSR, SMUAD, and SMUSD,
for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96806 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3920088b8ff02e7c071399f3b6b7918a436ba27b 22-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added a bunch of instructions for disassembly only:

o signed/unsigned add/subtract
o signed/unsigned halving add/subtract
o unsigned sum of absolute difference [and accumulate]
o signed/unsigned saturate
o signed multiply accumulate/subtract [long] dual


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96795 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
667d127b0bd0e78f135cd4c0d6adccf197b44e5b 22-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added a bunch of instructions for disassembly only:

o signed/unsigned add/subtract
o signed/unsigned halving add/subtract
o unsigned sum of absolute difference [and accumulate]
o signed/unsigned saturate
o signed multiply accumulate/subtract [long] dual


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96795 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9699a91b4a682fb83ff5d4de72e558aa6ce5240d 21-Feb-2010 Johnny Chen <johnny.chen@apple.com> Undo r96654. The printing of ARM shift instructions in canonical forms can be
handled in ARMInstPrinter.cpp.

And added PLD/PLDW/PLI (Preload Data/Instruction) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96719 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b92a23fcfcd2578caa2fec8f2e85121f438d4658 21-Feb-2010 Johnny Chen <johnny.chen@apple.com> Undo r96654. The printing of ARM shift instructions in canonical forms can be
handled in ARMInstPrinter.cpp.

And added PLD/PLDW/PLI (Preload Data/Instruction) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96719 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4a6943c195de8df683174628024411cb1eddfde1 19-Feb-2010 Bob Wilson <bob.wilson@apple.com> Revert 96634. It causes assertion failures for 126.gcc and 176.gcc in
the armv6 nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96691 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
1a2e8686f8137a1a2329952ffd1e21969ea1658c 19-Feb-2010 Bob Wilson <bob.wilson@apple.com> Revert 96634. It causes assertion failures for 126.gcc and 176.gcc in
the armv6 nightly tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96691 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
56164b0b017230d361a0c01174c8c8536f8136b1 19-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added entries for ASR, LSL, LSR, ROR, and RRX so that the disassembler prints
out the canonical form (A8.6.98) instead of the pseudo-instruction as provided
via MOVs.

DBG_ARM_DISASM=YES llvm-mc -triple=arm-unknown-unknown --disassemble
0xc0 0x00 0xa0 0xe1
Opcode=29 Name=ASR Format=ARM_FORMAT_LDMISCFRM
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 1: 1: 0: 0| 0: 0: 0: 0|
-------------------------------------------------------------------------------------------------

asr r0, r0, #1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96654 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8f5e04098fe14d4a0e4da67b93ed471ba863e3e9 19-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added entries for ASR, LSL, LSR, ROR, and RRX so that the disassembler prints
out the canonical form (A8.6.98) instead of the pseudo-instruction as provided
via MOVs.

DBG_ARM_DISASM=YES llvm-mc -triple=arm-unknown-unknown --disassemble
0xc0 0x00 0xa0 0xe1
Opcode=29 Name=ASR Format=ARM_FORMAT_LDMISCFRM
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-------------------------------------------------------------------------------------------------
| 1: 1: 1: 0| 0: 0: 0: 1| 1: 0: 1: 0| 0: 0: 0: 0| 0: 0: 0: 0| 0: 0: 0: 0| 1: 1: 0: 0| 0: 0: 0: 0|
-------------------------------------------------------------------------------------------------

asr r0, r0, #1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96654 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
60f445031000f4a264412387932fce0de1000f00 19-Feb-2010 Jim Grosbach <grosbach@apple.com> Radar 7636153. In the presence of large call frames, it's not sufficient
for ARM to just check if a function has a FP to determine if it's safe
to simplify the stack adjustment pseudo ops prior to eliminating frame
indices. Allow targets to override the default behavior and does so for ARM
and Thumb2.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96634 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
cf43e60544041c127bb875fe4cf0d0ae96cd6c78 19-Feb-2010 Jim Grosbach <grosbach@apple.com> Radar 7636153. In the presence of large call frames, it's not sufficient
for ARM to just check if a function has a FP to determine if it's safe
to simplify the stack adjustment pseudo ops prior to eliminating frame
indices. Allow targets to override the default behavior and does so for ARM
and Thumb2.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96634 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
2c5c1378439260e8df3595f3096dd06dc6f2d339 18-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added LDRD_PRE/POST & STRD_PRE/POST for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96619 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
39a4bb35276206d7ef0ff51dbc984aaf50bf659d 18-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added LDRD_PRE/POST & STRD_PRE/POST for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96619 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
bc1d2dcfe9ce42ee701fddbb6c5b36075bd97094 18-Feb-2010 Bob Wilson <bob.wilson@apple.com> Use NEON vmin/vmax instructions for floating-point selects.
Radar 7461718.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96572 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
9f6c4c141ffa9c8b13e90dce2f2285c4479ff403 18-Feb-2010 Bob Wilson <bob.wilson@apple.com> Use NEON vmin/vmax instructions for floating-point selects.
Radar 7461718.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96572 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
ac0ff71247e32d48f016df9eaa447d9591aec763 18-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added LDRSBT, LDRHT, LDRSHT for disassembly only. And fixed encoding errors
of AI3ldsbpo, AI3ldhpo, and AI3ldshpo in ARMInstrFormats.td in the process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96565 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
adb561d4e0a37c21159405dde90d2ef2d1a5eef9 18-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added LDRSBT, LDRHT, LDRSHT for disassembly only. And fixed encoding errors
of AI3ldsbpo, AI3ldhpo, and AI3ldshpo in ARMInstrFormats.td in the process.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96565 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
1b082c721c530626062b2c34a9c1dc25255ad6d3 18-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly only the variants of DMB, DSB, and ISB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96540 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fd6037d6139e5d0055e94162aa140e61826b65e1 18-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly only the variants of DMB, DSB, and ISB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96540 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7c7fe6e9c7ad2188fadd64c563ccc0509fb57903 17-Feb-2010 Bob Wilson <bob.wilson@apple.com> Remove the NEON N2VSInt instruction class: it's only used in one place and
since it has no pattern, there's not much point in distinguishing an "N2VS"
class for intrinsics anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96525 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
69bfbd61c6a9f9f9a6fcddacc7a9be7e02ea9a2d 17-Feb-2010 Bob Wilson <bob.wilson@apple.com> Remove the NEON N2VSInt instruction class: it's only used in one place and
since it has no pattern, there's not much point in distinguishing an "N2VS"
class for intrinsics anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96525 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d662e381a8a7db4cbb273e910c7e3e6240f5d915 17-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added CLREX (Clear-Exclusive) for disassembly only.

A8.6.30


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96523 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b94362791596962bc92b501d3c3150937058b3bc 17-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added CLREX (Clear-Exclusive) for disassembly only.

A8.6.30


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96523 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
154999fd977eacbf89fc72ef54c6dab424d2e45e 17-Feb-2010 Bob Wilson <bob.wilson@apple.com> More cleanup for NEON:
* Use "S" abbreviation for scalar single FP registers in class and pattern
names, instead of keeping the "D" (for "double") abbreviation and tacking on
an "s" elsewhere in the name.
* Move the scalar single FP register classes and patterns to be more
consistent with other definitions in the file.
* Rename "VNEGf32d" definition to "VNEGfd" for consistency.
* Deleted the N2VDIntsPat pattern; N2VSPat is good enough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96521 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3c0f96e05472693ff9a59366726e4a3da5e05471 17-Feb-2010 Bob Wilson <bob.wilson@apple.com> More cleanup for NEON:
* Use "S" abbreviation for scalar single FP registers in class and pattern
names, instead of keeping the "D" (for "double") abbreviation and tacking on
an "s" elsewhere in the name.
* Move the scalar single FP register classes and patterns to be more
consistent with other definitions in the file.
* Rename "VNEGf32d" definition to "VNEGfd" for consistency.
* Deleted the N2VDIntsPat pattern; N2VSPat is good enough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96521 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9412fa8811c0d7d10f439e74301ef81dcb564811 17-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added RFE for disassembly only.

B6.1.8 RFE Return From Exception loads the PC and the CPSR from the word at the
specified address and the following word respectively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96519 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fb566795c6feccc2a931236fcf30e3b068933d7f 17-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added RFE for disassembly only.

B6.1.8 RFE Return From Exception loads the PC and the CPSR from the word at the
specified address and the following word respectively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96519 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4b6003e74ddabeff61557796af145fab66b3972c 17-Feb-2010 Chris Lattner <sabre@nondot.org> add a note, from PR5100


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96490 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
7180f10fc78a0b8cdf93cc6293de977b6899f686 17-Feb-2010 Chris Lattner <sabre@nondot.org> add a note, from PR5100


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96490 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
8d0907fdc00c682257d92a7c4105ec1595e93c43 17-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added BFI for disassembly only.

A8.6.18 BFI - Bitfield insert (Encoding A1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96462 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b2503c096f46ff0c38b66b7bcc324e3a5ddc837d 17-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added BFI for disassembly only.

A8.6.18 BFI - Bitfield insert (Encoding A1)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96462 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1d2c421295cf9d1c57ecb4d4af34155f03de3ef4 17-Feb-2010 Bob Wilson <bob.wilson@apple.com> Wrap lines to 80 columns and generally try to clean up whitespace and
indentation. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96418 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9abe19d0b9b36dc42d5ae94f7ef236f126da55c4 17-Feb-2010 Bob Wilson <bob.wilson@apple.com> Wrap lines to 80 columns and generally try to clean up whitespace and
indentation. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96418 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
bb428439ec046b66fbe602e5c84d453e3fe8dc63 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Handle tGPR register class in a few more places. This fixes some llvm-gcc
build failures due to my fix for pr6111.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96402 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
0eb0c7401c34c0b4604f732ce54db995eead14e6 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Handle tGPR register class in a few more places. This fixes some llvm-gcc
build failures due to my fix for pr6111.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96402 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
33cb418af3a40f1789b18e92a8272ed73ac413e2 16-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add SMC (Secure Monitor Call) system instruction for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96401 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0296f3e50446094f5c484e155e8c1838eb9f5a0c 16-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add SMC (Secure Monitor Call) system instruction for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96401 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6003048a50bbce4d7a087adb44bdcb5210d656e5 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
09b5e1bbbf13cb871805093c5b166144123fc6fa 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
2aad8d591862c1154522440f64f56456785d034e 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
5104d8ace666d9bbe7ad02f5cadeea547dbb5a53 16-Feb-2010 Jim Grosbach <grosbach@apple.com> Remove redundant setting of Defs. CPSR is already marked by the block level set of Defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96383 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cd862b19b8348ad5bc21c9fa95d08427c86aa053 16-Feb-2010 Jim Grosbach <grosbach@apple.com> Remove redundant setting of Defs. CPSR is already marked by the block level set of Defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96383 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dba8f2c6b79a7c5312146027368cc64c2b5f290f 16-Feb-2010 Jim Grosbach <grosbach@apple.com> First step in eliminating the CarryDefIsUnused and CarryDefIsUsed predicates.
They won't work with the new ISel mechanism, as Requires predicates are no
longer allowed to reference the node being selected. Moving the predicate to
the patterns instead solves the problem.

This patch handles ARM mode. Thumb2 will follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96381 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0a145f3d90033a69f3a2554d7a2da1834e4512f5 16-Feb-2010 Jim Grosbach <grosbach@apple.com> First step in eliminating the CarryDefIsUnused and CarryDefIsUsed predicates.
They won't work with the new ISel mechanism, as Requires predicates are no
longer allowed to reference the node being selected. Moving the predicate to
the patterns instead solves the problem.

This patch handles ARM mode. Thumb2 will follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96381 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a6ad743a622db87dedff213307866b209517330e 16-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly the following instructions:

o Store Return State (SRSW, SRS)
o Load/Store Coprocessor (LDC/STC and friends)
o MSR (immediate)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96380 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
64dfb7835df4705fd1cf07b53d8b4845a8f444f0 16-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added for disassembly the following instructions:

o Store Return State (SRSW, SRS)
o Load/Store Coprocessor (LDC/STC and friends)
o MSR (immediate)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96380 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8776f3e7190c4524d89f57463700fb30d8183b5d 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Fix pr6111: Avoid using the LR register for the target address of an indirect
branch in ARM v4 code, since it gets clobbered by the return address before
it is used. Instead of adding a new register class containing all the GPRs
except LR, just use the existing tGPR class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96360 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrInfo.td
1665b0a2246c83a2c123be105a1a167cf2b423fe 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Fix pr6111: Avoid using the LR register for the target address of an indirect
branch in ARM v4 code, since it gets clobbered by the return address before
it is used. Instead of adding a new register class containing all the GPRs
except LR, just use the existing tGPR class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96360 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrInfo.td
df89a64cefcd537edf4f117eb777e476d97fe3bf 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Put repeated empty pattern into the AQI instruction class.
We could almost use a multiclass for the signed/unsigned instructions, but
there are only 6 of them so I guess it's not worth it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96297 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7dc9747e891a1d7945daad8d2752f2fc7d2ccf92 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Put repeated empty pattern into the AQI instruction class.
We could almost use a multiclass for the signed/unsigned instructions, but
there are only 6 of them so I guess it's not worth it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96297 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
84d365c9f4cc0ea5e33f84c90732f69779bbcda6 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Move TLOF implementations to libCodegen to resolve layering violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96288 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
smPrinter/ARMAsmPrinter.cpp
362dd0bef5437f85586c046bc53287b6fbe9c099 15-Feb-2010 Anton Korobeynikov <asl@math.spbu.ru> Move TLOF implementations to libCodegen to resolve layering violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96288 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
smPrinter/ARMAsmPrinter.cpp
f80681ead6c31677f300779fe356c77e34678396 15-Feb-2010 Evan Cheng <evan.cheng@apple.com> Split SelectionDAGISel::IsLegalAndProfitableToFold to
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.

This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96255 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
014bf215c3457bb34fee348265e8f63a70b4d503 15-Feb-2010 Evan Cheng <evan.cheng@apple.com> Split SelectionDAGISel::IsLegalAndProfitableToFold to
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.

This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96255 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bec37592c754180c184384f5846600a9fc01a7bb 15-Feb-2010 David Greene <greened@obbligato.org> Remove an assumption of default arguments. This is in anticipation of a
change to SelectionDAG build APIs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96230 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1b58cab38ca788be1e64815ab65dfd43e66c98b6 15-Feb-2010 David Greene <greened@obbligato.org> Remove an assumption of default arguments. This is in anticipation of a
change to SelectionDAG build APIs.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96230 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2e3f1e5fe0eb1442b27411f372a5d26f72665fcb 14-Feb-2010 Johnny Chen <johnny.chen@apple.com> Try to factorize the specification of saturating add/subtract operations a bit,
as suggested by Bob Wilson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96153 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2faf3919d4a9f7dcd5cfae6ee447a650ffc6d40a 14-Feb-2010 Johnny Chen <johnny.chen@apple.com> Try to factorize the specification of saturating add/subtract operations a bit,
as suggested by Bob Wilson.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96153 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8f3e19d0616863eabb4b29669ae3359b3fc0fbbb 13-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add SETEND and BXJ instructions for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96075 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a1e762151029e95b949010be6ee2fa690c0055b1 13-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add SETEND and BXJ instructions for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96075 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7f8ae1bc1fd9ef029bc354361a41d1e2667367bb 13-Feb-2010 Evan Cheng <evan.cheng@apple.com> Teach MachineFrameInfo to track maximum alignment while stack objects are being
created. This ensures it's updated at all time. It means targets which perform
dynamic stack alignment would know whether it is required and whether frame
pointer register cannot be made available register allocation.
This is a fix for rdar://7625239. Sorry, I can't create a reasonably sized test
case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96069 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
7545f49a5edfe19612d03e683d8b955c03018056 13-Feb-2010 Evan Cheng <evan.cheng@apple.com> Teach MachineFrameInfo to track maximum alignment while stack objects are being
created. This ensures it's updated at all time. It means targets which perform
dynamic stack alignment would know whether it is required and whether frame
pointer register cannot be made available register allocation.
This is a fix for rdar://7625239. Sorry, I can't create a reasonably sized test
case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96069 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8e1357046124234cb535d41ca107a26204a3d7dd 13-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added a bunch of saturating add/subtract instructions for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96063 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
08b85f371e036beb8b07ad58c4f53920be24ad2a 13-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added a bunch of saturating add/subtract instructions for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96063 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5a79afabd1dec640c140a60bc0d41c3415c363d8 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add YIELD, WFE, WFI, and SEV instructions for disassembly only.
Plus add two formats: MiscFrm and ThumbMiscFrm. Some of the for disassembly
only instructions are changed from Pseudo Format to MiscFrm Format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96032 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
f4d81051ff40d9e4e71f0b1b84a85ed907076525 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add YIELD, WFE, WFI, and SEV instructions for disassembly only.
Plus add two formats: MiscFrm and ThumbMiscFrm. Some of the for disassembly
only instructions are changed from Pseudo Format to MiscFrm Format.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96032 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
61a8b753dabcf5b92517474a8cc0349ee4d82e24 12-Feb-2010 Evan Cheng <evan.cheng@apple.com> Load / store multiple instructions cannot load / store sp. Sorry, can't come up with a reasonable test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96023 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3f7aa79c2a46d525cf0468ad74ef2395246a309f 12-Feb-2010 Evan Cheng <evan.cheng@apple.com> Load / store multiple instructions cannot load / store sp. Sorry, can't come up with a reasonable test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96023 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
100142226fff02a341cdb461ad668270f6524066 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add halfword multiply accumulate long SMLALBB/BT/TB/TT for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
83498e55e20077e2a6b05b335a62101b03ac44e0 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add halfword multiply accumulate long SMLALBB/BT/TB/TT for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1d7e5c88a3651508ee05a96448668c2b488a5091 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add SWP (Swap) and SWPB (Swap Byte) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96010 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b3e1bf54b29354c6d332cfaffcc86cd776fd4ca8 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add SWP (Swap) and SWPB (Swap Byte) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96010 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b868901a8b1424861085bce05a2c178de855f10e 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add CPS, MRS, MRSsys, MSR, MSRsys for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95999 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b98e16031841b3536a03ca4072fb241ff32c517e 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add CPS, MRS, MRSsys, MSR, MSRsys for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95999 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
edf090c9115caf0d31e418b008129dd26275b37b 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added coprocessor Instructions CDP, CDP2, MCR, MCR2, MRC, MRC2, MCRR, MCRR2,
MRRC, MRRc2. For disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
906d57ffe826c29eeedc1d4f77542fd3f2349b8f 12-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added coprocessor Instructions CDP, CDP2, MCR, MCR2, MRC, MRC2, MCRR, MCRR2,
MRRC, MRRc2. For disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b47fed8f78bf9f246d28ab6be8f32ec656aee210 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added LDRT/LDRBT/STRT/STRBT for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95916 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e4c7f0f6ec2fdc1b58541dab4445761a5e9c6e2a 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added LDRT/LDRBT/STRT/STRBT for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95916 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7253c40c9d802b329111f1239fcd313c8adda05b 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Forgot to also check in this file for vcvt (floating-point <-> fixed-point, VFP).
Sorry!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95892 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
811663f799ce1af18ef704fab14afc02ac94b652 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Forgot to also check in this file for vcvt (floating-point <-> fixed-point, VFP).
Sorry!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95892 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
3dd3f8084d1ed8e41148e832ae34aeedf90329de 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VCVT (between floating-point and fixed-point, VFP) for disassembly.
A8.6.297


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95885 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
27bb8d0a88538eeb20436457922e21e196519ced 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VCVT (between floating-point and fixed-point, VFP) for disassembly.
A8.6.297


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95885 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
37dfb594fc90df6710810b997ccc076625030bfa 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added BKPT/tBKPT (breakpoint) to the instruction table for disassembly purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95884 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
c6f7b27fdab506bc15d6e5f356adf1e455d1d571 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added BKPT/tBKPT (breakpoint) to the instruction table for disassembly purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95884 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
44ad4432391ed496f24adc1da7a327815f404520 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add pseudo instruction TRAP for disassembly, which is encoded according to A5-21
as the "Permanently UNDEFINED" instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95873 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ba6e033f4f2b22dce4766a55dead8385a955fd46 11-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add pseudo instruction TRAP for disassembly, which is encoded according to A5-21
as the "Permanently UNDEFINED" instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95873 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e264f62ca09a8f65c87a46d562a4d0f9ec5d457e 10-Feb-2010 Shih-wei Liao <sliao@google.com> Check in LLVM r95781.
RM.h
RM.td
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMBuildAttrs.h
RMCallingConv.td
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMExpandPseudoInsts.cpp
RMFrameInfo.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMJITInfo.cpp
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMCAsmInfo.cpp
RMMCAsmInfo.h
RMMachineFunctionInfo.h
RMPerfectShuffle.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMRelocations.h
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
RMTargetObjectFile.h
smParser/ARMAsmParser.cpp
smParser/CMakeLists.txt
smParser/Makefile
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
smPrinter/CMakeLists.txt
smPrinter/Makefile
MakeLists.txt
akefile
EONMoveFix.cpp
EONPreAllocPass.cpp
EADME-Thumb.txt
EADME-Thumb2.txt
EADME.txt
argetInfo/ARMTargetInfo.cpp
argetInfo/CMakeLists.txt
argetInfo/Makefile
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
humb2SizeReduction.cpp
1b6d4f77e6d40ba50c62972d9aae398f56670d19 10-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added NOP, DBG, SVC to the instruction table for disassembly purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95784 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
85d5a89f8d03f5b4beb6c68f1ea9283e0dbb3594 10-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added NOP, DBG, SVC to the instruction table for disassembly purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95784 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
726d397a8cc48a5cb5d2f8a0fe10f7f17f7d4afc 10-Feb-2010 Chris Lattner <sabre@nondot.org> print all the newlines at the end of instructions with
OutStreamer.AddBlankLine instead of textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8e089a9e4d6b7aa2b3968c38644f926f60a7c670 10-Feb-2010 Chris Lattner <sabre@nondot.org> print all the newlines at the end of instructions with
OutStreamer.AddBlankLine instead of textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95734 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7c313be63eda14427fe2dbf0bffbf3f8d5b509a2 10-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add VBIF/VBIT for disassembly only.
A8.6.279


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95713 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4814e711ab64cab1d241a97476a905f1d8136877 10-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add VBIF/VBIT for disassembly only.
A8.6.279


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95713 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1bfdc7451f08f0dca69098474b3dcb69ddb04659 09-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VMRS/VMSR for disassembly only.
A8.6.335 & A8.6.336


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95703 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
c9745049e6df8dbf56061a75b5d070b16331428f 09-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VMRS/VMSR for disassembly only.
A8.6.335 & A8.6.336


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95703 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
4052b296030e3523b9a4a8d1e4a9af9091a8d7e8 09-Feb-2010 Chris Lattner <sabre@nondot.org> move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
518bb53485df640d7b7e3f6b0544099020c42aa7 09-Feb-2010 Chris Lattner <sabre@nondot.org> move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
e560a78d3626c2accf49cf38f3c90c53d516b9a0 09-Feb-2010 Jim Grosbach <grosbach@apple.com> Radar 7417921

tMOVCCi pattern only valid for low registers, as the Thumb1 mov immediate to
register instruction only works with low registers. Allowing high registers
for the instruction resulted in the assembler choosing the wide (32-bit)
encoding for the mov, but LLVM though the instruction was only 16 bits wide,
so offset calculations for constant pools became incorrect, leading to
out of range constant pool entries.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95686 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
humb2SizeReduction.cpp
4152778605dcab9e650b2cd03e2d8dc12f20aff6 09-Feb-2010 Jim Grosbach <grosbach@apple.com> Radar 7417921

tMOVCCi pattern only valid for low registers, as the Thumb1 mov immediate to
register instruction only works with low registers. Allowing high registers
for the instruction resulted in the assembler choosing the wide (32-bit)
encoding for the mov, but LLVM though the instruction was only 16 bits wide,
so offset calculations for constant pools became incorrect, leading to
out of range constant pool entries.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95686 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
humb2SizeReduction.cpp
2e1f0096d3d4b0f0bb2f0b80da30a52ef79bf8b3 09-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added vcvtb/vcvtt (between half-precision and single-precision, VFP).
For disassembly only.

A8.6.300


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95669 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2d658df87300704ca5dbc902bf97b906b90418e0 09-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added vcvtb/vcvtt (between half-precision and single-precision, VFP).
For disassembly only.

A8.6.300


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95669 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
230ef32a135d8999407d312daaafe5affe8ca1f7 09-Feb-2010 Chris Lattner <sabre@nondot.org> this is done, tested by CodeGen/ARM/iabs.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95609 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
c133457269306ef8fa45b4e8990bc462e710feaf 09-Feb-2010 Chris Lattner <sabre@nondot.org> this is done, tested by CodeGen/ARM/iabs.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95609 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
8d96fc111c1e6d2467e71ad576a379d71ce523cc 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
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
00b26de3dedf0164ca10a377b3f49b687c327175 08-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add VCVTR (between floating-point and integer, VFP) for disassembly purpose.
The 'R' suffix means the to-integer operations use the rounding mode specified
by the FPSCR, encoded as Inst{7} = 0.

A8.6.295


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95584 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
15b423f7724a0a8ae657f7b66fb090d68008182d 08-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add VCVTR (between floating-point and integer, VFP) for disassembly purpose.
The 'R' suffix means the to-integer operations use the rounding mode specified
by the FPSCR, encoded as Inst{7} = 0.

A8.6.295


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95584 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
714b9c72ac64734e04efa36fa4913265c64decbb 08-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add VCMP (VFP floating-point compare without 'E' bit set) for disassembly purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95560 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7edd8e38c4ad710cd5158de2ffa8eb92b4527375 08-Feb-2010 Johnny Chen <johnny.chen@apple.com> Add VCMP (VFP floating-point compare without 'E' bit set) for disassembly purpose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95560 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
bbe7726eb81a82e657e3882611e96693fffd260e 08-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VMOVRRS/VMOVSRR to ARMInstrVFP.td for disassembly purpose.

A8.6.331 VMOV (between two ARM core registers and two single-precision registers)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
23401d6f8c9e488aac9a70c1639bcaec0dd75458 08-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added VMOVRRS/VMOVSRR to ARMInstrVFP.td for disassembly purpose.

A8.6.331 VMOV (between two ARM core registers and two single-precision registers)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
49b02f29a6277220befb8fe6841713ad4dfff9c2 06-Feb-2010 Bob Wilson <bob.wilson@apple.com> Handle AddrMode6 (for NEON load/stores) in Thumb2's rewriteT2FrameIndex.
Radar 7614112.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95456 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
e6373eb8264ba4804de28d8224e9f7725d3a483c 06-Feb-2010 Bob Wilson <bob.wilson@apple.com> Handle AddrMode6 (for NEON load/stores) in Thumb2's rewriteT2FrameIndex.
Radar 7614112.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95456 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
92a90ab2be83ad2671669d69555252d3b0fe914c 05-Feb-2010 Johnny Chen <johnny.chen@apple.com> VMOVRRD and VMOVDRR both have Inst{7-6} = 0b00.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95397 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7acca6707bf91173bc1c5970bffc0ed55b285f85 05-Feb-2010 Johnny Chen <johnny.chen@apple.com> VMOVRRD and VMOVDRR both have Inst{7-6} = 0b00.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95397 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7765306eef752f506f6d2720de53dc14197b3cfc 03-Feb-2010 Chris Lattner <sabre@nondot.org> make MachineModuleInfoMachO hold non-const MCSymbol*'s instead
of const ones. non-const ones aren't very useful, because you can't
even, say, emit them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d269a6e460a71a6c5c361a26c56c91fdb9486f45 03-Feb-2010 Chris Lattner <sabre@nondot.org> make MachineModuleInfoMachO hold non-const MCSymbol*'s instead
of const ones. non-const ones aren't very useful, because you can't
even, say, emit them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ba4a4b0033dcc771f78db2ff1d1638ad35e876cc 03-Feb-2010 Chris Lattner <sabre@nondot.org> print instructions through the mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95181 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
850d2e2a1b58ea30abed10ca955259d60d07d97a 03-Feb-2010 Chris Lattner <sabre@nondot.org> print instructions through the mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95181 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0c920438c1f21ee6d9befa4aac8b884b8cafbc9c 03-Feb-2010 Chris Lattner <sabre@nondot.org> rejigger the world so that EmitInstruction prints the \n at
the end of the instruction instead of expecting the caller to
do it. This currently causes the asm-verbose instruction
comments to be on the next line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d1ff72b8a797304f146e4293db8c814231ea8cb3 03-Feb-2010 Chris Lattner <sabre@nondot.org> rejigger the world so that EmitInstruction prints the \n at
the end of the instruction instead of expecting the caller to
do it. This currently causes the asm-verbose instruction
comments to be on the next line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ff259dbe71427fbe989d2f886f08c00e369df771 03-Feb-2010 Chris Lattner <sabre@nondot.org> sink handling of target-independent machine instrs (other
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp
file. This allows elimination of the
NO_ASM_WRITER_BOILERPLATE hack among other things.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95177 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
0d883e3f8484491d010b8f8b7a1aecc58cb5fa8e 03-Feb-2010 Chris Lattner <sabre@nondot.org> sink handling of target-independent machine instrs (other
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp
file. This allows elimination of the
NO_ASM_WRITER_BOILERPLATE hack among other things.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95177 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
876e7f04bbe49f63030a1164b42a8e3b8004cb24 03-Feb-2010 Jim Grosbach <grosbach@apple.com> As of r79039, we still try to eliminate the frame pointer on leaf functions,
even when -disable-fp-elim is specified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95161 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
985d45dea357cbfe718b89cebd84b20b1298ab93 03-Feb-2010 Jim Grosbach <grosbach@apple.com> As of r79039, we still try to eliminate the frame pointer on leaf functions,
even when -disable-fp-elim is specified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95161 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ff116f99c64e1ca085c9d1387f7bd6eb8e4dbd67 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Revert 95130.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95160 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
022d9e1cef7586a80a96446ae8691a37def9bbf4 03-Feb-2010 Evan Cheng <evan.cheng@apple.com> Revert 95130.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95160 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
8d2970ba91fc2161bf5fc3d073a59cd4f3dc45a6 03-Feb-2010 Chris Lattner <sabre@nondot.org> refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it. This allows other
types of MCStreamer's to be passed in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
56591ab218639d8a6e4c756ca37adaf20215c3b6 03-Feb-2010 Chris Lattner <sabre@nondot.org> refactor code so that LLVMTargetMachine creates the asmstreamer and
mccontext instead of having AsmPrinter do it. This allows other
types of MCStreamer's to be passed in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95155 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5e78e7e610cd34c0573c64e857d0aee6b44d7e8b 02-Feb-2010 Chris Lattner <sabre@nondot.org> tidy some targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95146 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
55fed86353fb39924378dc0e5d29cb273f5e2138 02-Feb-2010 Chris Lattner <sabre@nondot.org> tidy some targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95146 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
11d88be3b07e41ef0eec781cd2fff01d25039c89 02-Feb-2010 Chris Lattner <sabre@nondot.org> detemplatize ARM code emitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95138 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
33fabd7cc17c60a066c2891244a376684d774fc9 02-Feb-2010 Chris Lattner <sabre@nondot.org> detemplatize ARM code emitter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95138 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
a06694d3d85c7a604ef0068b687cd5f28a903173 02-Feb-2010 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95134 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMTargetMachine.cpp
RMTargetMachine.h
e0faa547059c8d10cf34e63ea26a994291116228 02-Feb-2010 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95134 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMTargetMachine.cpp
RMTargetMachine.h
503c48cbce6bbaeae5d0c8277b15172074630e2e 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate all the dead addSimpleCodeEmitter implementations.

eliminate random "code emitter" stuff in Alpha, except for
the JIT path. Next up, remove the template cruft.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95131 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
f1d6b107d2ea4518d240ee93bf4bffd53e71206d 02-Feb-2010 Chris Lattner <sabre@nondot.org> eliminate all the dead addSimpleCodeEmitter implementations.

eliminate random "code emitter" stuff in Alpha, except for
the JIT path. Next up, remove the template cruft.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95131 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
ca6c93430e98e3fb0eaf40aa543ea1dc45cf35d7 02-Feb-2010 Evan Cheng <evan.cheng@apple.com> Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95130 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
942619695f4bd77934c09a1cae0fb39ae59edac3 02-Feb-2010 Evan Cheng <evan.cheng@apple.com> Pass callsite return type to TargetLowering::LowerCall and use that to check sibcall eligibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95130 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ad3ead17205f81df0a39562f15b30909c328ee22 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
RMInstrThumb2.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
RMInstrThumb2.td
ba9fbe717cae724f48ffb4a38bac0b3e8f866540 02-Feb-2010 Johnny Chen <johnny.chen@apple.com> MOVi16 should also be marked as a UnaryDP instruction, i.e., it doesn't have a
Rn operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95025 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
92e63d817f9aa35afc5e37af8fa31e22463e61c4 02-Feb-2010 Johnny Chen <johnny.chen@apple.com> MOVi16 should also be marked as a UnaryDP instruction, i.e., it doesn't have a
Rn operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95025 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9063a77c72cadae2d09ab225884b5bee4aaca1be 31-Jan-2010 Johnny Chen <johnny.chen@apple.com> For MVNr and MVNs, we need to set Inst{25} = 0 so as not to confuse the decoder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
48d5ccf86a74fe13597e651ead3670acda115497 31-Jan-2010 Johnny Chen <johnny.chen@apple.com> For MVNr and MVNs, we need to set Inst{25} = 0 so as not to confuse the decoder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94955 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
75761f371d323e7a24951c03b52515d7a000bddd 30-Jan-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix a gross typo: ARMv6+ may or may not support unaligned memory operations.
Even if they are suported by the core, they can be disabled
(this is just a configuration bit inside some register).

Allow unaligned memops on darwin and conservatively disallow them otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94889 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
90cfc130d618ecb0539e475c343ed805ee124f8d 30-Jan-2010 Anton Korobeynikov <asl@math.spbu.ru> Fix a gross typo: ARMv6+ may or may not support unaligned memory operations.
Even if they are suported by the core, they can be disabled
(this is just a configuration bit inside some register).

Allow unaligned memops on darwin and conservatively disallow them otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94889 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f363f2bb1168133f7cace650666001cbdf1f02d8 30-Jan-2010 Johnny Chen <johnny.chen@apple.com> Modified encoding bits specification for VFP instructions. In particular, the D
bit (Inst{22}) and the M bit (Inst{5}) should be left unspecified. For binary
format instructions, Inst{6} and Inst{4} need to specified for proper decodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94855 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
69a8c7f497b5686d55798a0aa4663a6e0d5bc12b 30-Jan-2010 Johnny Chen <johnny.chen@apple.com> Modified encoding bits specification for VFP instructions. In particular, the D
bit (Inst{22}) and the M bit (Inst{5}) should be left unspecified. For binary
format instructions, Inst{6} and Inst{4} need to specified for proper decodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94855 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
1d40b3738f819d8cfb67b6b71d83642036388cd0 28-Jan-2010 Chris Lattner <sabre@nondot.org> Give AsmPrinter the most common expected implementation of
runOnMachineFunction, and switch PPC to use EmitFunctionBody.
The two ppc asmprinters now don't heave to define
runOnMachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d49fe1b6bc4615684c2ec71140a21e9c4cd69ce3 28-Jan-2010 Chris Lattner <sabre@nondot.org> Give AsmPrinter the most common expected implementation of
runOnMachineFunction, and switch PPC to use EmitFunctionBody.
The two ppc asmprinters now don't heave to define
runOnMachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94722 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d2f089fa97185c4659d22de5dc7bb36a7c54b05a 28-Jan-2010 Chris Lattner <sabre@nondot.org> switch ARM to EmitFunctionBody().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94719 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a786ceac5c888761d83d84d35eb16150be57cc6e 28-Jan-2010 Chris Lattner <sabre@nondot.org> switch ARM to EmitFunctionBody().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94719 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d7dede2bdd47620b6f8ac8e3f72d454bac8c1005 28-Jan-2010 Chris Lattner <sabre@nondot.org> Remove the argument from EmitJumpTableInfo, because it doesn't need it.

Move the X86 implementation of function body emission up to
AsmPrinter::EmitFunctionBody, which works by calling the virtual
EmitInstruction method.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94716 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
14c38ec2afeaf25c53a50c2c65116aca8c889401 28-Jan-2010 Chris Lattner <sabre@nondot.org> Remove the argument from EmitJumpTableInfo, because it doesn't need it.

Move the X86 implementation of function body emission up to
AsmPrinter::EmitFunctionBody, which works by calling the virtual
EmitInstruction method.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94716 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8559cf724e8fb6a74ee227709b3a634edb2f46b4 28-Jan-2010 Chris Lattner <sabre@nondot.org> Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.
Overload it in the ARM backend to do nothing, since is does insane
constant pool emission.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a2406190ca28dc5901dfe747849c8eda9c29d7ee 28-Jan-2010 Chris Lattner <sabre@nondot.org> Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.
Overload it in the ARM backend to do nothing, since is does insane
constant pool emission.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0ee0d725fafc774958582e21d94929d79aa6086f 28-Jan-2010 Chris Lattner <sabre@nondot.org> switch ARM to use EmitFunctionHeader.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
953ebb769ada06d22f8ae4963651530b9cb84830 28-Jan-2010 Chris Lattner <sabre@nondot.org> switch ARM to use EmitFunctionHeader.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94703 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a42ba8245c295afa5e6feac6e4b3f6e853f3e319 28-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate the ARMFunctionInfo::Align member, using
MachineFunction::Alignment instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94701 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMMachineFunctionInfo.h
smPrinter/ARMAsmPrinter.cpp
7d7dab02783fb4f1f5d0cf274c52a4fb059bfbea 28-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate the ARMFunctionInfo::Align member, using
MachineFunction::Alignment instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94701 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMMachineFunctionInfo.h
smPrinter/ARMAsmPrinter.cpp
62de4e7b460f8ffbe0ee71a5a09503790102943f 27-Jan-2010 Jeffrey Yasskin <jyasskin@google.com> Kill ModuleProvider and ghost linkage by inverting the relationship between
Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
GlobalValues now, and doesn't provide modules, it's renamed to
"GVMaterializer". Code that used to need a ModuleProvider to materialize
Functions can now materialize the Functions directly. Functions no longer use a
magic linkage to record that they're materializable; they simply ask the
GVMaterializer.

Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
the functions that refer to it. Instead, because Module now exposes the same
functionality ModuleProvider used to, we store a Module* in any
LLVMModuleProviderRef and translate in the wrapper methods. The bindings to
other languages still use the ModuleProvider concept. It would probably be
worth some time to update them to follow the C++ more closely, but I don't
intend to do it.

Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94686 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
f0356fe140af1a30587b9a86bcfb1b2c51b8ce20 27-Jan-2010 Jeffrey Yasskin <jyasskin@google.com> Kill ModuleProvider and ghost linkage by inverting the relationship between
Modules and ModuleProviders. Because the "ModuleProvider" simply materializes
GlobalValues now, and doesn't provide modules, it's renamed to
"GVMaterializer". Code that used to need a ModuleProvider to materialize
Functions can now materialize the Functions directly. Functions no longer use a
magic linkage to record that they're materializable; they simply ask the
GVMaterializer.

Because the C ABI must never change, we can't remove LLVMModuleProviderRef or
the functions that refer to it. Instead, because Module now exposes the same
functionality ModuleProvider used to, we store a Module* in any
LLVMModuleProviderRef and translate in the wrapper methods. The bindings to
other languages still use the ModuleProvider concept. It would probably be
worth some time to update them to follow the C++ more closely, but I don't
intend to do it.

Fixes http://llvm.org/PR5737 and http://llvm.org/PR5735.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94686 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
e3781183a5499329db1165cfa732f13adf9dcbe4 27-Jan-2010 Jim Grosbach <grosbach@apple.com> Adjust setjmp instruction sequence to not need 32-bit alignment padding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94627 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrThumb.td
c90a153ad04a2f0cc212c5bc7206d655807b90e0 27-Jan-2010 Jim Grosbach <grosbach@apple.com> Adjust setjmp instruction sequence to not need 32-bit alignment padding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94627 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrThumb.td
6b6ed5994d4c2be6e2087a969b35f55226d82608 27-Jan-2010 Evan Cheng <evan.cheng@apple.com> Eliminate target hook IsEligibleForTailCallOptimization.

Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94626 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
0c439eb2c8397996cbccaf2798e598052d9982c8 27-Jan-2010 Evan Cheng <evan.cheng@apple.com> Eliminate target hook IsEligibleForTailCallOptimization.

Target independent isel should always pass along the "tail call" property. Change
target hook LowerCall's parameter "isTailCall" into a refernce. If the target
decides it's impossible to honor the tail call request, it should set isTailCall
to false to make target independent isel happy.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94626 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
fa5b938385d54d51a5b8cfa5487eff0a4599f755 27-Jan-2010 Chris Lattner <sabre@nondot.org> constify a method argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94612 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
30c6b75ac2eef548c18110a38c9798ea5314caba 27-Jan-2010 Chris Lattner <sabre@nondot.org> constify a method argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94612 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
5e969572f5b9e519eb01837cd84f129e46b6b892 26-Jan-2010 Chris Lattner <sabre@nondot.org> Eliminate SetDirective, and replace it with HasSetDirective.
Default HasSetDirective to true, since most targets have it.

The targets that claim to not have it probably do, or it is
spelled differently. These include Blackfin, Mips, Alpha, and
PIC16. All of these except pic16 are normal ELF targets, so
they almost certainly have it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94585 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
cee63322eaccc2f1067bdf5eab506e440f867da1 26-Jan-2010 Chris Lattner <sabre@nondot.org> Eliminate SetDirective, and replace it with HasSetDirective.
Default HasSetDirective to true, since most targets have it.

The targets that claim to not have it probably do, or it is
spelled differently. These include Blackfin, Mips, Alpha, and
PIC16. All of these except pic16 are normal ELF targets, so
they almost certainly have it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94585 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
8fd77a1841661ee1254e50baf3afb58cb0a395b7 26-Jan-2010 Rafael Espindola <rafael.espindola@gmail.com> Emit .comm alignment in bytes but .align in powers of 2 for ARM ELF.

Original patch by Sandeep Patel and updated by me.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94582 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
2e2563bf8e0f0a7f8c923000c0206855f16968b2 26-Jan-2010 Rafael Espindola <rafael.espindola@gmail.com> Emit .comm alignment in bytes but .align in powers of 2 for ARM ELF.

Original patch by Sandeep Patel and updated by me.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94582 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
3036c9be66d46f9c44cf75f7c6d449653b8c0892 26-Jan-2010 Chris Lattner <sabre@nondot.org> don't set to the default value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94580 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
b3732fbabdab453a17a74f0fcce507d9567b8d6b 26-Jan-2010 Chris Lattner <sabre@nondot.org> don't set to the default value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94580 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
84d5ca9524a5d23f88083d0663ee99dca739df21 26-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MachineBasicBlock::getSymbol method, replacing
the AsmPrinter::GetMBBSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
f71cb015c1386ff8adc9ef0aa03fc0f0fc4a6e3e 26-Jan-2010 Chris Lattner <sabre@nondot.org> add a new MachineBasicBlock::getSymbol method, replacing
the AsmPrinter::GetMBBSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94515 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
74da888bd8c3d6bb980bb95ec0bc5bc57d6b9157 26-Jan-2010 Chris Lattner <sabre@nondot.org> don't bother setting the AsmPrinter::MF ivar, now that
AsmPrinter::SetupMachineFunction sets it. Note that systemz
and msp430 didn't. Yay for reduced inconsistency! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1e459c446786f46ed865183f1c6adb17e2e8fcea 26-Jan-2010 Chris Lattner <sabre@nondot.org> don't bother setting the AsmPrinter::MF ivar, now that
AsmPrinter::SetupMachineFunction sets it. Note that systemz
and msp430 didn't. Yay for reduced inconsistency! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94510 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9e096318a10b4ea3c03f16bdb8b8d151c3713f6f 26-Jan-2010 Jim Grosbach <grosbach@apple.com> Minor jump table cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94475 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1f9b48ad87a5dab4a6c3805c369414c831e4451d 26-Jan-2010 Jim Grosbach <grosbach@apple.com> Minor jump table cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94475 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c42059f02ee4a9a96916652703345d58e1be2fce 26-Jan-2010 Chris Lattner <sabre@nondot.org> fix quoting problem jim noticed!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94472 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
281e7767df71b3f727ade80a16ff0c4fe5a49dd9 26-Jan-2010 Chris Lattner <sabre@nondot.org> fix quoting problem jim noticed!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94472 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b10c7e2e10bb899f1f48cd33195c68b31ecc2db0 26-Jan-2010 Chris Lattner <sabre@nondot.org> prep work to support a future where getJumpTableInfo will return
a null pointer for functions with no jump tables. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94469 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
b1e803985d3378538ae9cff7eed4102c002d1e22 26-Jan-2010 Chris Lattner <sabre@nondot.org> prep work to support a future where getJumpTableInfo will return
a null pointer for functions with no jump tables. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94469 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
7e51ffddf94162f3c6d9c0b8379dc1983b2110fe 25-Jan-2010 Johnny Chen <johnny.chen@apple.com> Make it SP, LR, PC for GPR Register Class instead of LR, SP, PC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94465 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
aeb326aad70acd1dd8b08564be4165eabc9ef542 25-Jan-2010 Johnny Chen <johnny.chen@apple.com> Make it SP, LR, PC for GPR Register Class instead of LR, SP, PC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94465 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
c6f0f30bb97c21286e49c6b5b91999c1012de275 25-Jan-2010 Johnny Chen <johnny.chen@apple.com> Implemented ARMInstPrinter::printThumbS4ImmOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94457 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
541ba7dd9269a67e3f1da5e0add7bbddcb6b4f9d 25-Jan-2010 Johnny Chen <johnny.chen@apple.com> Implemented ARMInstPrinter::printThumbS4ImmOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94457 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
1b457cbee9b748a30b56c63c8a75a86cc13ea0f5 25-Jan-2010 Johnny Chen <johnny.chen@apple.com> Fixed the order of GPR RegisterClass regs to be: ..., R10, R11, R12, ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94455 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
e43b6c9695f2489b69aa9ea798f3c9e281c16239 25-Jan-2010 Johnny Chen <johnny.chen@apple.com> Fixed the order of GPR RegisterClass regs to be: ..., R10, R11, R12, ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94455 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
c180db2ec498bf68f38b7aca097f6bf0350f9e5d 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcize jump table symbol manipulation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94441 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0890cf124f00da3dc943c1882f4221955e0281ed 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcize jump table symbol manipulation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94441 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ccda1400e725df3834ab6b552c0e00e956687ebd 25-Jan-2010 Chris Lattner <sabre@nondot.org> sink an arm specific method out of asmprinter into the ARMAsmPrinter and
rename it to avoid shadowing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
bfcb09688c7db15a9f9415d717a5a31c499a2208 25-Jan-2010 Chris Lattner <sabre@nondot.org> sink an arm specific method out of asmprinter into the ARMAsmPrinter and
rename it to avoid shadowing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94440 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8a747eeebfadc7bbd7de8218cbd0d4208bbb9345 25-Jan-2010 Jim Grosbach <grosbach@apple.com> ARM does accept the .comm directive alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94408 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
546ae6ec7793470cfb176d8e9c518bd14340d8d8 25-Jan-2010 Jim Grosbach <grosbach@apple.com> ARM does accept the .comm directive alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94408 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
473d2db15ef81ae8c07079ea3f9721a150f212e9 25-Jan-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR6134.
We are not emitting alignments on Darwin for "bar". Not sure what is the
correct way to do it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94400 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
f166ed7324d3708a74231f9f86fd148f811038a7 25-Jan-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR6134.
We are not emitting alignments on Darwin for "bar". Not sure what is the
correct way to do it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94400 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
e9a40677cd1fd95ed7e9b75a1df19449f432ad9e 24-Jan-2010 Chris Lattner <sabre@nondot.org> make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94378 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/Makefile
smPrinter/Makefile
akefile
argetInfo/Makefile
43b5f9312d56be400af031f7487a99b75b7b0f97 24-Jan-2010 Chris Lattner <sabre@nondot.org> make -fno-rtti the default unless a directory builds with REQUIRES_RTTI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94378 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/Makefile
smPrinter/Makefile
akefile
argetInfo/Makefile
d70deeb19ecfe335eb475df22a1411e9e6927a44 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize lcomm, simplify .comm, extend both to support 64-bit sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94299 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
9eb158d5b4cd4f6fc80912e2dd77bdf13c3ca0e7 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize lcomm, simplify .comm, extend both to support 64-bit sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94299 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
3e99011e0d264e0e0e44dd638777ecb29101ad12 23-Jan-2010 Chris Lattner <sabre@nondot.org> use helpers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1b46f433e02155daba8ed3b1269c86ce63c9713b 23-Jan-2010 Chris Lattner <sabre@nondot.org> use helpers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94296 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2d7c8149c012f5f600b61339a9ba590c850693ef 23-Jan-2010 Chris Lattner <sabre@nondot.org> move the various directive enums out of the MCStreamer class
into a new MCDirectives.h file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a5ad93a10a5435f21090b09edb6b3a7e44967648 23-Jan-2010 Chris Lattner <sabre@nondot.org> move the various directive enums out of the MCStreamer class
into a new MCDirectives.h file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94294 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5c804558fe5a69a7534b8a3bb7420ec1a483a1c8 22-Jan-2010 Chris Lattner <sabre@nondot.org> Stop building RTTI information for *most* llvm libraries. Notable
missing ones are libsupport, libsystem and libvmcore. libvmcore is
currently blocked on bugpoint, which uses EH. Once it stops using
EH, we can switch it off.

This #if 0's out 3 unit tests, because gtest requires RTTI information.
Suggestions welcome on how to fix this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94164 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/Makefile
smPrinter/Makefile
akefile
argetInfo/Makefile
e73a31f667ad2fe03e25c97ac45b58c30d7f07c3 22-Jan-2010 Chris Lattner <sabre@nondot.org> Stop building RTTI information for *most* llvm libraries. Notable
missing ones are libsupport, libsystem and libvmcore. libvmcore is
currently blocked on bugpoint, which uses EH. Once it stops using
EH, we can switch it off.

This #if 0's out 3 unit tests, because gtest requires RTTI information.
Suggestions welcome on how to fix this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94164 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/Makefile
smPrinter/Makefile
akefile
argetInfo/Makefile
291d6690fd435a775e00003e8b6237d2882011fd 22-Jan-2010 Chris Lattner <sabre@nondot.org> create a new MCParser library and move some stuff into it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94129 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c6ef277a0b8f43af22d86aea9d5053749cacfbbb 22-Jan-2010 Chris Lattner <sabre@nondot.org> create a new MCParser library and move some stuff into it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94129 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
40e4b11b7d72d126588a54f2247dee5b855e574b 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
EADME.txt
humb2SizeReduction.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
EADME.txt
humb2SizeReduction.cpp
939a31427d4d23ad68c2919bb8002e15a9fe5a2f 20-Jan-2010 Chris Lattner <sabre@nondot.org> inline and radically simplify printDataDirective. It will eventually
go completely away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93994 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ea3cb40fab5dc84caa0c6c6bcb650261b4b6e724 20-Jan-2010 Chris Lattner <sabre@nondot.org> inline and radically simplify printDataDirective. It will eventually
go completely away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93994 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
50f82ef05abe8d27ecb77f6ffa1bcefb51e383c4 20-Jan-2010 Chris Lattner <sabre@nondot.org> revert 93934, removing the MCAsmInfo endianness bit. I can't
stomache MCAsmInfo having this, and I found a better solution to
this layering issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93985 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
8eeba35babf3114966fc4e6e8522057e46b610db 20-Jan-2010 Chris Lattner <sabre@nondot.org> revert 93934, removing the MCAsmInfo endianness bit. I can't
stomache MCAsmInfo having this, and I found a better solution to
this layering issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93985 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
a703be764c744c8643098db9ffa9f103ef39384a 19-Jan-2010 Bob Wilson <bob.wilson@apple.com> Wrap some comments to 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cb9a6aab02f07cda005c7c078d8e4a3463017866 19-Jan-2010 Bob Wilson <bob.wilson@apple.com> Wrap some comments to 80 columns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93940 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a918216872b12caa3613c08266cfd59a1849c7af 19-Jan-2010 Chris Lattner <sabre@nondot.org> give MCAsmInfo a 'has little endian' bit. This is unfortunate, but
I really want clients of the streamer to be able to say "emit this
64-bit integer" and have it get broken down right by the streamer.

I may change this in the future, we'll see how it works out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93934 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
c7b8814bb4f2e6052060d6118d3bc3b66f5c5b0b 19-Jan-2010 Chris Lattner <sabre@nondot.org> give MCAsmInfo a 'has little endian' bit. This is unfortunate, but
I really want clients of the streamer to be able to say "emit this
64-bit integer" and have it get broken down right by the streamer.

I may change this in the future, we'll see how it works out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93934 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
3cc5fa0acaa893d9dc5fb52229b0803d3ed60922 19-Jan-2010 Sean Callanan <scallanan@apple.com> Promoted the getTok() method to MCAsmParser so that
the two token accessor functions are declared consistently.
Modified the clients of MCAsmParser to reflect this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93916 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
18b8323de70e3461b5d035e3f9e4f6dfaf5e674b 19-Jan-2010 Sean Callanan <scallanan@apple.com> Promoted the getTok() method to MCAsmParser so that
the two token accessor functions are declared consistently.
Modified the clients of MCAsmParser to reflect this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93916 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7d8eb70d8d0a68e31d0860c22c227eff56ab6f23 19-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove predicates when changing an add into an unpredicable mov.

Since the mov is executed unconditionally, make sure that the add didn't have
any predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93909 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
35f0febcb66b5a50a5a750efcbefc95f7fc25c7b 19-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove predicates when changing an add into an unpredicable mov.

Since the mov is executed unconditionally, make sure that the add didn't have
any predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93909 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
34b4a466415f98a648ea594f950cb2fdca2dadd2 19-Jan-2010 Sean Callanan <scallanan@apple.com> Propagated the parser-side Lex function's declaration to
MCAsmParser, and changed the target-specific AsmParsers
to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93900 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
b9a25b7744ed12b80031426978decce3d4cebbd7 19-Jan-2010 Sean Callanan <scallanan@apple.com> Propagated the parser-side Lex function's declaration to
MCAsmParser, and changed the target-specific AsmParsers
to use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93900 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a71dc60dc2bb5a154d9195dfe2d3126f7c7967d5 19-Jan-2010 Chris Lattner <sabre@nondot.org> Generalize mcasmstreamer data emission APIs to take an address space
identifier. There is no way to work around it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93896 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
aaec205b87637cd0d59d4f11630db603686eb73d 19-Jan-2010 Chris Lattner <sabre@nondot.org> Generalize mcasmstreamer data emission APIs to take an address space
identifier. There is no way to work around it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93896 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e9b2eed90ebc564917e62f79a5da0a72c394aadf 19-Jan-2010 Jim Grosbach <grosbach@apple.com> For aligned load/store instructions, it's only required to know whether a
function can support dynamic stack realignment. That's a much easier question
to answer at instruction selection stage than whether the function actually
will have dynamic alignment prologue. This allows the removal of the
stack alignment heuristic pass, and improves code quality for cases where
the heuristic would result in dynamic alignment code being generated when
it was not strictly necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93885 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMTargetMachine.cpp
e45ab8a0a90e4f3a59d8c38038ae3e495ee1fef3 19-Jan-2010 Jim Grosbach <grosbach@apple.com> For aligned load/store instructions, it's only required to know whether a
function can support dynamic stack realignment. That's a much easier question
to answer at instruction selection stage than whether the function actually
will have dynamic alignment prologue. This allows the removal of the
stack alignment heuristic pass, and improves code quality for cases where
the heuristic would result in dynamic alignment code being generated when
it was not strictly necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93885 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMTargetMachine.cpp
30a4ee2219f496f9e1ffbf0b68f6c312580c12ef 19-Jan-2010 Chris Lattner <sabre@nondot.org> zap the ARM version of PrintGlobalVariable, which I missed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93863 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8ad9a775019c69a07bb8258f7ff2849d594956df 19-Jan-2010 Chris Lattner <sabre@nondot.org> zap the ARM version of PrintGlobalVariable, which I missed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93863 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
bc6b5f6b1a84d6d193b13d1ca63476fee0b6e15b 19-Jan-2010 Chris Lattner <sabre@nondot.org> some cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93853 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cfd910ebc459776c326b1bdb47e25ae056a6c734 19-Jan-2010 Chris Lattner <sabre@nondot.org> some cleanups


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93853 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
41e516af8959ebc60606dc7cc6f95c5c29fea000 19-Jan-2010 Chris Lattner <sabre@nondot.org> add a bool for whether .lcomm takes an alignment instead of basing this on "isdarwin".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93852 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7517b249caa793a9a01e4b6aff9c47fd88a153cc 19-Jan-2010 Chris Lattner <sabre@nondot.org> add a bool for whether .lcomm takes an alignment instead of basing this on "isdarwin".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93852 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d960947255c0e5d28eab6d76a02222133af1f1f6 19-Jan-2010 Chris Lattner <sabre@nondot.org> hoist handling of external globals and special globals up to common code.
This makes a similar code dead in all the other targets, I'll clean it up
in a bit.

This also moves handling of lcomm up before acquisition of a section,
since lcomm never needs a section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
48d64ba9d846229339b2431b298620cb8a01ffc5 19-Jan-2010 Chris Lattner <sabre@nondot.org> hoist handling of external globals and special globals up to common code.
This makes a similar code dead in all the other targets, I'll clean it up
in a bit.

This also moves handling of lcomm up before acquisition of a section,
since lcomm never needs a section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93851 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2f2fe05fa39eac3b0067ccadd5dd8c985d5a09fe 19-Jan-2010 Chris Lattner <sabre@nondot.org> move production of .reference directives for static ctor/dtor list on
darwin into common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93849 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
71eae713153e564ec743c5c4162ff258c255de78 19-Jan-2010 Chris Lattner <sabre@nondot.org> move production of .reference directives for static ctor/dtor list on
darwin into common code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93849 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
53f7eef9b27fda28dc68672bb9261f1611bad972 19-Jan-2010 Chris Lattner <sabre@nondot.org> use BSSLocal classifier to identify 'lcomm' data instead of
duplicating the logic (differently) in lots of different targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c1ef06ac5264cb43f148590091606f0ed90a72e9 19-Jan-2010 Chris Lattner <sabre@nondot.org> use BSSLocal classifier to identify 'lcomm' data instead of
duplicating the logic (differently) in lots of different targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93847 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c07400c8451d6706a8581814784f17f1bcf027a2 19-Jan-2010 Chris Lattner <sabre@nondot.org> now that elf weak bss symbols are handled correctly, simplify a bunch of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93845 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
56b1319fbe18e886f7cff415b45df404fac39623 19-Jan-2010 Chris Lattner <sabre@nondot.org> now that elf weak bss symbols are handled correctly, simplify a bunch of code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93845 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9b7400533f5a2ff9aa2d7bdd899be05dccb033e3 19-Jan-2010 Chris Lattner <sabre@nondot.org> introduce a section kind for common linkage. Use this to slightly
simplify and commonize some of the asmprinter logic for globals.

This also avoids printing the MCSection for .zerofill, which broke
the llvm-gcc build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a3839bc3714e6a84222f45cf4c0f1a20a88b10cd 19-Jan-2010 Chris Lattner <sabre@nondot.org> introduce a section kind for common linkage. Use this to slightly
simplify and commonize some of the asmprinter logic for globals.

This also avoids printing the MCSection for .zerofill, which broke
the llvm-gcc build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93843 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
63b6b4e7fc5da5205de4875363e8c2110611b35f 19-Jan-2010 Chris Lattner <sabre@nondot.org> change an accessor to a predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93839 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6e3be14be4eadd9aefea654611c808eea9eb8aea 19-Jan-2010 Chris Lattner <sabre@nondot.org> change an accessor to a predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93839 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
87edd27219b2b1e80ff485be96b91a733aeb4a32 19-Jan-2010 Chris Lattner <sabre@nondot.org> Cleanup handling of .zerofill on darwin:

1. TargetLoweringObjectFileMachO should decide if something
goes in zerofill instead of having every target do it.
2. TargetLoweringObjectFileMachO should assign said symbols to
the right MCSection, the asmprinters should just emit to the
right section.
3. Since all zerofill stuff goes through mcstreamer anymore,
MAI can have a bool "haszerofill" instead of having the textual
directive to emit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
aac138e84dee1cb3ffc1035b2a1e4361fe0b4f80 19-Jan-2010 Chris Lattner <sabre@nondot.org> Cleanup handling of .zerofill on darwin:

1. TargetLoweringObjectFileMachO should decide if something
goes in zerofill instead of having every target do it.
2. TargetLoweringObjectFileMachO should assign said symbols to
the right MCSection, the asmprinters should just emit to the
right section.
3. Since all zerofill stuff goes through mcstreamer anymore,
MAI can have a bool "haszerofill" instead of having the textual
directive to emit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93838 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d7da8fccf37c8a2e08e2095ce2436fae4b67866e 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
46e4380ba4fd91d54cee4970dc2c586ee1dd6ad0 18-Jan-2010 Jim Grosbach <grosbach@apple.com> Minor cleanup for jump table printing. Need a reference, not a pointer, for
printing via <<. Otherwise we just print the pointer value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93777 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6a19947dd6b4e180017acec351d33edb7b40361b 18-Jan-2010 Jim Grosbach <grosbach@apple.com> Minor cleanup for jump table printing. Need a reference, not a pointer, for
printing via <<. Otherwise we just print the pointer value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93777 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b48276c7037cde3426aadc00b0e6b960c506a808 18-Jan-2010 Johnny Chen <johnny.chen@apple.com> The most significant encoding bit of GPR:$src or GPR:$dst was over-specified in
the various MOV (register) instructions (16-bit Thumb), including tBRIND (the
indirect branch). Instead of '1', it should be specified as '?', because GPR
only specifies the register class, which includes both hi-and-lo registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93759 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
eb231ce51dcbcbd464fa639f0dc0d2e39d487285 18-Jan-2010 Johnny Chen <johnny.chen@apple.com> The most significant encoding bit of GPR:$src or GPR:$dst was over-specified in
the various MOV (register) instructions (16-bit Thumb), including tBRIND (the
indirect branch). Instead of '1', it should be specified as '?', because GPR
only specifies the register class, which includes both hi-and-lo registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93759 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
f1f92ff1dc0ef8a055d567db9aa7cbf338649849 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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
82dcfa3215e4390287f194f33a0183c5d14a17a2 18-Jan-2010 Bob Wilson <bob.wilson@apple.com> Emit spaces after commas in Neon register lists. This is more consistent
with the rest of the assembly output, is easier to read, and matches the
expected output for gcc's Neon tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93703 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9fedc33ca8af58cbb2c0b405ef40e8d486f2f64b 18-Jan-2010 Bob Wilson <bob.wilson@apple.com> Emit spaces after commas in Neon register lists. This is more consistent
with the rest of the assembly output, is easier to read, and matches the
expected output for gcc's Neon tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93703 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1e9a11b57bff0f237a15b2b67eafd71a1e220aa4 18-Jan-2010 Chris Lattner <sabre@nondot.org> remove the MAI argument to MCExpr::print and switch overthing to use << when printing them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
8cb9a3b13f3226b7e741768b69d26ecd6b5231f1 18-Jan-2010 Chris Lattner <sabre@nondot.org> remove the MAI argument to MCExpr::print and switch overthing to use << when printing them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93699 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
ce40984980d8cc39e903382478c111d967aed337 17-Jan-2010 Chris Lattner <sabre@nondot.org> now that MCSymbol::print doesn't use it's MAI argument, we can
remove it and change all the code that prints MCSymbols to use
<< instead, which is much simpler and cleaner.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
10b318bcb39218d2ed525e4862c854bc8d1baf63 17-Jan-2010 Chris Lattner <sabre@nondot.org> now that MCSymbol::print doesn't use it's MAI argument, we can
remove it and change all the code that prints MCSymbols to use
<< instead, which is much simpler and cleaner.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93695 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a21a9cc099e960134a6221445baff1d4aa9a50fc 17-Jan-2010 Bob Wilson <bob.wilson@apple.com> The Neon "vtst" instruction takes a suffix that is the element size alone --
adding an "i" to the suffix, indicating that the elements are integers, is
accepted but not part of the standard syntax. This helps us pass a few more
of the Neon tests from gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93677 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3a4a832223e5649d97587e1be1e2d83f94a4baaa 17-Jan-2010 Bob Wilson <bob.wilson@apple.com> The Neon "vtst" instruction takes a suffix that is the element size alone --
adding an "i" to the suffix, indicating that the elements are integers, is
accepted but not part of the standard syntax. This helps us pass a few more
of the Neon tests from gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93677 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
207fc5bdaa92d75a059ce6da9f9751bca15cc780 17-Jan-2010 Bob Wilson <bob.wilson@apple.com> Fix an off-by-one error that caused the chain operand to be dropped from Neon
vector load-lane and store-lane instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
507d32aad2152a9b889df085feca2f653925456c 17-Jan-2010 Bob Wilson <bob.wilson@apple.com> Fix an off-by-one error that caused the chain operand to be dropped from Neon
vector load-lane and store-lane instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a6f2a103c7713d0184ef7a6c6b1933db3547b3e2 16-Jan-2010 Chris Lattner <sabre@nondot.org> rename GetPrivateGlobalValueSymbolStub -> GetSymbolWithGlobalValueBase,
and add an explicit ForcePrivate argument.

Switch FunctionEHFrameInfo to be MCSymbol based instead of string based.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7a2ba94d03b43f41b54872dacd7b2250dde4c7bd 16-Jan-2010 Chris Lattner <sabre@nondot.org> rename GetPrivateGlobalValueSymbolStub -> GetSymbolWithGlobalValueBase,
and add an explicit ForcePrivate argument.

Switch FunctionEHFrameInfo to be MCSymbol based instead of string based.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
86974d4af1c5f4fbdd5ad2f1a271bafa78e276a7 16-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate uses of mangler and simplify code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.cpp
9ab19f25aaca858928901f9c520c666a4c815ebd 16-Jan-2010 Chris Lattner <sabre@nondot.org> eliminate uses of mangler and simplify code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.cpp
651adf3e889d924389d6230602083c6e9bae794b 16-Jan-2010 Chris Lattner <sabre@nondot.org> MCize a bunch more stuff, eliminating a lot of uses of the mangler
and CurrentFnName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93594 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
12164414dd3daa6974985eeb2e89bfb93cf07641 16-Jan-2010 Chris Lattner <sabre@nondot.org> MCize a bunch more stuff, eliminating a lot of uses of the mangler
and CurrentFnName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93594 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
67cce68221c693cd2c80cf2a16b626b6abfc67e6 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a version of AsmPrinter::printVisibility that takes an MCSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93587 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
53d4d78d9a2c26a67ac8f6e81cc149702103fc2c 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a version of AsmPrinter::printVisibility that takes an MCSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93587 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0028c84401fcd8d2e6f9acc50c1ffbbc2172bea8 16-Jan-2010 Chris Lattner <sabre@nondot.org> use MCSymbol instead of getMangledName() in all cases except one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
f0aacf8201d96da7d56181e5d02af711e5f8128d 16-Jan-2010 Chris Lattner <sabre@nondot.org> use MCSymbol instead of getMangledName() in all cases except one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3ec04731eb45adb6622a62456d1bc605711c5f42 16-Jan-2010 Chris Lattner <sabre@nondot.org> mc'ize a bunch of symbol stuff, eliminating std::strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93578 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8b3787586ed92df55131ad38c16646b7eba401a0 16-Jan-2010 Chris Lattner <sabre@nondot.org> mc'ize a bunch of symbol stuff, eliminating std::strings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93578 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2eb781d9dee5c87fd2efac8dac12ae47c4526544 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a AsmPrinter::GetGlobalValueSymbol and GetExternalSymbolSymbol
helper method, use it to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6b04edee11c2bb35a48b1c42f867b4ba8cdfff97 16-Jan-2010 Chris Lattner <sabre@nondot.org> add a AsmPrinter::GetGlobalValueSymbol and GetExternalSymbolSymbol
helper method, use it to simplify some code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
45c45c8f43de3a269381f4e155e428abce7e4488 15-Jan-2010 Jim Grosbach <grosbach@apple.com> Update Thumb1 storeRegToStackSlot() and loadRegFromStackSlot() to properly
handle physical registers R0-R7 when described as having a non-tGPR register
class.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93564 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
98793b9468a242348879334c5821fb6b5c784517 15-Jan-2010 Jim Grosbach <grosbach@apple.com> Update Thumb1 storeRegToStackSlot() and loadRegFromStackSlot() to properly
handle physical registers R0-R7 when described as having a non-tGPR register
class.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93564 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
c1e662a6d626833993e5640b9ffd1a74ea74501a 15-Jan-2010 Jim Grosbach <grosbach@apple.com> Name change for consistency. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93480 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
867bbbfff7752b86be14f38644599e9da88a5f78 15-Jan-2010 Jim Grosbach <grosbach@apple.com> Name change for consistency. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93480 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3cb6277d7f2dd5b0d47a327b4c5d1fa8188e28ae 15-Jan-2010 Jim Grosbach <grosbach@apple.com> EmitAtomicCmpSwap() custome inserter needs to delete the MI passed in. EmitAtomicBinary() already does this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5efaed3bf46c829ff8767fd804815c5471f83310 15-Jan-2010 Jim Grosbach <grosbach@apple.com> EmitAtomicCmpSwap() custome inserter needs to delete the MI passed in. EmitAtomicBinary() already does this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2786524f204eda405c56041c0f01921d52a5f0ef 14-Jan-2010 Johnny Chen <johnny.chen@apple.com> Added 16-bit Thumb Load/Store immediate instructions with encoding bits so that
the disassembler can properly decode Load/Store register/immediate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93471 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
51bc5612b3aa7685774c7fea856297f5276ffd3e 14-Jan-2010 Johnny Chen <johnny.chen@apple.com> Added 16-bit Thumb Load/Store immediate instructions with encoding bits so that
the disassembler can properly decode Load/Store register/immediate instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93471 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
22f480d087d3d436ba0103347b148de68eb7363b 14-Jan-2010 Chris Lattner <sabre@nondot.org> Split the TargetAsmParser "ParseInstruction" interface in half:
the new ParseInstruction method just parses and returns a list of
target operands. A new MatchInstruction interface is used to
turn the operand list into an MCInst.

This requires new/deleting all the operands, but it also gives
targets the ability to use polymorphic operands if they want to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93469 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9898671a74d3fc924347e679c45edaa685b3fe6e 14-Jan-2010 Chris Lattner <sabre@nondot.org> Split the TargetAsmParser "ParseInstruction" interface in half:
the new ParseInstruction method just parses and returns a list of
target operands. A new MatchInstruction interface is used to
turn the operand list into an MCInst.

This requires new/deleting all the operands, but it also gives
targets the ability to use polymorphic operands if they want to.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93469 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f66e4ebbdc4bf8d6d48f3d17c4595824c95bc180 14-Jan-2010 Chris Lattner <sabre@nondot.org> prune #includes in TargetAsmParser.h
Pass in SMLoc of instr opcode into ParseInstruction.
Make AsmToken be a class, not a struct.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93457 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
f007e853e26845cd6866b52d646455fc69f4e0af 14-Jan-2010 Chris Lattner <sabre@nondot.org> prune #includes in TargetAsmParser.h
Pass in SMLoc of instr opcode into ParseInstruction.
Make AsmToken be a class, not a struct.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93457 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6fdd73946f6584c82bfa00168917d7f8c32f4c77 14-Jan-2010 Chris Lattner <sabre@nondot.org> introduce MCParsedAsmOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93455 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7659389d0d4d315d30877592221da6a6f663114a 14-Jan-2010 Chris Lattner <sabre@nondot.org> introduce MCParsedAsmOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93455 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
df0cdf4e5721593c1315edf47f3b96021767895a 14-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> ARM "l" constraint for inline asm means R0-R7, also for Thumb2.

This is consistent with llvm-gcc's arm/constraints.md.

Certain instructions (e.g. CBZ, CBNZ) require a low register, even in Thumb2
mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93436 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
09bf003983bb35190ce9932c4edc9a7635f379c0 14-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> ARM "l" constraint for inline asm means R0-R7, also for Thumb2.

This is consistent with llvm-gcc's arm/constraints.md.

Certain instructions (e.g. CBZ, CBNZ) require a low register, even in Thumb2
mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93436 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
99fc640242e391ba584711dc5f80780a90e8f5e4 14-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't fold insufficiently aligned ldr/str into ldm/stm instructions.

An unaligned ldr causes a trap, and is then emulated by the kernel with
awesome performance. The darwin kernel does not emulate unaligned ldm/stm
Thumb2 instructions, so don't generate them.

This fixes the miscompilation of Multisource/Applications/JM/lencod for Thumb2.

Generating unaligned ldr/str pairs from a 16-bit aligned memcpy is probably
also a bad idea, but that is beyond the scope of this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93393 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
069e100f9a79a63db177a521fd790f4d77d1209c 14-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't fold insufficiently aligned ldr/str into ldm/stm instructions.

An unaligned ldr causes a trap, and is then emulated by the kernel with
awesome performance. The darwin kernel does not emulate unaligned ldm/stm
Thumb2 instructions, so don't generate them.

This fixes the miscompilation of Multisource/Applications/JM/lencod for Thumb2.

Generating unaligned ldr/str pairs from a 16-bit aligned memcpy is probably
also a bad idea, but that is beyond the scope of this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93393 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
12dc2ed67ddc67d4c40a0bb5f7ec5b5abe886d6b 13-Jan-2010 Johnny Chen <johnny.chen@apple.com> Fixed a couple of places for Thumb MOV where encoding bits are underspecified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93349 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
12360917ef08364050ef134ed70c69136465eaba 13-Jan-2010 Johnny Chen <johnny.chen@apple.com> Fixed a couple of places for Thumb MOV where encoding bits are underspecified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93349 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c7ef3b239ed85144a2e3e0aa3fa50a8be5b1a9fa 13-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix pasto

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93342 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
15913c999e5fb03cd26de00a48dd3cf1780ffb43 13-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix pasto

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93342 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
52f39f00b758593f7c4c0b9f0f831b3e7fbd0d9e 13-Jan-2010 Chris Lattner <sabre@nondot.org> upgrade and MC'ize a few uses of makeNameProper.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93310 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
09533a404c7a80c1ca619c627bfc636b243ecd16 13-Jan-2010 Chris Lattner <sabre@nondot.org> upgrade and MC'ize a few uses of makeNameProper.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93310 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a38b287aec4e06a2aded8bc7809f0f949955ade5 13-Jan-2010 Chris Lattner <sabre@nondot.org> change Mangler::makeNameProper to return its result in a SmallVector
instead of returning it in an std::string. Based on this change:

1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef
2. Change a bunch of targets to call makeNameProper with a smallstring,
making several of them *much* more efficient.
3. Rewrite Mangler::makeNameProper to not build names and then prepend
prefixes, not use temporary std::strings, and to avoid other crimes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4813035b726e7f0a3fd17bec437185fc72a50988 13-Jan-2010 Chris Lattner <sabre@nondot.org> change Mangler::makeNameProper to return its result in a SmallVector
instead of returning it in an std::string. Based on this change:

1. Change TargetLoweringObjectFileCOFF::getCOFFSection to take a StringRef
2. Change a bunch of targets to call makeNameProper with a smallstring,
making several of them *much* more efficient.
3. Rewrite Mangler::makeNameProper to not build names and then prepend
prefixes, not use temporary std::strings, and to avoid other crimes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93298 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1b584eb1eca786cfbdf36dbdc6d35dde13f10185 13-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the JustSP single-register regclass.

It was only being used by instructions with the t_addrmode_sp addressing mode,
and that is pattern matched in a way that guarantees SP is used. There is
never any register allocation done from this class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93280 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
RMRegisterInfo.td
c5b7ef1519807c05ac30af982f49abd555f03177 13-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove the JustSP single-register regclass.

It was only being used by instructions with the t_addrmode_sp addressing mode,
and that is pattern matched in a way that guarantees SP is used. There is
never any register allocation done from this class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93280 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
RMRegisterInfo.td
c514d692bcfe7b3cf718fabc08de624f155813a8 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
RMInstrThumb2.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
RMInstrThumb2.td
5a1410489f9f35c3fd9d3c8425b522d41309985d 07-Jan-2010 Jim Grosbach <grosbach@apple.com> 80 column violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92876 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
9631864688c593711f82bb8d21f8b724c628d786 07-Jan-2010 Jim Grosbach <grosbach@apple.com> 80 column violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92876 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d13c6ce32c2de48b62b925999174028150222ce7 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add Target hook to duplicate machine instructions.

Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92873 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
30ac0467ced4627a9b84d8a1d3ca5e8706ddad63 07-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add Target hook to duplicate machine instructions.

Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92873 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
9b2e3114be9dc39a2d95cd4f50fb2591ba3fda47 07-Jan-2010 Jim Grosbach <grosbach@apple.com> Addressing mode 6 (load/store) instructions can't encode an immediate offset
for stack references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92871 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ce3e769c15be90463abf14bb71b5a8e1205d3661 07-Jan-2010 Jim Grosbach <grosbach@apple.com> Addressing mode 6 (load/store) instructions can't encode an immediate offset
for stack references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92871 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a9aeaea8a97c346c50f6069ecba1a31c84017831 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
RMInstrThumb2.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
RMInstrThumb2.td
71c64a11a03ed4e78ac67b4a01c79f09e6bdcbe9 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
RMInstrThumb2.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
RMInstrThumb2.td
5f082a7df38fa6d7b53c0d7baeca8d74f097d659 05-Jan-2010 Dan Gohman <gohman@apple.com> Change SelectCode's argument from SDValue to SDNode *, to make it more
clear what information these functions are actually using.

This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92564 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
eeb3a00b84b7767d236ec8cf0619b9217fc247b9 05-Jan-2010 Dan Gohman <gohman@apple.com> Change SelectCode's argument from SDValue to SDNode *, to make it more
clear what information these functions are actually using.

This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92564 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
572d6dca91884892cde12d9cde0c79261f52131f 28-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Add missing include (for inline PATypeHolder::get).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e55b15fa4753ef08cbfa2127d2d220b77aa07d87 28-Dec-2009 Benjamin Kramer <benny.kra@googlemail.com> Add missing include (for inline PATypeHolder::get).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92222 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
f504c9b27cd0b72be034e59419e711dcf3c24383 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92193 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
9bf50f45e7f1ea82b391673b8e0903b5c4e2460c 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92193 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
2a377215b3f9fda270997eb1643d5c8c2e0ed45b 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Add an "ATTRIBUTE_UNUSED" macro (and use it). It's for variables which are
mainly used in debugging and/or assert situations. It should make the compiler
and the static analyzer stop nagging us about them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92181 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
079b6f5ee5c3516b773a3ad71874c14e8ea7479c 28-Dec-2009 Bill Wendling <isanbard@gmail.com> Add an "ATTRIBUTE_UNUSED" macro (and use it). It's for variables which are
mainly used in debugging and/or assert situations. It should make the compiler
and the static analyzer stop nagging us about them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92181 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a39e3180c2b9c8debfbdc77d1726f9f23b70ec90 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move kill flags when the same register occurs more than once in a sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92058 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
1dbc38f52e2d6436ba79048013e42d96187993d8 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move kill flags when the same register occurs more than once in a sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92058 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
1342a3e9465505305d72800dcb2479d35ccfe3b5 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle undef operands properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92054 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
158a2263bd221a6920c6c7f7f96d6272344efb8f 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle undef operands properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92054 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
cad17d74d47071cbcc4c8e0797b08a0abb7e1c83 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Make insert position available to MergeOpsUpdate.
Rearrange arguments.
No functional changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92053 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
6528966eaeaf38244ce165ef7c80326aa34a55ca 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Make insert position available to MergeOpsUpdate.
Rearrange arguments.
No functional changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92053 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
22f06b0197c781a49b3d76550cdf09070b7c2f07 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Perform kill flag calculations in new method. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92052 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3063aed8d29cf2418fc1c3022a3dd9c8de0e4922 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Perform kill flag calculations in new method. No functional changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92052 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
16d776db31bc211a9f97844bb0f6c32ec21d9d9c 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move repeated code to a new method. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92051 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
f8e33e513f2620ea30fda7f17bc227729b7621b8 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move repeated code to a new method. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92051 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
7db0c5186ca4472324f3a7723c0879814fead47d 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a SPR register class to the ARM target.

Certain Thumb instructions require only SP (e.g. tSTRspi).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91944 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
RMRegisterInfo.td
24b34f8f3e301cce56be80dfa9a28a3dc8e0270a 23-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a SPR register class to the ARM target.

Certain Thumb instructions require only SP (e.g. tSTRspi).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91944 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
RMRegisterInfo.td
f0039ba077d1a149bab0a3099556adeb802657f8 22-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use proper move instructions. Make the verifier happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91914 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
e9912dc553bf7e37494eb9b07e8ff880f0481a56 22-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Use proper move instructions. Make the verifier happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91914 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
aa18176a76f0e31db7af3973c7ca6072f1c15318 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add more plumbing. This time in the LowerArguments and "get" functions which
return partial registers. This affected the back-end lowering code some.

Also patch up some places I missed before in the "get" functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91880 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3ea3c2461932d96d3defa0a9aa93ffaf631bb19d 22-Dec-2009 Bill Wendling <isanbard@gmail.com> Add more plumbing. This time in the LowerArguments and "get" functions which
return partial registers. This affected the back-end lowering code some.

Also patch up some places I missed before in the "get" functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91880 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9ea182b5db526734a15b5fcdca13cb8dd77e78e2 21-Dec-2009 Evan Cheng <evan.cheng@apple.com> Delete the instruction just before the function terminates for consistency sake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91836 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
102ebf16b6eb46e3021b9e8db8a1bc163bc64639 21-Dec-2009 Evan Cheng <evan.cheng@apple.com> Delete the instruction just before the function terminates for consistency sake.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91836 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8cb4138c0eca1101911d01679a35a9013a73fd78 19-Dec-2009 Douglas Gregor <doug.gregor@gmail.com> Fix a bunch of little errors that Clang complains about when its being pedantic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91764 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
cabdd7425d30f7eb659ecb0cc5efbc4052dd78a8 19-Dec-2009 Douglas Gregor <dgregor@apple.com> Fix a bunch of little errors that Clang complains about when its being pedantic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91764 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
6d10effe861d12574c3285e8e31f704107aba3ba 18-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Fix libstdc++ build on ARM linux and part of PR5770.

MI was not being used but it was also not being deleted, so it was kept in the garbage list. The memory itself was freed once the function code gen was done.

Once in a while the codegen of another function would create an instruction on the same address. Adding it to the garbage group would work once, but when another pointer was added it would cause an assert as "Cache" was about to be pushed to Ts.

For a patch that make us detect problems like this earlier, take a look at

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091214/092758.html

With that patch we assert as soon and the new instruction is added to the garbage set.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fda60d35c247c239857ebaae8650b06f1154e68e 18-Dec-2009 Rafael Espindola <rafael.espindola@gmail.com> Fix libstdc++ build on ARM linux and part of PR5770.

MI was not being used but it was also not being deleted, so it was kept in the garbage list. The memory itself was freed once the function code gen was done.

Once in a while the codegen of another function would create an instruction on the same address. Adding it to the garbage group would work once, but when another pointer was added it would cause an assert as "Cache" was about to be pushed to Ts.

For a patch that make us detect problems like this earlier, take a look at

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091214/092758.html

With that patch we assert as soon and the new instruction is added to the garbage set.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4a463881df0d3cb915f252f12958eeda9256445d 18-Dec-2009 Bob Wilson <bob.wilson@apple.com> Handle ARM inline asm "w" constraints with 64-bit ("d") registers.
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91649 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5afffaed5c0095930020947322633f0d0b02ffed 18-Dec-2009 Bob Wilson <bob.wilson@apple.com> Handle ARM inline asm "w" constraints with 64-bit ("d") registers.
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91649 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8ae68e420a7fd0e4bc77674860a3d2fb619a3b15 17-Dec-2009 Johnny Chen <johnny.chen@apple.com> Renamed "tCMNZ" to "tCMNz" to be consistent with other similar namings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
caedfbc6ae4cf039721fcfdb6fb16b4e78002500 17-Dec-2009 Johnny Chen <johnny.chen@apple.com> Renamed "tCMNZ" to "tCMNz" to be consistent with other similar namings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0be22d12589480b482126c2d8eb816a9590d54d8 16-Dec-2009 John McCall <rjmccall@apple.com> Silence a clang warning about the deprecated (but perfectly reasonable in
context) increment-of-bool idiom.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91564 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
6eeccd4aa4f332bc60ae120ea5753a4020b75a61 16-Dec-2009 John McCall <rjmccall@apple.com> Silence a clang warning about the deprecated (but perfectly reasonable in
context) increment-of-bool idiom.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91564 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
724d7a167ac9c576db2e9217adfbee9ac8cd7b24 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
aa640d3fc7563e889ef2ef93994b4c6ff38933f1 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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
b6bf5b926d84470a0527691b20f60c31f6bf7978 16-Dec-2009 John McCall <rjmccall@apple.com> Every anonymous namespace is different. Caught by clang++.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91481 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
bd13cb911cb40ac6a82db12deaef775a9d19ff4b 16-Dec-2009 John McCall <rjmccall@apple.com> Every anonymous namespace is different. Caught by clang++.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91481 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
43a22289bdf5f2e1d884de469b9ab5b849c077b7 15-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Change indirect-globals to use a dedicated allocIndirectGV. This lets us
remove start/finishGVStub and the BufferState helper class from the
MachineCodeEmitter interface. It has the side-effect of not setting the
indirect global writable and then executable on ARM, but that shouldn't be
necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91464 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
32d7e6ebde29faeea75ecb718b4281414b0eea0b 15-Dec-2009 Jeffrey Yasskin <jyasskin@google.com> Change indirect-globals to use a dedicated allocIndirectGV. This lets us
remove start/finishGVStub and the BufferState helper class from the
MachineCodeEmitter interface. It has the side-effect of not setting the
indirect global writable and then executable on ARM, but that shouldn't be
necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91464 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
0d810c281064e69c6a0cab4f9f43870628628566 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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
e6e14f2cfc4e8bd346bf3fa7a5ac87b6ebf422ff 15-Dec-2009 Jim Grosbach <grosbach@apple.com> nand atomic requires opposite operand ordering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91371 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c67b556b5b9c45f393e62fa7ffd4c70b932af2be 15-Dec-2009 Jim Grosbach <grosbach@apple.com> nand atomic requires opposite operand ordering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91371 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6fdbe657ebacf9e1bdb1e2cebfe82a9549d86d3e 14-Dec-2009 Johnny Chen <johnny.chen@apple.com> Add encoding bits "let Inst{11-4} = 0b00000000;" to BR_JTr to disambiguate
between BR_JTr and STREXD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91339 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ec689151f29d328e9edcea2740c3a1d978aab6a6 14-Dec-2009 Johnny Chen <johnny.chen@apple.com> Add encoding bits "let Inst{11-4} = 0b00000000;" to BR_JTr to disambiguate
between BR_JTr and STREXD.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91339 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ba16e07fc539e23bb604defb021187e64c04702a 14-Dec-2009 Jim Grosbach <grosbach@apple.com> v6 sync insn copy/paste error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91333 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
80dd125e173e059783afef782df2ab895c643da5 14-Dec-2009 Jim Grosbach <grosbach@apple.com> v6 sync insn copy/paste error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91333 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6eee903ab286e1a0093c5091bb30fc35e00cd86b 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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
8ac1d378d72ad45806ab86d316bd50ca5e7f861c 14-Dec-2009 Johnny Chen <johnny.chen@apple.com> Fixed encoding bits typo of ldrexd/strexd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91327 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c474796438beebe6928ff154b5fa53cb98107867 14-Dec-2009 Johnny Chen <johnny.chen@apple.com> Fixed encoding bits typo of ldrexd/strexd.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91327 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5b595cd6311d7b9670268b69096b55dd1a384d35 14-Dec-2009 Jim Grosbach <grosbach@apple.com> Thumb2 atomic operations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91321 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a36c8f2c2e6a20080e6784a73e30fc2c8c67c584 14-Dec-2009 Jim Grosbach <grosbach@apple.com> Thumb2 atomic operations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91321 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2d6e24935ebc8902bd9b22f73ba02fa31d60f8bb 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
efbc1f057fd24bd540ab94dfcac298d6762aa3bd 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
RMInstrThumb2.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
RMInstrThumb2.td
31b2740914c8fec8580a8dc1000e3b5295309dfb 14-Dec-2009 Jim Grosbach <grosbach@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91307 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
015d3b570412588241599bee0ef3400354666785 14-Dec-2009 Jim Grosbach <grosbach@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91307 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
63437d96828f86ca3833c58964c4a5d4b142aa07 14-Dec-2009 Jim Grosbach <grosbach@apple.com> ARM memory barrier instructions are not predicable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91305 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
f6b2862e813cd75e337238bb3321d3a512b54f06 14-Dec-2009 Jim Grosbach <grosbach@apple.com> ARM memory barrier instructions are not predicable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91305 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
c83030d61279ac68b9532896fea512ae408387de 14-Dec-2009 Jim Grosbach <grosbach@apple.com> add ldrexd/strexd instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91284 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d7d72d66b799aaab1c48a67a0cbb5c9a70794cec 14-Dec-2009 Jim Grosbach <grosbach@apple.com> add ldrexd/strexd instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91284 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c7e4ddcbcad547e5513dfd7eefe8c1ae97e84485 14-Dec-2009 Jim Grosbach <grosbach@apple.com> atomic binary operations up to 32-bits wide.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91260 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c3c2354ec9b56c3097752537020150da8694dd62 14-Dec-2009 Jim Grosbach <grosbach@apple.com> atomic binary operations up to 32-bits wide.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91260 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
241896971376c9bf4b5856c44c65084c8bf6e3cb 12-Dec-2009 Jim Grosbach <grosbach@apple.com> Framework for atomic binary operations. The emitter for the pseudo instructions
just issues an error for the moment. The front end won't yet generate these
intrinsics for ARM, so this is behind the scenes until complete.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91200 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
e801dc4a7b89f68f40ff2753de988c482d4d117f 12-Dec-2009 Jim Grosbach <grosbach@apple.com> Framework for atomic binary operations. The emitter for the pseudo instructions
just issues an error for the moment. The front end won't yet generate these
intrinsics for ARM, so this is behind the scenes until complete.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91200 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
c6095894e7cd3c7144575ba6e2596bb5a3d3adc0 11-Dec-2009 Jim Grosbach <grosbach@apple.com> memory barrier instructions by definition have side effects. This prevents the post-RA scheduler from moving them around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91150 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c8f9e4fdc584c6bf48dc0f42083d05b707024b20 11-Dec-2009 Jim Grosbach <grosbach@apple.com> memory barrier instructions by definition have side effects. This prevents the post-RA scheduler from moving them around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91150 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7e6324988a184400c4a79d684746f91c3c5bfad3 11-Dec-2009 Johnny Chen <johnny.chen@apple.com> Store Register Exclusive should leave the source register Inst{3-0} unspecified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91143 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
0291d7ed0942b218c58ddd900a8f6b3dd80ad023 11-Dec-2009 Johnny Chen <johnny.chen@apple.com> Store Register Exclusive should leave the source register Inst{3-0} unspecified.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91143 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
7853967b2bec37e6093fa595cc42aabbad964059 11-Dec-2009 Jim Grosbach <grosbach@apple.com> Update properties.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91140 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
66869104dd67a5d01347c29f7499c4836c59fd0a 11-Dec-2009 Jim Grosbach <grosbach@apple.com> Update properties.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91140 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
437d699dc2b7e690254435cb93d7bbd21bb88217 11-Dec-2009 Jim Grosbach <grosbach@apple.com> Rough first pass at compare_and_swap atomic builtins for ARM mode. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91090 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
5278eb802fae2ee1a7b2a428596bc364d8bcd9db 11-Dec-2009 Jim Grosbach <grosbach@apple.com> Rough first pass at compare_and_swap atomic builtins for ARM mode. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91090 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.td
37582c3385a5259c279f4da155b7659f4272ff71 10-Dec-2009 Jim Grosbach <grosbach@apple.com> Add instruction encoding for DMB/DSB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91053 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cbd77d2cb1812ad142412fa0a16d835fa468efe4 10-Dec-2009 Jim Grosbach <grosbach@apple.com> Add instruction encoding for DMB/DSB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91053 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ba744f662e83517b2b940145a24d6cbb453f52f9 10-Dec-2009 Jim Grosbach <grosbach@apple.com> Add memory barrier intrinsic support for ARM. Moving towards adding the atomic operations intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91003 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
3728e96a6c0f68f4f5b656c2372e9cbbe6e74d86 10-Dec-2009 Jim Grosbach <grosbach@apple.com> Add memory barrier intrinsic support for ARM. Moving towards adding the atomic operations intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91003 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
9e5c8a8cdfc3a0267b026851bf08a9507474578e 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> - Support inline asm 'w' constraint for 128-bit vector types.
- Also support the 'q' NEON registers asm code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90894 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
d831cda3e74235704f163d5a18352584d537517a 09-Dec-2009 Evan Cheng <evan.cheng@apple.com> - Support inline asm 'w' constraint for 128-bit vector types.
- Also support the 'q' NEON registers asm code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90894 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
f7374f702cd95402ff597457c8b3772cf3770ecf 06-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Dynamic stack realignment use of sp register as source/dest register
in "bic sp, sp, #15" leads to unpredicatble behaviour in Thumb2 mode.
Emit the following code instead:
mov r4, sp
bic r4, r4, #15
mov sp, r4

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90724 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
7cca606aaa6fee6ff4f548aa3686608b6be1f208 06-Dec-2009 Anton Korobeynikov <asl@math.spbu.ru> Dynamic stack realignment use of sp register as source/dest register
in "bic sp, sp, #15" leads to unpredicatble behaviour in Thumb2 mode.
Emit the following code instead:
mov r4, sp
bic r4, r4, #15
mov sp, r4

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90724 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
01696988ff3c98744cce105372803d4ed903f988 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove the target hook TargetInstrInfo::BlockHasNoFallThrough in favor of
MachineBasicBlock::canFallThrough(), which is target-independent and more
thorough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90634 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
864e2efce2cb5d02e376933933d96074723fe77c 05-Dec-2009 Dan Gohman <gohman@apple.com> Remove the target hook TargetInstrInfo::BlockHasNoFallThrough in favor of
MachineBasicBlock::canFallThrough(), which is target-independent and more
thorough.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90634 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
d003075f1b3921f20ac9da8e0310afa4cd9b2f04 03-Dec-2009 Jim Grosbach <grosbach@apple.com> remove out of date FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90490 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
4dc4a61c0c47611fef23e06145ece9f63b2a8dc6 03-Dec-2009 Jim Grosbach <grosbach@apple.com> remove out of date FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90490 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
12fac174a70da350938ffa425d60e5f314ca5a8d 03-Dec-2009 Chris Lattner <sabre@nondot.org> fix a build problem with VC++, PR5664, patch by Alp Toker!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90419 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
56856b1f46ec1f073ceef4e826c544b8b1691608 03-Dec-2009 Chris Lattner <sabre@nondot.org> fix a build problem with VC++, PR5664, patch by Alp Toker!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90419 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
171422980d99d7689b2cac01504b981e87b61905 03-Dec-2009 Bob Wilson <bob.wilson@apple.com> Recognize canonical forms of vector shuffles where the same vector is used for
both source operands. In the canonical form, the 2nd operand is changed to an
undef and the shuffle mask is adjusted to only reference elements from the 1st
operand. Radar 7434842.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90417 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
324f4f163350487243d3a93b2a79f5eb2edc3b03 03-Dec-2009 Bob Wilson <bob.wilson@apple.com> Recognize canonical forms of vector shuffles where the same vector is used for
both source operands. In the canonical form, the 2nd operand is changed to an
undef and the shuffle mask is adjusted to only reference elements from the 1st
operand. Radar 7434842.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90417 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b44b429549bc4c4f950d56d4f6fa0ba486856cc6 03-Dec-2009 Chris Lattner <sabre@nondot.org> improve portability to avoid conflicting with std::next in c++'0x.
Patch by Howard Hinnant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90365 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
7896c9f436a4eda5ec15e882a7505ba482a2fcd0 03-Dec-2009 Chris Lattner <sabre@nondot.org> improve portability to avoid conflicting with std::next in c++'0x.
Patch by Howard Hinnant!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90365 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMExpandPseudoInsts.cpp
RMLoadStoreOptimizer.cpp
EONMoveFix.cpp
EONPreAllocPass.cpp
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
4d20ee6d9a35d9498ad170c55ba714b346237a55 02-Dec-2009 Jim Grosbach <grosbach@apple.com> Factor the stack alignment calculations out into a target independent pass.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90336 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseRegisterInfo.cpp
RMTargetMachine.cpp
e27d205d5d4d53cceabcd6325533fbdf9c0cee42 02-Dec-2009 Jim Grosbach <grosbach@apple.com> Factor the stack alignment calculations out into a target independent pass.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90336 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseRegisterInfo.cpp
RMTargetMachine.cpp
a0fb7c4e1ae9b7c87037bc6a72adce439d23484c 01-Dec-2009 Jim Grosbach <grosbach@apple.com> Thumb1 exception handling setjmp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90246 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrFormats.td
RMInstrThumb.td
d122874996a6faa8832569b632fd73a32ace7ae7 01-Dec-2009 Jim Grosbach <grosbach@apple.com> Thumb1 exception handling setjmp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90246 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrFormats.td
RMInstrThumb.td
6e1b1ad3abeb24f6da12afe63ac7a1074c1e3dbf 01-Dec-2009 Johnny Chen <johnny.chen@apple.com> For VLDM/VSTM (Advanced SIMD), set encoding bits Inst{11-8} to 0b1011.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90243 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b731e876498dd07308e35a03329cbf0801c0b882 01-Dec-2009 Johnny Chen <johnny.chen@apple.com> For VLDM/VSTM (Advanced SIMD), set encoding bits Inst{11-8} to 0b1011.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90243 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
cf4fad276042adc440ff0d119b9fb67a94814ccf 01-Dec-2009 Johnny Chen <johnny.chen@apple.com> For VMOV (immediate), make some of the encoding bits (cmode and op) unspecified.
For VMOVv*i[16,32], op bit is don't care, and some cmode bits vary depending on
the immediate values.

Ref: Table A7-15 Modified immediate values for Advanced SIMD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90173 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
208d76cad96da282a9d9c6631dd34b3d50742262 01-Dec-2009 Johnny Chen <johnny.chen@apple.com> For VMOV (immediate), make some of the encoding bits (cmode and op) unspecified.
For VMOVv*i[16,32], op bit is don't care, and some cmode bits vary depending on
the immediate values.

Ref: Table A7-15 Modified immediate values for Advanced SIMD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90173 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
90868102bf6144cae08570ddcb96099d9d63c06d 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Remove isProfitableToDuplicateIndirectBranch target hook. It is profitable
for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low. The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90144 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMSubtarget.cpp
RMSubtarget.h
15217e63bce6c161b355b63d6496c7c327d15817 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Remove isProfitableToDuplicateIndirectBranch target hook. It is profitable
for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low. The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90144 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMSubtarget.cpp
RMSubtarget.h
3bff42e81121019af3ba61a13f087bba6ed37c54 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix some more ARM unified syntax warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90141 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
afa1df467b04182c959e6c3031df5377a0062153 30-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix some more ARM unified syntax warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90141 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
68722a84a011e2e2a8be3b3c6a09a2bbb477d390 25-Nov-2009 Bob Wilson <bob.wilson@apple.com> Refactor target hook for tail duplication as requested by Chris.
Make tail duplication of indirect branches much more aggressive (for targets
that indicate that it is profitable), based on further experience with
this transformation. I compiled 3 large applications with and without
this more aggressive tail duplication and measured minimal changes in code
size. ("size" on Darwin seems to round the text size up to the nearest
page boundary, so I can only say that any code size increase was less than
one 4k page.) Radar 7421267.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89814 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
f8c4cfb7cc330234112e1378dac6424d9956add0 25-Nov-2009 Bob Wilson <bob.wilson@apple.com> Refactor target hook for tail duplication as requested by Chris.
Make tail duplication of indirect branches much more aggressive (for targets
that indicate that it is profitable), based on further experience with
this transformation. I compiled 3 large applications with and without
this more aggressive tail duplication and measured minimal changes in code
size. ("size" on Darwin seems to round the text size up to the nearest
page boundary, so I can only say that any code size increase was less than
one 4k page.) Radar 7421267.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89814 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
6b2b23a3569d8cefb165601454cc1dede80d30d6 24-Nov-2009 Evan Cheng <evan.cheng@apple.com> Enable predication of NEON instructions in Thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89748 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
d7f0810c934a7d13acb28c42d737ce58ec990ea8 24-Nov-2009 Evan Cheng <evan.cheng@apple.com> Enable predication of NEON instructions in Thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89748 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
9f433ab362f406dc8336ae2445bcfebbd133a8a1 24-Nov-2009 Evan Cheng <evan.cheng@apple.com> Data type suffix must come after predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89723 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
9d172d5ee779124a721a01f7db1ab3a41593e7b5 24-Nov-2009 Evan Cheng <evan.cheng@apple.com> Data type suffix must come after predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89723 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
a414f36ad4dca3554e1313a4715b3856ac4066b9 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
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
humb2SizeReduction.cpp
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
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
humb2SizeReduction.cpp
71465ac298b594109d9f6e9c8b4fc97051840a8b 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
RMInstrThumb2.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
RMInstrThumb2.td
f8f9acf65f39634e24604568f1cab3cca14ff18b 24-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> * Move stub allocation inside the JITEmitter, instead of exposing a
way for each TargetJITInfo subclass to allocate its own stubs. This
means stubs aren't as exactly-sized anymore, but it lets us get rid of
TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC
support the eager JIT, fixing http://llvm.org/PR4816.

* Rename the JITEmitter's stub creation functions to describe the kind
of stub they create. So far, all of them create lazy-compilation
stubs, but they sometimes get used when far-call stubs are needed.
Fixing http://llvm.org/PR5201 will involve fixing this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89715 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
RMJITInfo.h
108c838093704650378b194fe9afc5ebb9e91455 24-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> * Move stub allocation inside the JITEmitter, instead of exposing a
way for each TargetJITInfo subclass to allocate its own stubs. This
means stubs aren't as exactly-sized anymore, but it lets us get rid of
TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC
support the eager JIT, fixing http://llvm.org/PR4816.

* Rename the JITEmitter's stub creation functions to describe the kind
of stub they create. So far, all of them create lazy-compilation
stubs, but they sometimes get used when far-call stubs are needed.
Fixing http://llvm.org/PR5201 will involve fixing this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89715 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
RMJITInfo.h
c61b56c8b54d3abdf197464c00ea9b3613aa5889 24-Nov-2009 Dan Gohman <gohman@apple.com> Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used.
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89711 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMISelLowering.cpp
RMInstrInfo.td
735afe14eea8049bf69210ce8a3512e391fc643f 24-Nov-2009 Dan Gohman <gohman@apple.com> Remove ISD::DEBUG_LOC and ISD::DBG_LABEL, which are no longer used.
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89711 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMISelLowering.cpp
RMInstrInfo.td
89acd2fc3e3c28cedeb8f5b5d5d378425b6d2f49 23-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Allow more than one stub to be being generated at the same time.

It's probably better in the long run to replace the
indirect-GlobalVariable system. That'll be done after a subsequent
patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89708 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
0261d795f83a45dd53d82e511ae672d6d1f4e298 23-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Allow more than one stub to be being generated at the same time.

It's probably better in the long run to replace the
indirect-GlobalVariable system. That'll be done after a subsequent
patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89708 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
09c61b35e2c8a6cf9bcdf42f8d07a8ac26238eac 23-Nov-2009 Evan Cheng <evan.cheng@apple.com> Massive refactoring of NEON instructions. Separate opcode from data size specifier suffix, move \t up stream to instruction format, and fix more 80 column violations.
This fixes the NEON asm printing so the "predicate" field is printed between the opcode and the data type suffix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89706 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
f81bf15552d3df7dd341e3970a002b9e35ea4992 23-Nov-2009 Evan Cheng <evan.cheng@apple.com> Massive refactoring of NEON instructions. Separate opcode from data size specifier suffix, move \t up stream to instruction format, and fix more 80 column violations.
This fixes the NEON asm printing so the "predicate" field is printed between the opcode and the data type suffix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89706 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
8d450b25083d0f488b2e797e79eb92172eb2c48d 23-Nov-2009 Jim Grosbach <grosbach@apple.com> move fconst[sd] to UAL. <rdar://7414913>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89700 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smPrinter/ARMAsmPrinter.cpp
77b02beb1fa3a96efc05081889d1ae4ffecb44a7 23-Nov-2009 Jim Grosbach <grosbach@apple.com> move fconst[sd] to UAL. <rdar://7414913>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89700 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
smPrinter/ARMAsmPrinter.cpp
9ee642f0b2272dab1086aa3421d1958e63a066f6 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Partially revert r84730 by removing N2VDup from ARMInstrFormats.td and modifying
VDUPLND and VDUPLNQ to derive from N2V instead of N2VDup. VDUPLND and VDUPLNQ
now expect op19_18 and op17_16 as the first two args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89699 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
da1aea4d7551d05cfb28a565b9750b7965cd620a 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Partially revert r84730 by removing N2VDup from ARMInstrFormats.td and modifying
VDUPLND and VDUPLNQ to derive from N2V instead of N2VDup. VDUPLND and VDUPLNQ
now expect op19_18 and op17_16 as the first two args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89699 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
66e70cdbb4097df5f9f9341663441fc431015307 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
6c6fa9a41918f91b9ea6765cfc0eb566e68b2de0 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Revert r84572 by removing N3VImm from ARMInstrFormats.td now that we can specify
{?,?,?,?} as op11_8 for VEXTd and VEXTq.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89693 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
b16ed11cb4ca0a55647335847bd69a3810290be9 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Revert r84572 by removing N3VImm from ARMInstrFormats.td now that we can specify
{?,?,?,?} as op11_8 for VEXTd and VEXTq.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89693 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
46f784e7a92f51878af9c6c0cdb8312b2d188303 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Partially revert r89377 by removing NLdStLN class definition from
ARMInstrFormats.td and fixing VLD[234]LN* and VST[234]LN* to derive from NLdSt
instead of NLdStLN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89684 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
7ebd32a1b87553d98215ae159489c1407e50e34c 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Partially revert r89377 by removing NLdStLN class definition from
ARMInstrFormats.td and fixing VLD[234]LN* and VST[234]LN* to derive from NLdSt
instead of NLdStLN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89684 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
0c1d2c1183243d983ee60d2fa0e30c1aef4981f4 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Make it clear that the index bit(s) of Vector Get Lane and Vector Set Lane
should be left unspecified now that Bob Wilson has fixed pr5470.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89676 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
131c4a525791c8178d693917bcf3a248028dfeff 23-Nov-2009 Johnny Chen <johnny.chen@apple.com> Make it clear that the index bit(s) of Vector Get Lane and Vector Set Lane
should be left unspecified now that Bob Wilson has fixed pr5470.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89676 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
dfaea1cb45cae9e1ca8dd6b3398ab39dbab074d3 23-Nov-2009 David Goodwin <david_goodwin@apple.com> Minor itinerary fixes for FP instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89672 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
7776452a181202397fc1d70fab059f0faaafe0c7 23-Nov-2009 David Goodwin <david_goodwin@apple.com> Minor itinerary fixes for FP instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89672 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV7.td
afc3436c0a1089f70f879e539a464a6ac281ba21 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Move default FrameReg val to getFrameIndexReference(). Otherwise, debug info can get bogus values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89618 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a37aa546224ec03ba1f1a1598e0781af4b692673 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Move default FrameReg val to getFrameIndexReference(). Otherwise, debug info can get bogus values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89618 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
5902f6d18693f3a787615a98e7d3e36b8888ce62 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Generate more correct debug info for frame indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89576 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
50f8516d2dd87e6c02a46fa349b75101f9db8619 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Generate more correct debug info for frame indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89576 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
eee8617c0f283222d9f2f0d9b24c9ff0b2eb7d9e 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Revert 89562. We're being sneakier than I was giving us credit for, and this
isn't necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89568 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
21ce2e3c74d3b64a9dafde190d18dbf3aa003112 22-Nov-2009 Jim Grosbach <grosbach@apple.com> Revert 89562. We're being sneakier than I was giving us credit for, and this
isn't necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89568 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
3af6d702411a66e6d02ebfc566083fb78336d5e3 21-Nov-2009 Jim Grosbach <grosbach@apple.com> Darwin requires a frame pointer for all non-leaf functions to support correct
backtraces.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89562 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
f3b33d0b2a50777ddb467e8adefbb018b16570d2 21-Nov-2009 Jim Grosbach <grosbach@apple.com> Darwin requires a frame pointer for all non-leaf functions to support correct
backtraces.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89562 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
67abceccf77faa1bbaab2e22c4d7e173927ee12e 21-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add predicate operand to NEON instructions. Fix lots (but not all) 80 col violations in ARMInstrNEON.td.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89542 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
EONMoveFix.cpp
ac0869dc8a7986855c5557cc67d4709600158ef5 21-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add predicate operand to NEON instructions. Fix lots (but not all) 80 col violations in ARMInstrNEON.td.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89542 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrNEON.td
EONMoveFix.cpp
1432b62b04c33ad89f4249ef73f2e73740db18c7 21-Nov-2009 Devang Patel <dpatel@apple.com> We are not using DBG_STOPPOINT anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89536 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bef8888a9197655512f156e50b10799da7240252 21-Nov-2009 Devang Patel <dpatel@apple.com> We are not using DBG_STOPPOINT anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89536 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2f6bfd4a20638089c8d00a40c2f4cd9e8b63e691 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
b3de86391c62a6519caa0d6ea12197326efbb793 20-Nov-2009 Jim Grosbach <grosbach@apple.com> The verify() call of CPEIsInRange() isn't right for the assertion check of
constant pool ranges, as CPEIsInRange() makes conservative assumptions about
the potential alignment changes from branch adjustments. The verification,
on the other hand, runs after those branch adjustments are made, so the
effects on alignment are known and already taken into account. The sanity
check in verify should check the range directly instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89473 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a9562568e5c2a897e3a51b18700eeb70f0dda48c 20-Nov-2009 Jim Grosbach <grosbach@apple.com> The verify() call of CPEIsInRange() isn't right for the assertion check of
constant pool ranges, as CPEIsInRange() makes conservative assumptions about
the potential alignment changes from branch adjustments. The verification,
on the other hand, runs after those branch adjustments are made, so the
effects on alignment are known and already taken into account. The sanity
check in verify should check the range directly instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89473 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
871fc2c9d35287f0feaeb077f4ce892da9436d06 20-Nov-2009 Jim Grosbach <grosbach@apple.com> Remove verifySizes() since it's not adding much value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89443 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
de8b1dbf95811fa2fc38bd677453f75811eb1029 20-Nov-2009 Jim Grosbach <grosbach@apple.com> Remove verifySizes() since it's not adding much value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89443 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ef4c5b2c4971e741cd583f5c351e8328e72e93fa 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Also CSE non-pic load from constant pools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89440 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
9b82425cb0105fd5704f6b9bcd5e7693b05b1759 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Also CSE non-pic load from constant pools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89440 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
69aaa0084163fa280cdae34786d3dd67695753c9 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix codegen of conditional move of immediates. We were not making use of the immediate forms of cmov instructions at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89423 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9ef4835bd879e1baa5f59619b958cae57d516481 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix codegen of conditional move of immediates. We were not making use of the immediate forms of cmov instructions at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89423 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
0fbd6ad19b836a8138007e82176581755e206c7f 20-Nov-2009 Eric Christopher <echristo@apple.com> Update comment to reflect instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89414 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
0dde97156ce75d14498185e34c5d20c66a0c38d1 20-Nov-2009 Eric Christopher <echristo@apple.com> Update comment to reflect instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89414 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
ca890b1973ef53d6c7ece027c037f6de1260cb4b 20-Nov-2009 Jim Grosbach <grosbach@apple.com> When placing constant islands and adjusting for alignment padding, inline
assembly can confuse things utterly, as it's assumed that instructions in
inline assembly are 4 bytes wide. For Thumb mode, that's often not true,
so the calculations for when alignment padding will be present get thrown off,
ultimately leading to out of range constant pool entry references. Making
more conservative assumptions that padding may be necessary when inline asm
is present avoids this situation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89403 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
4d8e90a026a29a812616690bd77b72e0b5ae6c75 20-Nov-2009 Jim Grosbach <grosbach@apple.com> When placing constant islands and adjusting for alignment padding, inline
assembly can confuse things utterly, as it's assumed that instructions in
inline assembly are 4 bytes wide. For Thumb mode, that's often not true,
so the calculations for when alignment padding will be present get thrown off,
ultimately leading to out of range constant pool entry references. Making
more conservative assumptions that padding may be necessary when inline asm
is present avoids this situation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89403 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
3327e8265b77a0ddf6d59dfb891cd311c571ac91 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> Refactor cmov selection code out to a separate function. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89396 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
07ba906413ed0e8e196a6795665f349ba8fdca4c 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> Refactor cmov selection code out to a separate function. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89396 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9a5dc8bb0dbc4fab3b9594c9a94edcb82e5f6eac 19-Nov-2009 Johnny Chen <johnny.chen@apple.com> Added NLdStLN which is similar to NLdSt with the exception that op7_4 is not
fully specified at this level. Subclasses of NLdStLN can specify selective
bit(s) for Inst{7-4}, as is done for VLD[234]LN* and VST[234]LN* inside
ARMInstrNEON.td.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89377 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
5c376ff9f08513686293b26c86b2c116b976d6b9 19-Nov-2009 Johnny Chen <johnny.chen@apple.com> Added NLdStLN which is similar to NLdSt with the exception that op7_4 is not
fully specified at this level. Subclasses of NLdStLN can specify selective
bit(s) for Inst{7-4}, as is done for VLD[234]LN* and VST[234]LN* inside
ARMInstrNEON.td.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89377 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
49f755b9ed789fa5088c1340e5c9d7b026c89263 19-Nov-2009 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89369 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
dec6de92d1425c88f319179fb4a0b0a23f781df9 19-Nov-2009 Jim Grosbach <grosbach@apple.com> fix typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89369 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
cc7bfb11acd970d4cd4da36ae281065b22be5123 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89337 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
ed54de40a712ab6471a6c369e30d827017a67757 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89337 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
91fd9e4f6f0cd25369fafa3a81312fba451519cc 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> More consistent thumb1 asm printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89328 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
2ef9c8a43d1030bf65cafedf4b4b3f04d30180ce 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> More consistent thumb1 asm printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89328 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
8ec49859a25324df48adf6b899d26b679e7a6ab2 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> Shrink ldr / str [sp, imm0-1024] to 16-bit instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89326 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
5b397c93a50a44e3bfc58bd8fd95357c0cba3f1e 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> Shrink ldr / str [sp, imm0-1024] to 16-bit instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89326 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
462517808063f450416dd5693adbc31293e9ba9a 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> Eliminate more * 4 in Thumb1 asm printing for consistency sake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a64ce4591762b93030cd2a2ff202bbd5badfecdd 19-Nov-2009 Evan Cheng <evan.cheng@apple.com> Eliminate more * 4 in Thumb1 asm printing for consistency sake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89325 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
eb368aa30f54a1388c341e6f443c9c6f96216fdc 18-Nov-2009 David Goodwin <david_goodwin@apple.com> Add ARMv6 itineraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89218 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMScheduleV6.td
RMScheduleV7.td
ebb5cb92169a04dd94fa65ae18aead271db3a4e5 18-Nov-2009 David Goodwin <david_goodwin@apple.com> Add ARMv6 itineraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89218 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMScheduleV6.td
RMScheduleV7.td
ecce4b7c8a9afdf9ca01e9c017871492a406ebfe 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix a few places that were missed when we converted to unified syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89214 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a3003004aa70f068cdc64389ea2379f9c019ff49 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Fix a few places that were missed when we converted to unified syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89214 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
19194a2f4d58b62e438b2c28f4b42966931cd397 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add a target hook to allow changing the tail duplication limit based on the
contents of the block to be duplicated. Use this for ARM Cortex A8/9 to
be more aggressive tail duplicating indirect branches, since it makes it
much more likely that they will be predicted in the branch target buffer.
Testcase coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89187 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMSubtarget.cpp
RMSubtarget.h
834b08af8d3d8fc6c76ac6ca40674565689e8d7f 18-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add a target hook to allow changing the tail duplication limit based on the
contents of the block to be duplicated. Use this for ARM Cortex A8/9 to
be more aggressive tail duplicating indirect branches, since it makes it
much more likely that they will be predicted in the branch target buffer.
Testcase coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89187 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMSubtarget.cpp
RMSubtarget.h
35ccbb7056c9c20ecc158d701fb3b00fdd795601 17-Nov-2009 Jim Grosbach <grosbach@apple.com> Enable arm jumpt table adjustment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89143 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f04777b945e272ccec21c7080bd5480d78a14fd2 17-Nov-2009 Jim Grosbach <grosbach@apple.com> Enable arm jumpt table adjustment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89143 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
aa4af890f3ecfcb21e9a0ce4f21304aec7fa087d 17-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Both Darwin as and GNU as violate ARM docs wrt printing of addrmode6
alignment imm (in the same way). Fix asmprinting for non-darwin platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
bce3dbd9be29a42f32eb888086050cd620f2133b 17-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Both Darwin as and GNU as violate ARM docs wrt printing of addrmode6
alignment imm (in the same way). Fix asmprinting for non-darwin platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3f6474095adef9b9dc65ef94b481785caa086ea7 17-Nov-2009 Johnny Chen <johnny.chen@apple.com> Set Inst{15-12} (Rd/Rt) to 0b1111 (PC) for BR_JTadd, BR_JTr, and BR_JTm to
distinguish between them and the more generic instructions (add, mov, and ldr).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89108 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a9ea9ec1941a97b27355da704a3ac8ecd27e87c4 17-Nov-2009 Johnny Chen <johnny.chen@apple.com> Set Inst{15-12} (Rd/Rt) to 0b1111 (PC) for BR_JTadd, BR_JTr, and BR_JTm to
distinguish between them and the more generic instructions (add, mov, and ldr).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89108 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bd75ded296f631b4b59f5461340de1e1a2beae01 17-Nov-2009 Jim Grosbach <grosbach@apple.com> When moving a block for table jumps, make sure the prior block terminator
is analyzable so it can be updated. If it's not, be safe and don't move the
block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89022 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a0a95a3c1cea79757854cf39ba07734b39e2b0e9 17-Nov-2009 Jim Grosbach <grosbach@apple.com> When moving a block for table jumps, make sure the prior block terminator
is analyzable so it can be updated. If it's not, be safe and don't move the
block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89022 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ff43a627bcc5f09f467393f4041d8969efe87949 17-Nov-2009 Johnny Chen <johnny.chen@apple.com> Set Rm bits of BX_RET to 0b1110 (R14); and set condition code bits of BRIND to
0b1110 (ALways). This is so that the disassembler decoder can distinguish among
BX_RET, BRIND, and BXr9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89000 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
9d52e8db8acaa3326c5a7674959ecdacbceb916a 17-Nov-2009 Johnny Chen <johnny.chen@apple.com> Set Rm bits of BX_RET to 0b1110 (R14); and set condition code bits of BRIND to
0b1110 (ALways). This is so that the disassembler decoder can distinguish among
BX_RET, BRIND, and BXr9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89000 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7fcb07aa007c643df80ffaac78ed860fe7c0ceea 16-Nov-2009 Jim Grosbach <grosbach@apple.com> Make the pass class name more explicit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88964 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
7bde2971330d8d64d6650d002db9c1ce77f4e4d4 16-Nov-2009 Jim Grosbach <grosbach@apple.com> Make the pass class name more explicit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88964 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6b4b40736acfba22d0befa1badf2b3f851e53c13 16-Nov-2009 Jim Grosbach <grosbach@apple.com> make pass name a bit more clear

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88961 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
074fb0252d20dfc4b03bc902b94e11d9cd8592d8 16-Nov-2009 Jim Grosbach <grosbach@apple.com> make pass name a bit more clear

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88961 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
896373b0146c9a789b003bb7a15618747db484bb 16-Nov-2009 Jim Grosbach <grosbach@apple.com> Simplify thumb2 jump table adjustments. Remove unnecessary calculation and
usage of block sizes and offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88935 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
08cbda56b6a45a2c29bdf3d9668ad614ad86cb77 16-Nov-2009 Jim Grosbach <grosbach@apple.com> Simplify thumb2 jump table adjustments. Remove unnecessary calculation and
usage of block sizes and offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88935 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
98f9f85767a7837d985e0dc421ea825f14469378 16-Nov-2009 Jim Grosbach <grosbach@apple.com> clarify comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88933 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9249efe4c7451e83fb4c904fd7fcc8edfe08d815 16-Nov-2009 Jim Grosbach <grosbach@apple.com> clarify comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88933 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
fad80ae623fc6897ea32966208814e9a4c70802e 16-Nov-2009 Jim Grosbach <grosbach@apple.com> back off for a bit. tracking down weirdness

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88919 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b2e86bb142c882c68c54723f65c572def9bf77cc 16-Nov-2009 Jim Grosbach <grosbach@apple.com> back off for a bit. tracking down weirdness

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88919 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
313cc22c734cfef8794dbfaf8a4ac9040a5cd9f6 16-Nov-2009 Jim Grosbach <grosbach@apple.com> Analyze has to be before checking the condition, obviously. Properly construct an iterator for prior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88917 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ca215e7804ca5d85e19e31850c3ba3d155624e89 16-Nov-2009 Jim Grosbach <grosbach@apple.com> Analyze has to be before checking the condition, obviously. Properly construct an iterator for prior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88917 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
860fb5bb3ded49293473d043b5206742c14b3476 15-Nov-2009 Jim Grosbach <grosbach@apple.com> Detect need for autoalignment of the stack earlier to catch spills more
conservatively. eliminateFrameIndex() machinery adjust to handle addr mode
6 (vld1/vst1) used for spills. Fix tests to expect aligned Q-reg spilling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88874 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMTargetMachine.cpp
a44321776ecd96fa0344335d3027758be3386e45 15-Nov-2009 Jim Grosbach <grosbach@apple.com> Detect need for autoalignment of the stack earlier to catch spills more
conservatively. eliminateFrameIndex() machinery adjust to handle addr mode
6 (vld1/vst1) used for spills. Fix tests to expect aligned Q-reg spilling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88874 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMTargetMachine.cpp
4b93798c0fd881d607fba728f7c138f8def59315 15-Nov-2009 Jim Grosbach <grosbach@apple.com> set the def of the VLD1q64 properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88873 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
6cb6788b79bcec64886880697fc69b82a296f671 15-Nov-2009 Jim Grosbach <grosbach@apple.com> set the def of the VLD1q64 properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88873 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b4b383b2502314ea3868c5646d201ba463974752 14-Nov-2009 Jim Grosbach <grosbach@apple.com> cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88812 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9c477f54f3c3e2541205f24bfe89b22da7b6e096 14-Nov-2009 Jim Grosbach <grosbach@apple.com> cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88812 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1b8810510f177de84116be20460126c81b4e2575 14-Nov-2009 Jim Grosbach <grosbach@apple.com> Cleanup flow, and only update the jump table we're analyzing when replacing a destination MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88805 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
00a6a1f0225b01229134ecee7a853be638703c36 14-Nov-2009 Jim Grosbach <grosbach@apple.com> Cleanup flow, and only update the jump table we're analyzing when replacing a destination MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88805 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a88d1acbaefb5416a147dcdd2199bb43ab70983d 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Change TargetInstrInfo::reMaterialize to pass in TargetRegisterInfo.
- If destination is a physical register and it has a subreg index, use the
sub-register instead.
This fixes PR5423.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88745 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
d57cdd5683ea926e489067364fb7ffe5fd5d35ee 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Change TargetInstrInfo::reMaterialize to pass in TargetRegisterInfo.
- If destination is a physical register and it has a subreg index, use the
sub-register instead.
This fixes PR5423.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88745 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
770b4d6907dab297589a12d3bf89f926c0b400e9 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> When expanding t2STRDi8 r, r to two stores, add kill markers correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88734 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
0cd22dd7383111192571884eb941ac2ccb668025 14-Nov-2009 Evan Cheng <evan.cheng@apple.com> When expanding t2STRDi8 r, r to two stores, add kill markers correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88734 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ca9b04ba02e321977d03e79a5bbd4c95eb23a0d8 13-Nov-2009 David Greene <greened@obbligato.org> Move DebugInfo checks into EmitComments and remove them from
target-specific AsmPrinters. Not all comments need DebugInfo.

Re-enable the line numbers comment test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88697 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1924aabf996be9335fab34e7ee4fa2aa5911389c 13-Nov-2009 David Greene <greened@obbligato.org> Move DebugInfo checks into EmitComments and remove them from
target-specific AsmPrinters. Not all comments need DebugInfo.

Re-enable the line numbers comment test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88697 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e6e30350b685bd4c9eddf4a88cb5dac41ee61eb8 13-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow target to specify regclass for which antideps will only be broken along the critical path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88682 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
87d21b92fc42f6b3bd8567a83fc5b5191c1205e5 13-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow target to specify regclass for which antideps will only be broken along the critical path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88682 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
08ca9519152539cb987a447473da7bffb0ddada1 13-Nov-2009 Jim Grosbach <grosbach@apple.com> Block renumbering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87056 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
c1a07be185d50fb3201782e4c832356f612480fb 13-Nov-2009 Jim Grosbach <grosbach@apple.com> Block renumbering

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87056 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
0b6f987c42f5224cbba161d8f8705a2085548515 13-Nov-2009 Jim Grosbach <grosbach@apple.com> use lower case for readability

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87054 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
f4cbc0e421174de0eb38fb1ec46deddb082536d5 13-Nov-2009 Jim Grosbach <grosbach@apple.com> use lower case for readability

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87054 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
8ba3999a322f98167aab91baf54a4119b1fa518b 12-Nov-2009 David Greene <greened@obbligato.org> Make the MachineFunction argument of getFrameRegister const.

This also fixes a build error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87027 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
b9c2fd964ee7dd7823ac71db8443055e4d0f1c15 12-Nov-2009 David Greene <greened@obbligato.org> Make the MachineFunction argument of getFrameRegister const.

This also fixes a build error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87027 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
6424ab9738972c0a9d5f588c59645f85782cf68c 12-Nov-2009 David Greene <greened@obbligato.org> Add a bool flag to StackObjects telling whether they reference spill
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.

Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.

Update all targets to adhere to the new interfaces..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87022 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
3f2bf85d14759cc4b28a86805f566ac805a54d00 12-Nov-2009 David Greene <greened@obbligato.org> Add a bool flag to StackObjects telling whether they reference spill
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.

Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.

Update all targets to adhere to the new interfaces..


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87022 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
2b0dd3fed34eb77a58c42aee574e171fe5d983df 12-Nov-2009 Jim Grosbach <grosbach@apple.com> Update TB[BH] layout optimization. Add support for moving the target block
to directly follow the jump table. Move the layout changes to prior to any
constant island handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86999 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
80697d1b266cd3cd3b92edd424d66d573db6b4b1 12-Nov-2009 Jim Grosbach <grosbach@apple.com> Update TB[BH] layout optimization. Add support for moving the target block
to directly follow the jump table. Move the layout changes to prior to any
constant island handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86999 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ae466e3c7583e38941203c6de310f4749ccc529e 12-Nov-2009 Evan Cheng <evan.cheng@apple.com> Use table to separate opcode from operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86965 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b9d2c03d200bea99470766b0fb53dd07e11b086a 12-Nov-2009 Evan Cheng <evan.cheng@apple.com> Use table to separate opcode from operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86965 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
3a2ce50346bc55508a38e13d389bcafab7eb4c29 12-Nov-2009 Evan Cheng <evan.cheng@apple.com> isLegalICmpImmediate should take a signed integer; code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86964 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
06b53c0d51f029eb754b40350faf5ba4b33c4bcb 12-Nov-2009 Evan Cheng <evan.cheng@apple.com> isLegalICmpImmediate should take a signed integer; code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86964 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
f7ecb28b62f3fd1539b294e07c6cf3ab9b61f1bb 12-Nov-2009 Jim Grosbach <grosbach@apple.com> Revert 86857. It's causing consumer-typeset to fail, and there's a better way to do it forthcoming anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86945 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
01dec0e545de18aadcd3911563a93d10a625be80 12-Nov-2009 Jim Grosbach <grosbach@apple.com> Revert 86857. It's causing consumer-typeset to fail, and there's a better way to do it forthcoming anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86945 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
2621469af6386370b3bf8d41f9a76733b7a4e94b 11-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add TargetLowering::isLegalICmpImmediate. It tells LSR what immediate can be folded into target icmp instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86858 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
77e4751011da2d6afa930ab91f7baee39e7c7e89 11-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add TargetLowering::isLegalICmpImmediate. It tells LSR what immediate can be folded into target icmp instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86858 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
9c7d61e9f372f1a6daccb4df389520193d58de67 11-Nov-2009 Jim Grosbach <grosbach@apple.com> Do jump table adjustment before constant island allocation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86857 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f4997e87e3131a5609b54b18c6d94833827e9dce 11-Nov-2009 Jim Grosbach <grosbach@apple.com> Do jump table adjustment before constant island allocation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86857 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6ae593cd1381ab2f6aff6eb1309a1a7b5270c8c6 11-Nov-2009 Jim Grosbach <grosbach@apple.com> The TBB and TBH instructions for Thumb2 are really handy for jump tables, but
can only branch forward. To best take advantage of them, we'd like to adjust
the basic blocks around a bit when reasonable. This patch puts basics in place
to do that, with a super-simple algorithm for backwards jump table targets that
creates a new branch after the jump table which branches backwards. Real
heuristics for reordering blocks or other modifications rather than inserting
branches will follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86791 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1fc7d715aa35703fcc4a87ece718a8c447e8ee72 11-Nov-2009 Jim Grosbach <grosbach@apple.com> The TBB and TBH instructions for Thumb2 are really handy for jump tables, but
can only branch forward. To best take advantage of them, we'd like to adjust
the basic blocks around a bit when reasonable. This patch puts basics in place
to do that, with a super-simple algorithm for backwards jump table targets that
creates a new branch after the jump table which branches backwards. Real
heuristics for reordering blocks or other modifications rather than inserting
branches will follow.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86791 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
4137d7cdf726c8d94ef376603d909b69037a9e91 10-Nov-2009 Evan Cheng <evan.cheng@apple.com> Change Thumb1 address mode printing, instead of
[r0, #2 * 4]
Now
[r0, #8]

This makes Thumb2 assembly more uniform and frankly the scale doesn't add much.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4b6bbe1e9c40fb58eccaf3671432661016663aab 10-Nov-2009 Evan Cheng <evan.cheng@apple.com> Change Thumb1 address mode printing, instead of
[r0, #2 * 4]
Now
[r0, #8]

This makes Thumb2 assembly more uniform and frankly the scale doesn't add much.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
979c7ab12dfb8913593c05cb303b947c5b06d1f8 10-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86706 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
1e13c797e51f031e0e22149dd3f606ad56f13c42 10-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86706 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
2a0ca3b82e4e78705e37f2b3d9092bc9767b8306 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Fixed to address code review. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86634 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
c2e8a7e8d2ab156afaa8ab0d0317dd9ee3db7d30 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Fixed to address code review. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86634 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
526dd742a7832e90f52ac99c24a4370d3d98d347 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86628 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
0855dee564f80160abf95497475306af38ab7f84 10-Nov-2009 David Goodwin <david_goodwin@apple.com> Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86628 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
af0ec43f7322c579e2abb859bae4cc8075ec8e0a 10-Nov-2009 Jim Grosbach <grosbach@apple.com> Now that the default is 'enabled,' a separate command line option for ARM is
not necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86621 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
803b48a155eb2b3f9fe3823ecd7cbbd0089b2809 10-Nov-2009 Jim Grosbach <grosbach@apple.com> Now that the default is 'enabled,' a separate command line option for ARM is
not necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86621 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8674f03b85cbf65f4e15902a68e089341b9f1743 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Enable dynamic stack realignment by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86604 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
92eb919e807c2c7ba5c5cde131a340ea0a77f94b 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Enable dynamic stack realignment by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86604 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
65d8800c4b8ae965422e75b0f3309191ae23fbc3 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Set dynamic stack realignment to real values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86602 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ad353c74adda55556f7a3969721c3e49ac16d570 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Set dynamic stack realignment to real values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86602 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
cdc498061580523723269ee368d6b7adbbb02699 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Work around assembler not recognizing #0.0 form immediate for vmcp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
43cca695a81ddc4a8a1f98d959047ba16edc3d72 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Work around assembler not recognizing #0.0 form immediate for vmcp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86548 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
e2fda536ff4bd38be9f9ebea6ad90ce0b48d0e12 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Use Unified Assembly Syntax for the ARM backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86494 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONMoveFix.cpp
EADME-Thumb.txt
EADME.txt
humb1RegisterInfo.cpp
e5165490b7ba24bb2f3043399e0d60e7f3bcf8a5 09-Nov-2009 Jim Grosbach <grosbach@apple.com> Use Unified Assembly Syntax for the ARM backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86494 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
EONMoveFix.cpp
EADME-Thumb.txt
EADME.txt
humb1RegisterInfo.cpp
bacc516181e4772892c2a61ce0acc17074fedf1e 08-Nov-2009 Jim Grosbach <grosbach@apple.com> Use aligned load/store instructions for spilling Q registers when we know the stack slot is 128 bit aligned

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86425 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
31bc849123011b8eae6bb3c79876d9a3c26a6a1d 08-Nov-2009 Jim Grosbach <grosbach@apple.com> Use aligned load/store instructions for spilling Q registers when we know the stack slot is 128 bit aligned

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86425 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
be9db751021d3849e4cd2590e4e4c7ec4f50b221 08-Nov-2009 Evan Cheng <evan.cheng@apple.com> Refactor code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86423 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
fdc834046efd427d474e3b899ec69354c05071e0 08-Nov-2009 Evan Cheng <evan.cheng@apple.com> Refactor code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86423 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
0e426c27d48dd7f1890bfa71b7566a7cfb05c4e2 07-Nov-2009 Jim Grosbach <grosbach@apple.com> 80-column cleanup of file header comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86408 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.h
31c24bf5b39cc8391d4cfdbf8cf5163975fdb81e 07-Nov-2009 Jim Grosbach <grosbach@apple.com> 80-column cleanup of file header comments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86408 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.h
04d92822f7e9437186a873e4f6335b4c379c5d65 07-Nov-2009 Jim Grosbach <grosbach@apple.com> Support alignment specifier for NEON vld/vst instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86404 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMISelDAGToDAG.cpp
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
EONPreAllocPass.cpp
8a5ec86a3d4d599984e52c0c5a3a6a436607cf3e 07-Nov-2009 Jim Grosbach <grosbach@apple.com> Support alignment specifier for NEON vld/vst instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86404 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMISelDAGToDAG.cpp
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
EONPreAllocPass.cpp
812c299cb8ac1c341552584fbbdfca9a75ffe764 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> t2ldrpci_pic can be used for blockaddress as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86400 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
humb2InstrInfo.cpp
bf992817f28bdab09fe1d1349561efb0c89fb0dd 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> t2ldrpci_pic can be used for blockaddress as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86400 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
humb2InstrInfo.cpp
1b60b1603b3be4b41b2e3a6820fe116835ec7dd9 07-Nov-2009 Chris Lattner <sabre@nondot.org> indicate what the native integer types for the target are.
Please verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86397 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
59a9178fbedb88427c8ff9e5fa7a8f2038f80a2e 07-Nov-2009 Chris Lattner <sabre@nondot.org> indicate what the native integer types for the target are.
Please verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86397 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
59ab8afb46d74604f438d78213a641c038c519b8 07-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> It turns out that the testcase in question uncovered subreg-handling bug.
Add assert in asmprinter to catch such cases and xfail the tests.
PR is to be filled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86375 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
e8ea011cc766b37a957d5966655526096bf49fea 07-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> It turns out that the testcase in question uncovered subreg-handling bug.
Add assert in asmprinter to catch such cases and xfail the tests.
PR is to be filled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86375 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
e63aa1f6906831c4a1b8bf2f2bc1ee23a4e3c3c6 07-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Make the need-stub variables accurate and consistent. In the case of
MachineRelocations, "stub" always refers to a far-call stub or a
load-a-faraway-global stub, so this patch adds "Far" to the term. (Other stubs
are used for lazy compilation and dlsym address replacement.) The variable was
also inconsistent between the positive and negative sense, and the positive
sense ("NeedStub") was more demanding than is accurate (since a nearby-enough
function can be called directly even if the platform often requires a stub).
Since the negative sense causes double-negatives, I switched to
"MayNeedFarStub" globally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86363 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
2d274412ed9aab277e070690c574714ec544cf94 07-Nov-2009 Jeffrey Yasskin <jyasskin@google.com> Make the need-stub variables accurate and consistent. In the case of
MachineRelocations, "stub" always refers to a far-call stub or a
load-a-faraway-global stub, so this patch adds "Far" to the term. (Other stubs
are used for lazy compilation and dlsym address replacement.) The variable was
also inconsistent between the positive and negative sense, and the positive
sense ("NeedStub") was more demanding than is accurate (since a nearby-enough
function can be called directly even if the platform often requires a stub).
Since the negative sense causes double-negatives, I switched to
"MayNeedFarStub" globally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86363 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
ca529232f661d674617b7d5e51102cf4ee9a6ffb 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> Refactor code. Fix a potential missing check. Teach isIdentical() about tLDRpci_pic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86330 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
EADME.txt
humb2InstrInfo.cpp
humb2InstrInfo.h
d457e6e9a5cd975baf4d1f0578382ab8373e6153 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> Refactor code. Fix a potential missing check. Teach isIdentical() about tLDRpci_pic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86330 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
EADME.txt
humb2InstrInfo.cpp
humb2InstrInfo.h
626474d3ddba098f44d1a372314418a63c152540 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::isIdentical(). It's similar to MachineInstr::isIdentical
except it doesn't care if the definitions' virtual registers differ. This is
used by machine LICM and other MI passes to perform CSE.
- Teach Thumb2InstrInfo::isIdentical() to check two t2LDRpci_pic are identical.
Since pc relative constantpool entries are always different, this requires it
it check if the values can actually the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86328 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
humb2InstrInfo.cpp
humb2InstrInfo.h
78e5c1140adc926e7c004748c1c912bfddd875b4 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::isIdentical(). It's similar to MachineInstr::isIdentical
except it doesn't care if the definitions' virtual registers differ. This is
used by machine LICM and other MI passes to perform CSE.
- Teach Thumb2InstrInfo::isIdentical() to check two t2LDRpci_pic are identical.
Since pc relative constantpool entries are always different, this requires it
it check if the values can actually the same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86328 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
humb2InstrInfo.cpp
humb2InstrInfo.h
80994a152341401f8151ece592fd0a07dd14ae1f 07-Nov-2009 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86325 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
b6aae88ac003183cd386c7db2ce123b4d10b7a22 07-Nov-2009 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86325 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
d139b9495d8e6a18ac8c7d3a7767f7e0db76a673 07-Nov-2009 Johnny Chen <johnny.chen@apple.com> My previous patch (r84124) for setting the encoding bits 4 and 7 of DPSoRegFrm
was wrong and too aggressive in the sense that DPSoRegFrm includes both constant
shifts (with Inst{4} = 0) and register controlled shifts (with Inst{4} = 1 and
Inst{7} = 0). The 'rr' fragment of the multiclass definitions actually means
register/register with no shift, see A8-11.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86319 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0430152a11ccf5f6079d97c519b4a86dd49739e7 07-Nov-2009 Johnny Chen <johnny.chen@apple.com> My previous patch (r84124) for setting the encoding bits 4 and 7 of DPSoRegFrm
was wrong and too aggressive in the sense that DPSoRegFrm includes both constant
shifts (with Inst{4} = 0) and register controlled shifts (with Inst{4} = 1 and
Inst{7} = 0). The 'rr' fragment of the multiclass definitions actually means
register/register with no shift, see A8-11.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86319 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ab81483d946285672c43aa85f78f912321e95348 07-Nov-2009 Jim Grosbach <grosbach@apple.com> 80-columns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86310 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.h
bd79fc8ef2543c16239f840a03b6c338cf42399d 07-Nov-2009 Jim Grosbach <grosbach@apple.com> 80-columns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86310 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.h
7921e58057a3a19e15877cfd18fcbeb828e919f9 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
RM.h
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
RMTargetMachine.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
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
RM.h
RMBaseInstrInfo.h
RMExpandPseudoInsts.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
RMTargetMachine.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2ITBlockPass.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
d271d8b61f3747846a4ac40f9c49a9b9ca71bc67 07-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Honour subreg machine operands during asmprinting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
fc2cba8362b603b376ea9a27b257579efaff14ac 07-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Honour subreg machine operands during asmprinting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86303 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6a14a00bb348755ff7974c56ff8df9845deb68f3 07-Nov-2009 Bob Wilson <bob.wilson@apple.com> Print VMOV (immediate) operands as hexadecimal values. Apple's assembler
will not accept negative values for these. LLVM's default operand printing
sign extends values, so that valid unsigned values appear as negative
immediates. Print all VMOV immediate operands as hex values to resolve this.
Radar 7372576.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86301 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
54c78ef2fed32e82e6aea8cbeb89156814eaf27c 07-Nov-2009 Bob Wilson <bob.wilson@apple.com> Print VMOV (immediate) operands as hexadecimal values. Apple's assembler
will not accept negative values for these. LLVM's default operand printing
sign extends values, so that valid unsigned values appear as negative
immediates. Print all VMOV immediate operands as hex values to resolve this.
Radar 7372576.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86301 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
e4582d9e08187fb0d75c51ddb139f3ad3a45642d 06-Nov-2009 Evan Cheng <evan.cheng@apple.com> Remove ARMPCLabelIndex from ARMISelLowering. Use ARMFunctionInfo::createConstPoolEntryUId() instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86294 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
e7e0d62efda2445b735052ca45bd74fb002e34c3 06-Nov-2009 Evan Cheng <evan.cheng@apple.com> Remove ARMPCLabelIndex from ARMISelLowering. Use ARMFunctionInfo::createConstPoolEntryUId() instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86294 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
de46a5b60ea8cf3db0b613172667a7038470c578 06-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass StringRef by value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86251 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
2928c83b010f7cfdb0f819199d806f6942a7d995 06-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass StringRef by value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86251 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
bbc43963b76f8e54e6cee47defde4868586665fd 06-Nov-2009 Dan Gohman <gohman@apple.com> Factor out the printing of the leading tab into printInlineAsm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
40c57860dad429d3c938ed5f918c2c66f3b5fa72 06-Nov-2009 Dan Gohman <gohman@apple.com> Factor out the printing of the leading tab into printInlineAsm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86199 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7abf0939c0cf058c89bfdf010ebfa0377fb17034 05-Nov-2009 Dan Gohman <gohman@apple.com> Remove uninteresting and confusing debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86149 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
73bb251cd7a535fb93bb3a52eda61555fb253f41 05-Nov-2009 Dan Gohman <gohman@apple.com> Remove uninteresting and confusing debug output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86149 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f1d76577adf6049e5e7b389bc928d3367e8acbc3 05-Nov-2009 Jim Grosbach <grosbach@apple.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86068 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
4371cda7f8fc21fc3192ead122ba48b0152fb0e4 05-Nov-2009 Jim Grosbach <grosbach@apple.com> Grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86068 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8db35425f1cc0dfc5275e413a302a03d99a3c038 05-Nov-2009 Jim Grosbach <grosbach@apple.com> Now that the memory leak from McCat/08-main has been fixed (86056), re-enable
aggressive testing of dynamic stack alignment.
Note that this is off by default, and enabled for LLCBETA nightly results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86064 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
db1751a9222dbfc62e6d7c2ec0b084d353068931 05-Nov-2009 Jim Grosbach <grosbach@apple.com> Now that the memory leak from McCat/08-main has been fixed (86056), re-enable
aggressive testing of dynamic stack alignment.
Note that this is off by default, and enabled for LLCBETA nightly results.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86064 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
688ef4595d8d624bb968d508432a64a2652176ae 04-Nov-2009 Jim Grosbach <grosbach@apple.com> If a function has no stack frame at all, dynamic realignment isn't necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86057 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6db06a0866cd36fec05e6d9afb357ce8efb575e9 04-Nov-2009 Jim Grosbach <grosbach@apple.com> If a function has no stack frame at all, dynamic realignment isn't necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86057 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6023c439e5e7ed8cfcb63488e411e3f04f2515da 04-Nov-2009 Jim Grosbach <grosbach@apple.com> dynamic stack realignment necessitates scanning the floating point callee-
saved instructions even if no stack adjustment for those saves is needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86056 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c5848f4ced8f9174e7141c0d2589acaafa13ff35 04-Nov-2009 Jim Grosbach <grosbach@apple.com> dynamic stack realignment necessitates scanning the floating point callee-
saved instructions even if no stack adjustment for those saves is needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86056 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
7f251671d1a905be12347721af468b8e31ad9d6e 04-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out an informative comment for KILL instructions.

The KILL pseudo-instruction may survive to the asm printer pass, just like the IMPLICIT_DEF. Print the KILL as a comment instead of just leaving a blank line in the output.

With -asm-verbose=0, a blank line is printed, like IMPLICIT?DEF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ad68264f590f05db3731a452fc91dc22bc75167d 04-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out an informative comment for KILL instructions.

The KILL pseudo-instruction may survive to the asm printer pass, just like the IMPLICIT_DEF. Print the KILL as a comment instead of just leaving a blank line in the output.

With -asm-verbose=0, a blank line is printed, like IMPLICIT?DEF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2527652d0530076c4fcfc114b4a950bbfeeaa77a 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> The .n suffix must go after the predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
b9f51cbe983c0635625982a8ab5dd2158e063b74 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> The .n suffix must go after the predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
98fd6060b428475e227274836140601d27016a4f 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> Use ldr.n to workaround a darwin assembler bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7883fa942ff004b9c441ff9126a9d57b29d22a5e 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> Use ldr.n to workaround a darwin assembler bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
276f816673b1257798355cedad6f1529c75af3dd 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
RMBaseInstrInfo.cpp
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMInstrThumb2.td
3e5ab0bd7db07a568cb543f7c78c1bc5ab70efa5 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> fconsts / fconstd immediate should be proceeded with #.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85952 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b23b2015eb5ee5d19735d82b2b585c6671310542 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> fconsts / fconstd immediate should be proceeded with #.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85952 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0c7403016afc834b7c310a5676de5ba5dfd1ea2c 03-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Move subtarget check upper for NEON reg-reg fixup pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85914 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
EONMoveFix.cpp
747409a290e119601c8fcb8bc429aafcae186179 03-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Move subtarget check upper for NEON reg-reg fixup pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85914 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
EONMoveFix.cpp
5d63848cf8c3a3b885f75dd0be11e5e217c254e9 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Trim unnecessary include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85878 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f6c0bffa8d6308ba0f31df0bb57f194b24aca83f 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Trim unnecessary include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85878 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
74f8efd28d43839bb2513ad39c93a5ae317c3764 03-Nov-2009 Bob Wilson <bob.wilson@apple.com> For Thumb indirect branches, use "mov pc, reg" which does not switch
between ARM/Thumb modes and does not require the low bit of the target
address to be set for Thumb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85874 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
af14e663ac9bbdd8b545552da60fe807754c9988 03-Nov-2009 Bob Wilson <bob.wilson@apple.com> For Thumb indirect branches, use "mov pc, reg" which does not switch
between ARM/Thumb modes and does not require the low bit of the target
address to be set for Thumb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85874 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
f865754812e17df0cee7e4a1d387bac6603f015b 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5367. QPR_8 is the super regclass of DPR_8 and SPR_8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85871 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ba908640b3e0c1218748776e244d4b7234451155 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5367. QPR_8 is the super regclass of DPR_8 and SPR_8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85871 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8ef1ec1295a24dc9ed54952005a3f2cab20165c6 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Clean up copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85870 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
b4db6a46e0de3283fa70ea0a7d3623f2e4e2d2a3 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Clean up copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85870 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
89947e524969d671c7cb8763fdc333ee02727338 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add QPR_8 as a superreg class of SPR_8 and DPR_8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85869 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
3f4e47be0a9b26501baf0ea0017795ffb2e79fc1 03-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add QPR_8 as a superreg class of SPR_8 and DPR_8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85869 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
53716298997391af4aa6547150f9162a942312ff 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85861 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
92dbd0b3201dd343887c57657847d6f63d22cb03 03-Nov-2009 Ted Kremenek <kremenek@apple.com> Update CMake file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85861 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
3ed3a35a6549891d3a9ef08bcc9caaf21703a537 03-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Turn neon reg-reg moves fixup code into separate pass. This should reduce the compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85850 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMTargetMachine.cpp
EONMoveFix.cpp
7aaf94bb0dde65e70b417208aaf859f7292a31d1 03-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Turn neon reg-reg moves fixup code into separate pass. This should reduce the compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85850 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMTargetMachine.cpp
EONMoveFix.cpp
b6057985f14be94252b2741f5e8ae338879395a6 03-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Revert r85049, it is causing PR5367

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85847 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ab453e06418cceabc909527dcf38a4914ef61f77 03-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Revert r85049, it is causing PR5367

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85847 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
1c9eda2cdfdd2fa0f49365d669d74968e1a925e2 03-Nov-2009 Bob Wilson <bob.wilson@apple.com> Revert previous change to a comment. The BlockAddresses go in the
constant pool so they don't get wrapped separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85844 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b62d257cf5adf89599e185e8cbd2b15e05e054dd 03-Nov-2009 Bob Wilson <bob.wilson@apple.com> Revert previous change to a comment. The BlockAddresses go in the
constant pool so they don't get wrapped separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85844 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d1da913d170e20cf91fd12f9da5d733f171bcb7d 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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
b7209bfc4cf90c88ce0d1795184e99fe54091c53 02-Nov-2009 Kevin Enderby <enderby@apple.com> Fix ARMAsmParser::ParseMemoryOffsetReg() where the parameter OffsetRegNum should
have been passed as a reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85823 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
60131c0d0bb04d0ae3c13cbd055616c71d86e8ea 02-Nov-2009 Kevin Enderby <enderby@apple.com> Fix ARMAsmParser::ParseMemoryOffsetReg() where the parameter OffsetRegNum should
have been passed as a reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85823 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9a8ec820614ab5b5a0edef1297cbc4cec4b1c3d9 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
a07d68f6f017c73cbca1222cddd6baf40974974b 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Hyphenate some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85808 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
31ba10b7431de1c320c6027d86d4592d6fde4a8f 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Hyphenate some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85808 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
62acbf19235b3b20a24958b973538e35ec6f2d67 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add support for BlockAddress values in ARM constant pools.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85806 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
smPrinter/ARMAsmPrinter.cpp
28989a8ddc665dce4dde368e8c000a5769871b63 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Add support for BlockAddress values in ARM constant pools.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85806 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
smPrinter/ARMAsmPrinter.cpp
d737897784e400b7c2642030b362faf42493a398 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Prune unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85805 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
69e8445ced222d856c850963586800f9385d110a 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Prune unnecessary include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85805 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
8ff61c68cde1cf4d785362c21f4a316436d14a22 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> These are done / no longer care.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85798 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
d3e18fad7e7c6839a3d343f77957a488754d06b6 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> These are done / no longer care.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85798 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
d9ca3d1e7116200fe9e62cb9397c783d1d653159 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add an entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85797 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
e3b88fc01e64200c3685c1b14eb23a3f4625edf2 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Add an entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85797 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
d9a5f772aa33a15e8ae9db61010ea0e347b771ca 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Unbreak ARMBaseRegisterInfo::copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85787 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
7baae87d8f188262e07922348d88201f32514b1c 02-Nov-2009 Evan Cheng <evan.cheng@apple.com> Unbreak ARMBaseRegisterInfo::copyRegToReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85787 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
f817d7bfb1568b67a790dbae0ea05e162b6bc560 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Handle splats of undefs properly. This includes the testcase for PR5364 as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85767 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2ae0eec1c03fa005136b8724faab38048878f253 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Handle splats of undefs properly. This includes the testcase for PR5364 as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85767 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d9331217b489a204b9264bb424ebf83612e1b29e 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not infer the target type for COPY_TO_REGCLASS from dest regclass, this won't work if it can contain several types. Require explicit result type for the node for now. This fixes PR5364.

PS: It seems that blackfin usage of copy_to_regclass is completely bogus!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85766 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMRegisterInfo.td
3a639a07ea14f2e404fb1d3a14005ff468543911 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not infer the target type for COPY_TO_REGCLASS from dest regclass, this won't work if it can contain several types. Require explicit result type for the node for now. This fixes PR5364.

PS: It seems that blackfin usage of copy_to_regclass is completely bogus!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85766 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMRegisterInfo.td
1853b6e277b38bc8d796951f371cbc5824b21aff 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> 64-bit FP loads & stores operate on both NEON and VFP pipelines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85765 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
2e1da9fea468e33f8fedd4295ef4a73a0ccb5714 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> 64-bit FP loads & stores operate on both NEON and VFP pipelines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85765 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
eed9c14b562d5c43c787b0a74c99f3adf6238f6b 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Use NEON reg-reg moves, where profitable. This reduces "domain-cross" stalls, when we used to mix vfp and neon code (the former were used for reg-reg moves)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85764 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
humb1InstrInfo.cpp
humb2InstrInfo.cpp
f95215f551949d5e5adfbf4753aa833b9009b77a 02-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Use NEON reg-reg moves, where profitable. This reduces "domain-cross" stalls, when we used to mix vfp and neon code (the former were used for reg-reg moves)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85764 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
humb1InstrInfo.cpp
humb2InstrInfo.cpp
1ac1b43d80bf7bac148dd5d4ad3dd98054cf9408 01-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix a couple more places where we are creating ld / st instructions without memoperands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85746 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
humb2InstrInfo.cpp
e3ce8aab0a6de939f8cfa4f8cb2e3a3bf4e1fe21 01-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix a couple more places where we are creating ld / st instructions without memoperands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85746 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
humb2InstrInfo.cpp
3e9fef42389147453ebcbe12543ae9f1c6530f7c 01-Nov-2009 Evan Cheng <evan.cheng@apple.com> Make use of imm12 version of Thumb2 ldr / str instructions more aggressively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85743 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
48d8afab73d72418cf9505a020f621014920463c 01-Nov-2009 Evan Cheng <evan.cheng@apple.com> Make use of imm12 version of Thumb2 ldr / str instructions more aggressively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85743 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
538da74ec2d9bb494a7704e195515c8be8b5b373 01-Nov-2009 Evan Cheng <evan.cheng@apple.com> Use cbz and cbnz instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85698 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
de17fb6e4dd8f169f707d58d4e124c8d4d2c7dba 01-Nov-2009 Evan Cheng <evan.cheng@apple.com> Use cbz and cbnz instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85698 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
67420bf16a60b1ae36b4d38187b3dd43e73fee51 31-Oct-2009 Jim Grosbach <grosbach@apple.com> vml[as].f32 cause stalls in following advanced SIMD instructions. Avoid using
them for scalar floating point operations for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85697 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8cd0a8cb821263be4dc40b0b376ff02bfbd89f88 31-Oct-2009 Jim Grosbach <grosbach@apple.com> vml[as].f32 cause stalls in following advanced SIMD instructions. Avoid using
them for scalar floating point operations for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85697 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a3bddfb18197f4b00b161db0c643e433f79e67e6 31-Oct-2009 Jim Grosbach <grosbach@apple.com> Expand 64-bit logical shift right inline

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85687 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bcf2f2c1592c96b3adcfd784e0699e8c55f65e5b 31-Oct-2009 Jim Grosbach <grosbach@apple.com> Expand 64-bit logical shift right inline

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85687 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5480bad7b9ba0a765d937631674f2b65f8eeea1e 31-Oct-2009 Jim Grosbach <grosbach@apple.com> Expand 64-bit arithmetic shift right inline

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85685 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b4a976c304e98fb4160549a92e35610b310dfd93 31-Oct-2009 Jim Grosbach <grosbach@apple.com> Expand 64-bit arithmetic shift right inline

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85685 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
998eacce4edb2421d0b40349057d8c30c1585ade 31-Oct-2009 Jim Grosbach <grosbach@apple.com> Expand 64 bit left shift inline rather than using the libcall. For now, this
is unconditional. Making it still use the libcall when optimizing for size
would be a good adjustment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85675 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c2b879fcfe3834597948d5dd6044a3f32baee275 31-Oct-2009 Jim Grosbach <grosbach@apple.com> Expand 64 bit left shift inline rather than using the libcall. For now, this
is unconditional. Making it still use the libcall when optimizing for size
would be a good adjustment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85675 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
326d7242e283922daf63e607bbc84e1498f76da7 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
RMISelLowering.cpp
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrThumb2.td
13f60e83d6add4d7159c322a7ccc1c36c26a115b 30-Oct-2009 Kevin Enderby <enderby@apple.com> Updates to the ARM target assembler for llvm-mc per review comments from
Daniel Dunbar.
- Reordered the fields in the ARMOperand Mem struct to make the struct smaller.
Making bool's into 1 bit fields and put the MCExpr* fields adjacent to each
other.
- Fixed a number of places in ARMAsmParser.cpp so they have doxygen comments.
- Change the name of ARMAsmParser::ParseRegister() to MaybeParseRegister and
added the bool ParseWriteBack parameter.
- Changed ARMAsmParser::ParseMemory() to call MaybeParseRegister().
- Added ARMAsmParser::ParseMemoryOffsetReg to factor out parsing the offset of a
memory operand. And use it for both parsing both preindexed and post indexing
addressing forms in ARMAsmParser::ParseMemory.
- Changed the first argument to ParseShift() to a reference.
- Changed ParseShift() to check for Rrx first and return to reduce nesting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85632 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9c41fa87eac369d84f8bfc2245084cd39f281ee4 30-Oct-2009 Kevin Enderby <enderby@apple.com> Updates to the ARM target assembler for llvm-mc per review comments from
Daniel Dunbar.
- Reordered the fields in the ARMOperand Mem struct to make the struct smaller.
Making bool's into 1 bit fields and put the MCExpr* fields adjacent to each
other.
- Fixed a number of places in ARMAsmParser.cpp so they have doxygen comments.
- Change the name of ARMAsmParser::ParseRegister() to MaybeParseRegister and
added the bool ParseWriteBack parameter.
- Changed ARMAsmParser::ParseMemory() to call MaybeParseRegister().
- Added ARMAsmParser::ParseMemoryOffsetReg to factor out parsing the offset of a
memory operand. And use it for both parsing both preindexed and post indexing
addressing forms in ARMAsmParser::ParseMemory.
- Changed the first argument to ParseShift() to a reference.
- Changed ParseShift() to check for Rrx first and return to reduce nesting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85632 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
4381e3bc06cb247d7d57658b2c6134c24021d316 30-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a note about Robert Muth's alternate jump table implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85624 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
57f224a5a473462f85e94c457c7548af27c37f0b 30-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a note about Robert Muth's alternate jump table implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85624 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
0d20d17a4707634b1973053699fa027c313c8220 30-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85610 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
929ffa241480bfe8b45c48cc64a8e0de38ec2421 30-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85610 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
eac0e8f344245ea3d5f7d78eac4033e8c64f18ab 30-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> This fixes functions like

void f (int a1, int a2, int a3, int a4, int a5,...)

In ARMTargetLowering::LowerFormalArguments if the function has 4 or
more regular arguments we used to set VarArgsFrameIndex using an
offset of 0, which is only correct if the function has exactly 4
regular arguments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85590 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c1382b745faa62bc6f2570a193bce6aee8d78885 30-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> This fixes functions like

void f (int a1, int a2, int a3, int a4, int a5,...)

In ARMTargetLowering::LowerFormalArguments if the function has 4 or
more regular arguments we used to set VarArgsFrameIndex using an
offset of 0, which is only correct if the function has exactly 4
regular arguments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85590 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8f743387c77dd5cdd20a6441e5da8271b52ca233 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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMMCInstLower.cpp
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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMMCInstLower.cpp
ebb14ff86fe1abf66d63985844fed583fb2044a5 30-Oct-2009 Jim Grosbach <grosbach@apple.com> Dial back the realignment a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85546 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
95d9504d46a18d65facca9a86cd53fa03cba1eca 30-Oct-2009 Jim Grosbach <grosbach@apple.com> Dial back the realignment a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85546 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
30afe01e7ef78e1d2c01c924161ebe53bf02a3de 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
9823cc9df2fbd6e8bd106e223718996f0a68a1d2 29-Oct-2009 Jim Grosbach <grosbach@apple.com> To get more thorough testing from llc-beta nightly runs, do dynamic stack
realignment regardless of whether it's strictly necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85476 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
84e58d03c910aa6ea8557d2f2f9de1f96162cae1 29-Oct-2009 Jim Grosbach <grosbach@apple.com> To get more thorough testing from llc-beta nightly runs, do dynamic stack
realignment regardless of whether it's strictly necessary.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85476 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
93ab5617a1e187a411418c1ea38b312b6aacf850 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert r85346 change to control tail merging by CodeGenOpt::Level.
I'm going to redo this using the OptimizeForSize function attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85426 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
a597103c328e29fb763e7a4864bd7c29a588fc9d 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert r85346 change to control tail merging by CodeGenOpt::Level.
I'm going to redo this using the OptimizeForSize function attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85426 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
ea6986525fadfd6488bc28e4ef99004d2b2aa519 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a Thumb BRIND pattern. Change the ARM BRIND assembly to separate the
opcode and operand with a tab. Check for these instructions in the usual
places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85411 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
humb1InstrInfo.cpp
humb2InstrInfo.cpp
8d4de5abfa1bcd974554ea14904ebf7af289e84d 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a Thumb BRIND pattern. Change the ARM BRIND assembly to separate the
opcode and operand with a tab. Check for these instructions in the usual
places.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85411 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
humb1InstrInfo.cpp
humb2InstrInfo.cpp
116b72c4dac37340eff42e02af6e6a0b60252578 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> fconsts and fconstd are obviously re-materializable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85410 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
30c80211b648c7344e949af594a9a191a1d36acc 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> fconsts and fconstd are obviously re-materializable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85410 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
b666f8884f79e76357655ae65a0395cc72d06400 28-Oct-2009 Jim Grosbach <grosbach@apple.com> Cleanup now that frame index scavenging via post-pass is working for ARM and Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85406 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
ca5dfb71ba4aa4a8392a021ec056cf0b70f74f1e 28-Oct-2009 Jim Grosbach <grosbach@apple.com> Cleanup now that frame index scavenging via post-pass is working for ARM and Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85406 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
fa281b8ec7167ba67ddcc8d441f6ff1685c83998 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> Give ARMISD::EH_SJLJ_LONGJMP and EH_SJLJ_SETJMP names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c59420867eec22f7fb562b5b53deffe98b511505 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> Give ARMISD::EH_SJLJ_LONGJMP and EH_SJLJ_SETJMP names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7c7a3ff2b1b7be0f3a3f5a3ca0b01a182b0d2fba 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> Use fconsts and fconstd to materialize small fp constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85362 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
39382427f1095f089d73a7dd3d9a371dea75b781 28-Oct-2009 Evan Cheng <evan.cheng@apple.com> Use fconsts and fconstd to materialize small fp constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85362 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrVFP.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.h
f061fc84a89aa961b3f5e25dce93fa5ac033c090 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add an indirect branch pattern for ARM. Testcase will be coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85355 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
04ea6e5150dd02fd60513a3d9fd1407aea350c02 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add an indirect branch pattern for ARM. Testcase will be coming soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85355 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
afe63293c930f39f6f6d4ac6e76da0d3546dfca4 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Record CodeGen optimization level in the BranchFolding pass so that we can
use it to control tail merging when there is a tradeoff between performance
and code size. When there is only 1 instruction in the common tail, we have
been merging. That can be good for code size but is a definite loss for
performance. Now we will avoid tail merging in that case when the
optimization level is "Aggressive", i.e., "-O3". Radar 7338114.

Since the IfConversion pass invokes BranchFolding, it too needs to know
the optimization level. Note that I removed the RegisterPass instantiation
for IfConversion because it required a default constructor. If someone
wants to keep that for some reason, we can add a default constructor with
a hard-wired optimization level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85346 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
cd4f04d6bcb7aefa24d92582fbadfe17519f4756 28-Oct-2009 Bob Wilson <bob.wilson@apple.com> Record CodeGen optimization level in the BranchFolding pass so that we can
use it to control tail merging when there is a tradeoff between performance
and code size. When there is only 1 instruction in the common tail, we have
been merging. That can be good for code size but is a definite loss for
performance. Now we will avoid tail merging in that case when the
optimization level is "Aggressive", i.e., "-O3". Radar 7338114.

Since the IfConversion pass invokes BranchFolding, it too needs to know
the optimization level. Note that I removed the RegisterPass instantiation
for IfConversion because it required a default constructor. If someone
wants to keep that for some reason, we can add a default constructor with
a hard-wired optimization level.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85346 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
fe8db6e76137272e242fc806826b15aaa934845b 27-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable virtual register based frame index scavenging by default for ARM & T2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85335 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a6a99b4e160eea0060b25fbdeadc3437cd67d617 27-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable virtual register based frame index scavenging by default for ARM & T2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85335 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b004ed5cee7a2d006860c017249c16d6331c0758 27-Oct-2009 Jim Grosbach <grosbach@apple.com> Infrastructure for dynamic stack realignment on ARM. For now, this is off by
default behind a command line option. This will enable better performance for
vectors on NEON enabled processors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85333 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
3dab2778571b5bb00b35a0adcb7011dc85158beb 27-Oct-2009 Jim Grosbach <grosbach@apple.com> Infrastructure for dynamic stack realignment on ARM. For now, this is off by
default behind a command line option. This will enable better performance for
vectors on NEON enabled processors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85333 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
d55c2acab4373802918c5c83eb9fcc7fd0f1349a 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Similar to r85280, do not clear the "S" bit for RSBri and RSBrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85299 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
90d7dcfdd9f0ad435e57d476109630998faaa698 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Similar to r85280, do not clear the "S" bit for RSBri and RSBrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85299 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2b4d1db83d22c184d42fed3e4863fe6253476a01 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Set condition code bits of BL and BLr9 to 0b1110 (ALways) to distinguish between
BL_pred and BLr9_pred.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85297 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
eadeffb30658de2abc798178dd7b645e68972db0 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Set condition code bits of BL and BLr9 to 0b1110 (ALways) to distinguish between
BL_pred and BLr9_pred.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85297 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
66eeb81868889994314fc49be900868351d6f1a8 27-Oct-2009 Bob Wilson <bob.wilson@apple.com> Do not clear the "S" bit for RSCri and RSCrs. They inherit from the "sI"
instruction format that already takes care of setting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85280 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f3b0d1a555eaa46931e4ec1b11e434e8cba2b5d7 27-Oct-2009 Bob Wilson <bob.wilson@apple.com> Do not clear the "S" bit for RSCri and RSCrs. They inherit from the "sI"
instruction format that already takes care of setting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85280 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1bf7944abd6a4205d09769377fbcd9240ab416d8 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Explicitly specify 0b00, i.e, zero rotation, as the rotate filed (Inst{11-10})
for the r/rr fragment of the multiclass AI_unary_rrot/AI_bin_rrot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85271 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
76b39e88e470171292850d8cebc5d54227b43883 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Explicitly specify 0b00, i.e, zero rotation, as the rotate filed (Inst{11-10})
for the r/rr fragment of the multiclass AI_unary_rrot/AI_bin_rrot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85271 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5663974f0438575c0e45d0bcb5ce0391eb5a5f96 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Test commit. Added '.' to the comment line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85255 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6a3b5eec8919da6c45addb6254ffb929af243378 27-Oct-2009 Johnny Chen <johnny.chen@apple.com> Test commit. Added '.' to the comment line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85255 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
8f419e24e13ef1e9090c6e96b18da9bb45338ed1 27-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Correctly align double arguments in the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85235 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
f87611272bd9b97c738e18ed046b38e0b5acdebb 27-Oct-2009 Rafael Espindola <rafael.espindola@gmail.com> Correctly align double arguments in the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85235 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
c1db4e53b11822ff3262d6b741974ef78ce04ea4 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Now VFP instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85186 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
dd22a45acc24ff1e4954fda753c555a6365d1dec 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Now VFP instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85186 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
08540a929721efe42893675068f8a5a1767afad5 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
d3f9bc403327201a4cbb416f6627d1c54c0fcac8 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change ARM asm strings to separate opcode from operands with a tab instead of a space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85178 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
162e30921da0ce1863672d4ca5fef541498fe6be 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change ARM asm strings to separate opcode from operands with a tab instead of a space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85178 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
2aec46ede15c195de15bdafc25e9760b6d9b5c52 26-Oct-2009 Bob Wilson <bob.wilson@apple.com> Try to get ahead of Johnny Chen and pro-actively add some more ARM encoding
bits. Johnny, please review -- I do not have a good track record of getting
these right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85173 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dda9583e5194c08ddd409f3e1c211e17acd6d5b8 26-Oct-2009 Bob Wilson <bob.wilson@apple.com> Try to get ahead of Johnny Chen and pro-actively add some more ARM encoding
bits. Johnny, please review -- I do not have a good track record of getting
these right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85173 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ccd00e369b68760c043986705ca45bb06e233f1e 26-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix ARM encoding typo: Opcod3 is not passed to ASuI parent class.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85169 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
d9ecd3108f32b33e38b5ba0ee3963062d6ecc115 26-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix ARM encoding typo: Opcod3 is not passed to ASuI parent class.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85169 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
3a308521257a4c8fc6e816bdd4218ade39e1edfe 26-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add more ARM instruction encodings for 's' bit set and "rs" register encoding
bits. Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85167 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7e053bb33ca68e815f032fefb9ab7e45a455369f 26-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add more ARM instruction encodings for 's' bit set and "rs" register encoding
bits. Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85167 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ad5789c4fd62e77a8d27c43db98384ed9762dfe7 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependence breaking out into its own class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85127 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
2e7be612d5d0eb42ee3ae08194dbb03b750cc6bf 26-Oct-2009 David Goodwin <david_goodwin@apple.com> Break anti-dependence breaking out into its own class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85127 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
20f9924817aba90dc88c43b247671c6542fb523c 25-Oct-2009 Jim Grosbach <grosbach@apple.com> of -> or

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85065 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.h
dd5694203b8997cedcb40e4f1f12cd8a1999fa89 25-Oct-2009 Jim Grosbach <grosbach@apple.com> of -> or

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85065 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.h
4f9656021235a937c7c874487dbbb5780f3b0427 25-Oct-2009 Jim Grosbach <grosbach@apple.com> 80-column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85064 91177308-0d34-0410-b5e6-96231b3b80d8
humb2RegisterInfo.cpp
f639e9f9e6a9f0315f018ee71f1e5ae744b0c519 25-Oct-2009 Jim Grosbach <grosbach@apple.com> 80-column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85064 91177308-0d34-0410-b5e6-96231b3b80d8
humb2RegisterInfo.cpp
7da9a9ca5eb152a5d570c29b6b873dda02148925 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add ARM getMatchingSuperRegClass to handle S / D / Q cross regclass coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85049 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
4f54c1293af174a8002db20faf7b4f82ba4e8514 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add ARM getMatchingSuperRegClass to handle S / D / Q cross regclass coalescing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85049 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
146c8488a42d45d57f0e25abccb008d7e9b8d135 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Don't forget subreg indices when folding load / store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85048 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ed3ad212ec34fa2866fb70f9e52ddda31032ea3b 25-Oct-2009 Evan Cheng <evan.cheng@apple.com> Don't forget subreg indices when folding load / store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85048 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5a44ef9fd5f7c3964ad79b94778261175dea5c33 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove includes of Support/Compiler.h that are no longer needed after the
VISIBILITY_HIDDEN removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
f5a86f45e75ec744c203270ffa03659eb0a220c1 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove includes of Support/Compiler.h that are no longer needed after the
VISIBILITY_HIDDEN removal.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
492d06efde44a4e38a6ed321ada4af5a75494df6 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
6726b6d75a8b679068a58cb954ba97cf9d1690ba 25-Oct-2009 Nick Lewycky <nicholas@mxc.ca> Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
EONPreAllocPass.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
09549369a6f7976934e21a49befb6d9f46abb56b 24-Oct-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84986 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5a850beb2e3032e6ff3474ce5317f5454060328c 24-Oct-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84986 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
852f708684bb34dea4f22b2c46829c49e671e2b7 24-Oct-2009 Jim Grosbach <grosbach@apple.com> Restrict Thumb1 register allocation to low registers, even for instructions that
can access the hi regs. Our prologue and epilogue code doesn't know how to
properly handle save/restore of the hi regs, so things go badly when we alloc
them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84982 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
2f1abe2dae50e7bc29b20fcad3ea127cdb597532 24-Oct-2009 Jim Grosbach <grosbach@apple.com> Restrict Thumb1 register allocation to low registers, even for instructions that
can access the hi regs. Our prologue and epilogue code doesn't know how to
properly handle save/restore of the hi regs, so things go badly when we alloc
them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84982 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
db980fa1680f4a52fbd9c940284df543fcac97b1 24-Oct-2009 Jim Grosbach <grosbach@apple.com> FIXME no longer applies. R12 and R3 are available for allocation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84977 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
7388037dd15b13bc5705dee6ca85d5aacced5ce4 24-Oct-2009 Jim Grosbach <grosbach@apple.com> FIXME no longer applies. R12 and R3 are available for allocation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84977 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
e56e4a63f19ea3b7e40d84704d9b066698722db6 23-Oct-2009 David Goodwin <david_goodwin@apple.com> Allow the target to select the level of anti-dependence breaking that should be performed by the post-RA scheduler. The default is none.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84911 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
4c3715c2e5e17d7216a96ac2baf9720630f04408 23-Oct-2009 David Goodwin <david_goodwin@apple.com> Allow the target to select the level of anti-dependence breaking that should be performed by the post-RA scheduler. The default is none.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84911 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
df6a663b5b5a592c4dffdea732db0fe0d1453e14 22-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert 84843. Evan, this was breaking some of the if-conversion tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84868 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
bac6ed4ba4b5b912470e3c48f86c3e74a2f36d7b 22-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert 84843. Evan, this was breaking some of the if-conversion tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84868 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
2147b5787db9e84e22c5d008db703ddce3ae9d86 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Move if-conversion before post-regalloc scheduling so the predicated instruction get scheduled properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84843 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
87689d3b7049ecfa41de24a310bac7365c2dbcde 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Move if-conversion before post-regalloc scheduling so the predicated instruction get scheduled properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84843 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
de6ba0a0863d45638958b1c0e47aab50c9fbaaa0 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Load / store multiple was missing opportunites when the load / store bundles are at the end of the bb. Test case is already in, the bug is exposed by subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84842 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
faf93aa23390389375b8e52f0dd1c3727ed07ee8 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Load / store multiple was missing opportunites when the load / store bundles are at the end of the bb. Test case is already in, the bug is exposed by subsequent commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84842 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
a14a20abbaa4fa993b66ab746dfedad633e3f974 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Trim more includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84832 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
62d1723a9cbce2019aac862f51952a58146a6bf0 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Trim more includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84832 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
6e38eb0b9332d2af9d3d0db0bc94a1fdaa5c709d 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Trim include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84831 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
268c79350e1b5997c92d65b39f6129d85f5925fe 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Trim include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84831 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8776641c8937656b395e6bf9256f90c60c616103 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Don't generate sbfx / ubfx with negative lsb field. Patch by David Conrad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84813 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
8000c6c535c5a1d8515299072b51fd1baa8b632f 22-Oct-2009 Evan Cheng <evan.cheng@apple.com> Don't generate sbfx / ubfx with negative lsb field. Patch by David Conrad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84813 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1190aa49e2e41435881d3a76052a29a2aff9f632 22-Oct-2009 Jim Grosbach <grosbach@apple.com> Missing piece of the ARM frame index post-scavenging conditionalization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84798 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
41fff8c19ab6d8e28f5362481c184ad628f8c704 22-Oct-2009 Jim Grosbach <grosbach@apple.com> Missing piece of the ARM frame index post-scavenging conditionalization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84798 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
86320274fce17431f8ad60ebd9e89c2e7bcacc04 22-Oct-2009 Jim Grosbach <grosbach@apple.com> Conditionalize ARM/T2 frame index post-scavenging while working out fixes
for a few bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84791 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
1d6827bbe947730cb91d68a9fd9c469f7f56a6ae 22-Oct-2009 Jim Grosbach <grosbach@apple.com> Conditionalize ARM/T2 frame index post-scavenging while working out fixes
for a few bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84791 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
2b1ec3887477e72d994e996b7e0422777172b7d0 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Most of the NEON shuffle instructions do not support 64-bit element types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84785 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
20d108140e8a4ba9b5e2dd1662e26e5c2282d567 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Most of the NEON shuffle instructions do not support 64-bit element types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84785 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1afc8e26bf2580d78e824666534049f5693c09df 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
RMAddressingModes.h
RMInstrInfo.td
RMInstrThumb2.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
RMAddressingModes.h
RMInstrInfo.td
RMInstrThumb2.td
e33f252643208755c07a6b43082f20d05b15af42 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix NEON VST2LN instruction encoding.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84767 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b27b51aaa6602a2062ab0f778b87628fb70e0a0b 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix NEON VST2LN instruction encoding.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84767 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e0053d22f825bf4749beaa282a4263e945aebcbc 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert 84732. It was the wrong fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84766 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
407d57489ffea4818e22379ace0bad70ea2fe9f5 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert 84732. It was the wrong fix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84766 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
89ef28530fcc03f47245644eb67085b94efd0bac 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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb2.td
34fdb7750482a92c156acf8a4be9d1550386717c 21-Oct-2009 Chris Lattner <sabre@nondot.org> tidy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.h
1ce75ef5efd6e12ddf62d6f428bf9da960ff7880 21-Oct-2009 Chris Lattner <sabre@nondot.org> tidy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84738 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.h
6a77292423d0cc8955e56147b98b7d39c253eefa 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix some more NEON instruction encoding problems.
Thanks to Johnny Chen for discovering the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84732 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b3c83593608907408c2122d924f52b1dfb653b76 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix some more NEON instruction encoding problems.
Thanks to Johnny Chen for discovering the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84732 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
52e0d9d2677019df9209470c4cfcdc0a69365842 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Leave some NEON instruction encoding bits unspecified instead of setting
a default value of zero. This is important for decoding the instructions.
Patch by Johnny Chen, with some changes from me, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84730 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
507df402b09be986b40251fb83cb0c8a2e586b68 21-Oct-2009 Bob Wilson <bob.wilson@apple.com> Leave some NEON instruction encoding bits unspecified instead of setting
a default value of zero. This is important for decoding the instructions.
Patch by Johnny Chen, with some changes from me, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84730 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
38f422c8143b1a7c99796e40e295c677e11fbff9 21-Oct-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84687 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
a7cc65283af74e8681522d4ede4d7c15d04f58e3 21-Oct-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84687 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
0ea1568b4728e4de08c89594b232fa9fba80b5d4 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Disable by default while debugging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84669 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
3229b0bcf1fe5e9381f306ed30c37cec0377395a 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Disable by default while debugging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84669 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
860507d1bbced055f324e91a18de4f5ddd650a4f 20-Oct-2009 Jim Grosbach <grosbach@apple.com> add cmd line opt to disable frame index reuse for ARM and T2. debug aid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84664 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
18ed9c9a2bd7f1f56129495b499264c58b5cc4f4 20-Oct-2009 Jim Grosbach <grosbach@apple.com> add cmd line opt to disable frame index reuse for ARM and T2. debug aid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84664 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
fdaec7c0cbc5d6abdf7db2561af08f90a9856742 20-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Random #include pruning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84632 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
174101e13a6f24f6f2737e043194f0ffae925bb3 20-Oct-2009 Benjamin Kramer <benny.kra@googlemail.com> Random #include pruning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84632 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6d01a09e9033c335655d9652b6a609e41d4db8c4 20-Oct-2009 Chris Lattner <sabre@nondot.org> implement some more easy hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84614 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
235e2f6a68b5f37d6c1b554330eebc8d32f1aca9 20-Oct-2009 Chris Lattner <sabre@nondot.org> implement some more easy hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84614 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
9ec22035cfa3affa2e5e5a026fe228716831a781 20-Oct-2009 Chris Lattner <sabre@nondot.org> Implement some hooks, make printOperand abort if unknown modifiers are
present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84613 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
bf16faa16a7042c6d899e08730398e7c2e9c0edf 20-Oct-2009 Chris Lattner <sabre@nondot.org> Implement some hooks, make printOperand abort if unknown modifiers are
present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84613 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
6cc1d3464849d68ba734f6ff8f54b934f53e218d 20-Oct-2009 Chris Lattner <sabre@nondot.org> t2MOVi32imm is currently always lowered by the Thumb2ITBlockPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c6b8a9920787505468931e56696cef1245e25913 20-Oct-2009 Chris Lattner <sabre@nondot.org> t2MOVi32imm is currently always lowered by the Thumb2ITBlockPass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84611 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
75b4315d0399ae642397f7deec028adb1802a8bb 20-Oct-2009 Daniel Dunbar <daniel@zuster.org> Wire up the ARM MCInst printer, for llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84600 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
smPrinter/ARMAsmPrinter.cpp
2685a29a8d4ced7791bb671e28f9fe51c74eb3bb 20-Oct-2009 Daniel Dunbar <daniel@zuster.org> Wire up the ARM MCInst printer, for llvm-mc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84600 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
smPrinter/ARMAsmPrinter.cpp
86fc0730e6c0f4c2f6fdb0a9296fa4eb2802ef53 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Now that all ARM subtargets use frame index scavenging, the Thumb1 requires*
functions are not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84587 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
8fa4efeabf705cfc217eb88a67e7398691c76ade 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Now that all ARM subtargets use frame index scavenging, the Thumb1 requires*
functions are not needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84587 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
81d33cdd24ad12950350365eb634134292e357e1 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable post-pass frame index register scavenging for ARM and Thumb2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84585 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
7e831db1d4f5dc51ca6526739cf41e59895c5c20 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable post-pass frame index register scavenging for ARM and Thumb2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84585 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
7960fbe0b2679bda3c6db9ebf0c13d0e0f1f8a3b 20-Oct-2009 Chris Lattner <sabre@nondot.org> lower ARM::MOVi32imm properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
161dcbf79955ed11b6760fda59f1e203380d27c8 20-Oct-2009 Chris Lattner <sabre@nondot.org> lower ARM::MOVi32imm properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84583 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
f5044e84ffc2dfe993b050d96403ec1170645903 20-Oct-2009 Chris Lattner <sabre@nondot.org> add support for external symbols. The mc instprinter can now handle
reasonable code like Codegen/ARM/2009-02-27-SpillerBug.ll, producing
identical output except for superior formatting of constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
292df8eb1f2e8967499161804e85772f5fd3a711 20-Oct-2009 Chris Lattner <sabre@nondot.org> add support for external symbols. The mc instprinter can now handle
reasonable code like Codegen/ARM/2009-02-27-SpillerBug.ll, producing
identical output except for superior formatting of constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84582 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
a2483d54b25eb8f19ca58419b01918eb5a4a0a1c 20-Oct-2009 Chris Lattner <sabre@nondot.org> get fancy: support basic block operands. Yay for jumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
96bc2173bb4909be0058e4eb2171f37a66e361dd 20-Oct-2009 Chris Lattner <sabre@nondot.org> get fancy: support basic block operands. Yay for jumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
37cd7db2c8fa2817637d8b5ecafcc33a167865ed 20-Oct-2009 Chris Lattner <sabre@nondot.org> add supprort for the 'sbit' operand, MOVi apparently has one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
233917c07282564351439df8e7a9c83c9d6c459e 20-Oct-2009 Chris Lattner <sabre@nondot.org> add supprort for the 'sbit' operand, MOVi apparently has one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84577 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
31c1d7b06d5f7ec47ec96d99275faee9624cffd0 20-Oct-2009 Chris Lattner <sabre@nondot.org> add support for instruction predicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
413ae25fb593319caa6e5a16f986863057665331 20-Oct-2009 Chris Lattner <sabre@nondot.org> add support for instruction predicates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84575 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
e4eb7345116dbb08a81742416317b707b6c2cb76 20-Oct-2009 Chris Lattner <sabre@nondot.org> implement printSORegOperand, add lowering for the nasty and despicable MOVi2pieces :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84573 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
017d9478d52e56fd20db29eb40e0665cce9f094c 20-Oct-2009 Chris Lattner <sabre@nondot.org> implement printSORegOperand, add lowering for the nasty and despicable MOVi2pieces :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84573 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
c8d6989f39c90afddab819efd17372519278e71c 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Refs: A8-598.
Leave Inst{11-8}, which represents the starting byte index of the extracted
result in the concatenation of the operands and is left unspecified.

Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84572 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
1fc1dc0682b9e3648acd2e9b3b426db87d9f2dcf 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Refs: A8-598.
Leave Inst{11-8}, which represents the starting byte index of the extracted
result in the concatenation of the operands and is left unspecified.

Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84572 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
77ef7774b592306694272b141712dec57a94caab 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Add missing encoding bits to NLdSt class of instructions.

Patch by Johnny Chen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84570 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
780d207d1c73e53834df9eb9ff0a1b07b235dd04 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Add missing encoding bits to NLdSt class of instructions.

Patch by Johnny Chen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84570 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
aabf5bee0bd2fc12e02937511e4e28d400c8211e 20-Oct-2009 Chris Lattner <sabre@nondot.org> handle addmode4 modifiers, fix a fixme in printRegisterList
by ignoring all implicit regs when lowering.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84566 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMMCInstLower.cpp
306d14f9aa9fe6891f5df447fe9e0a380de02501 20-Oct-2009 Chris Lattner <sabre@nondot.org> handle addmode4 modifiers, fix a fixme in printRegisterList
by ignoring all implicit regs when lowering.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84566 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMMCInstLower.cpp
46999f20018606012039e3fe0861ea8d0a632593 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable allocation of R3 in Thumb1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84563 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMRegisterInfo.td
EADME-Thumb.txt
humb1RegisterInfo.cpp
6009751244909c277e6cee8e74a4ccf1846953bc 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable allocation of R3 in Thumb1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84563 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMRegisterInfo.td
EADME-Thumb.txt
humb1RegisterInfo.cpp
e1ca870b6187d888ca1b83095fc0a37b38a33613 20-Oct-2009 Chris Lattner <sabre@nondot.org> use EmitLabel instead of text emission


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5a207897bc4f267fc32aaba7d0248c9f9edef637 20-Oct-2009 Chris Lattner <sabre@nondot.org> use EmitLabel instead of text emission


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84562 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2743f3605a9fcd16f1045a8d9bcb8950cab0860e 20-Oct-2009 Chris Lattner <sabre@nondot.org> add a twine version of MCContext::GetOrCreateSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84561 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7c5b021793e8c8184c655040ea5e169b55c55063 20-Oct-2009 Chris Lattner <sabre@nondot.org> add a twine version of MCContext::GetOrCreateSymbol.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84561 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4c565d8576a1ceb933301e7437723978ba985553 20-Oct-2009 Chris Lattner <sabre@nondot.org> lower the ARM::CONSTPOOL_ENTRY pseudo op, giving us constant pool entries
like:

@ BB#1:
.align 2
LCPI1_0:
.long L_.str-(LPC0+8)

Note that proper indentation of the label :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84558 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
a70e644820db9c58f201bd27ed3c28f81261a0d9 20-Oct-2009 Chris Lattner <sabre@nondot.org> lower the ARM::CONSTPOOL_ENTRY pseudo op, giving us constant pool entries
like:

@ BB#1:
.align 2
LCPI1_0:
.long L_.str-(LPC0+8)

Note that proper indentation of the label :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84558 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
976a864c9995dced48ffaca18ff68921f0a4d5df 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Adjust the scavenge register spilling to allow the target to choose an
appropriate restore location for the spill as well as perform the actual
save and restore.

The Thumb1 target uses this to make sure R12 is not clobbered while a spilled
scavenger register is live there.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84554 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
d482f55af135081aee7f7ab972bb8973f189c88f 20-Oct-2009 Jim Grosbach <grosbach@apple.com> Adjust the scavenge register spilling to allow the target to choose an
appropriate restore location for the spill as well as perform the actual
save and restore.

The Thumb1 target uses this to make sure R12 is not clobbered while a spilled
scavenger register is live there.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84554 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
817d551945e7ce46b12f8b3d022c7a7a0e90275e 20-Oct-2009 Chris Lattner <sabre@nondot.org> add MCInstLower support for lowering ARM::PICADD, a pseudo op for pic stuffola.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84553 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
4d1522234192704f45dfd2527c2913fa60be616e 20-Oct-2009 Chris Lattner <sabre@nondot.org> add MCInstLower support for lowering ARM::PICADD, a pseudo op for pic stuffola.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84553 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
c8bdad042bc8e9f7c0aad7194ab4c120f38aba01 20-Oct-2009 Chris Lattner <sabre@nondot.org> add register list and hacked up addrmode #4 support, we now get this:

_main:
stmsp! sp!, {r7, lr}
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0, [sp]
ldr r0, LCPI1_0
bl _printf
ldr r0, [sp]
mov sp, r7
ldmsp! sp!, {r7, pc}

Note the unhappy ldm/stm because of modifiers being ignored.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84546 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
e306d8d6cccea7461974cec2b0daa2933867eb22 20-Oct-2009 Chris Lattner <sabre@nondot.org> add register list and hacked up addrmode #4 support, we now get this:

_main:
stmsp! sp!, {r7, lr}
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0, [sp]
ldr r0, LCPI1_0
bl _printf
ldr r0, [sp]
mov sp, r7
ldmsp! sp!, {r7, pc}

Note the unhappy ldm/stm because of modifiers being ignored.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84546 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
f1977ef5f64e12407799dbb7b6c113b4b0567db1 19-Oct-2009 Chris Lattner <sabre@nondot.org> add addrmode2 support, getting us up to:

_main:
stm ,
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0, [sp]
ldr r0, LCPI1_0
bl _printf
ldr r0, [sp]
mov sp, r7
ldm ,



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84543 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
084f87d445620bd63573c0e8d9adf776dc62d87d 19-Oct-2009 Chris Lattner <sabre@nondot.org> add addrmode2 support, getting us up to:

_main:
stm ,
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0, [sp]
ldr r0, LCPI1_0
bl _printf
ldr r0, [sp]
mov sp, r7
ldm ,



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84543 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
9521525ee4beef3f057a4b1921399322c5060f97 19-Oct-2009 Chris Lattner <sabre@nondot.org> add jump tables, constant pools and some trivial global
lowering stuff. We can now compile hello world to:

_main:
stm ,
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0,
ldr r0,
bl _printf
ldr r0,
mov sp, r7
ldm ,

Almost looks like arm code :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84542 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
6f99776f6c1d6cc93a62192099a0fd8cc2cc3a0c 19-Oct-2009 Chris Lattner <sabre@nondot.org> add jump tables, constant pools and some trivial global
lowering stuff. We can now compile hello world to:

_main:
stm ,
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0,
ldr r0,
bl _printf
ldr r0,
mov sp, r7
ldm ,

Almost looks like arm code :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84542 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
ba9c060b0e2a2bc7cadcbc2bff3a8e025f00213d 19-Oct-2009 Chris Lattner <sabre@nondot.org> reduce #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84536 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
8514e21deb12714d84038e6afa1b755a9d335098 19-Oct-2009 Chris Lattner <sabre@nondot.org> reduce #includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84536 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
cc309683cabf05c1ec7175ecdaf5ba97a36fb1cc 19-Oct-2009 Chris Lattner <sabre@nondot.org> add printing support for SOImm operands, getting us to:

_main:
stm ,
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0,



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84535 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
61d35c273e2196c87986829fdadccc7e301fc7a8 19-Oct-2009 Chris Lattner <sabre@nondot.org> add printing support for SOImm operands, getting us to:

_main:
stm ,
mov r7, sp
sub sp, sp, #4
mov r0, #0
str r0,



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84535 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
799e7c15430c30c25ad374e2022c23b88a27a7fe 19-Oct-2009 Chris Lattner <sabre@nondot.org> wire up some basic printOperand goodness, giving us stuff like this before
we abort:

_main:
stm ,
mov r7, sp
sub sp, sp,
mov r0,
str r0,



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84532 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
8bc86cba60fbb35fbfb52cc32b9e451e6b903a27 19-Oct-2009 Chris Lattner <sabre@nondot.org> wire up some basic printOperand goodness, giving us stuff like this before
we abort:

_main:
stm ,
mov r7, sp
sub sp, sp,
mov r0,
str r0,



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84532 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
1526e99433566fb172e9f82340455fbf783963a0 19-Oct-2009 Chris Lattner <sabre@nondot.org> add the files that go with the previous rev


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84531 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
9cf0eb5e58fa42802af7e5776b39909516ca74e7 19-Oct-2009 Chris Lattner <sabre@nondot.org> add the files that go with the previous rev


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84531 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMMCInstLower.cpp
smPrinter/ARMMCInstLower.h
da6d01a3c6e8fcf1685b7903f966ac6c27cd6c62 19-Oct-2009 Chris Lattner <sabre@nondot.org> wire up skeletal support for having llc print instructions
through mcinst lowering -> mcinstprinter, when llc is passed
the -enable-arm-mcinst-printer flag. Currently this
is very "aborty".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84530 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/CMakeLists.txt
97f06937449c593a248dbbb1365e6ae408fb9dec 19-Oct-2009 Chris Lattner <sabre@nondot.org> wire up skeletal support for having llc print instructions
through mcinst lowering -> mcinstprinter, when llc is passed
the -enable-arm-mcinst-printer flag. Currently this
is very "aborty".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84530 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/CMakeLists.txt
fd73ff4241505512fbaba4781c019338774893a7 19-Oct-2009 Chris Lattner <sabre@nondot.org> wire up ARM's printMCInst method. Now llvm-mc should be able to produce
"something" when printing MCInsts, it will just be missing all the
operand info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84528 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6a71afaec18e5bcbdb838a5e094f51e9f8ea864d 19-Oct-2009 Chris Lattner <sabre@nondot.org> wire up ARM's printMCInst method. Now llvm-mc should be able to produce
"something" when printing MCInsts, it will just be missing all the
operand info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84528 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8d01409390c7392f92540fa207556c2acc2ed89b 19-Oct-2009 Chris Lattner <sabre@nondot.org> stub out a minimal ARMInstPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
smPrinter/CMakeLists.txt
fd60382e750c50ddb55485bf2cfcdf8dcbbcfd6b 19-Oct-2009 Chris Lattner <sabre@nondot.org> stub out a minimal ARMInstPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84527 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMInstPrinter.cpp
smPrinter/ARMInstPrinter.h
smPrinter/CMakeLists.txt
1c7f8d32d6edd39000fbb2643828d86d2235b139 19-Oct-2009 Chris Lattner <sabre@nondot.org> simplify code, reducing string thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84521 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b8f64a72d83b26ca29612081f3906272368a3692 19-Oct-2009 Chris Lattner <sabre@nondot.org> simplify code, reducing string thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84521 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d9a6f16cfc733a242378b2bd57f744e46f88fed5 19-Oct-2009 Chris Lattner <sabre@nondot.org> switch hidden gv stubs to use MachineModuleInfoMachO instead of a custom map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84520 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e4d9ea83c0d4bcc535bd978e1afa599eb3ebb893 19-Oct-2009 Chris Lattner <sabre@nondot.org> switch hidden gv stubs to use MachineModuleInfoMachO instead of a custom map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84520 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5212138dbd0f9b3f1b0ce4db245fc43f7e29b242 19-Oct-2009 Chris Lattner <sabre@nondot.org> use MachineModuleInfoMachO for non-lazy gv stubs instead of a private map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84519 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b0f294c14b4e7098e5170ecfd528bcc9682ce0c7 19-Oct-2009 Chris Lattner <sabre@nondot.org> use MachineModuleInfoMachO for non-lazy gv stubs instead of a private map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84519 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
14f3c57043c80ba21e32c04f4b911872a154fc86 19-Oct-2009 Chris Lattner <sabre@nondot.org> remove dead map


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84513 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ee8b32981ea70e6751dea1e2bfdb8320ca859bf7 19-Oct-2009 Chris Lattner <sabre@nondot.org> remove dead map


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84513 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
882baf592d34dab3679b411d457b5a36f6b53a22 19-Oct-2009 Chris Lattner <sabre@nondot.org> don't bother trying to avoid emitting redundant constant pool alignment directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84512 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a10343f0393d76c78e4b34a77c70eff7198ed52e 19-Oct-2009 Chris Lattner <sabre@nondot.org> don't bother trying to avoid emitting redundant constant pool alignment directives.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84512 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
fe284f7efed56c46bae93eb3980924544ec9f513 19-Oct-2009 Chris Lattner <sabre@nondot.org> emit .subsections_via_symbols through MCStreamer instead of textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
74cd3b7ceb61b9335fbed1a124324fffd96ded6a 19-Oct-2009 Chris Lattner <sabre@nondot.org> emit .subsections_via_symbols through MCStreamer instead of textually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84509 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b8db78262d2760d34ef451cdde7b20b9177a2f0e 19-Oct-2009 Chris Lattner <sabre@nondot.org> cleanup doFinalization -> EmitEndOfAsmFile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84508 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4a071d667d995b00e7853243ff9c7c1269324478 19-Oct-2009 Chris Lattner <sabre@nondot.org> cleanup doFinalization -> EmitEndOfAsmFile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84508 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
174e2cf99df2011a0d56e96dcdb32c1ccaf4f464 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> -Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed
stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1 cannot
move above a store of spill slot #2.
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84424 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ff89dcb06fbd103373436e2d0ae85f252fae2254 18-Oct-2009 Evan Cheng <evan.cheng@apple.com> -Revert parts of 84326 and 84411. Distinquishing between fixed and non-fixed
stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1 cannot
move above a store of spill slot #2.
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84424 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5505bc1c26d335e9a0f22f2c55fcf7544037b2d9 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84326 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
491f54f1fd700204db0a19efde0cc2627641d711 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Distinquish stack slots from other stack objects. They (and fixed objects) get FixedStack PseudoSourceValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84326 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1f99657b2abd791d220018261e21d9f4008708b4 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Revert 84315 for now. Re-thinking the patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84321 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
6553155172a2e74feff1253837daa608123de54a 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Revert 84315 for now. Re-thinking the patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84321 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
77e61b46fce5e165ecfedb5666c43b3d2c1dc971 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Rename getFixedStack to getStackObject. The stack objects represented are not
necessarily fixed. Only those will negative frame indices are "fixed."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84315 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
bf125583f8bd8196a34921276add7f304b7c1433 17-Oct-2009 Evan Cheng <evan.cheng@apple.com> Rename getFixedStack to getStackObject. The stack objects represented are not
necessarily fixed. Only those will negative frame indices are "fixed."


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84315 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
86e24b01e3cfdd1d2f533df99be1824515b677c5 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change createPostRAScheduler so it can be turned off at llc -O1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84273 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
fa16354e0370fe884830286923352268b036737d 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change createPostRAScheduler so it can be turned off at llc -O1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84273 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
1302f57663145190ad603a572aeeadb066def866 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> I am no spelling bee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84250 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
b46aea10324263dd63492fc5c1d54800e980c8f8 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> I am no spelling bee.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84250 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
cae7b0e6150f2fe795277324bb7107dba39a78e7 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Enable post-alloc scheduling for all ARM variants except for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84249 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
d3dd50fec00fbbb76edbfaff4d613f1248d21c9e 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Enable post-alloc scheduling for all ARM variants except for Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84249 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
11891b19a322b2bf91180b7be3d322a280af5f8c 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84246 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
fee0c1074c68a61d15899fb8cb31f1902fa9e509 16-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84246 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
05538f12cafe7defa2e94364b8f0efba3ace7483 16-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix more NEON instruction encodings.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84243 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1dd43484088d2189ad7eb27ab702e98d4885c123 16-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix more NEON instruction encodings.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84243 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8ab1f273514d6d87fa421c9bc8fc819615707dbf 16-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert svn r80498 and replace it with a different solution. The only problem
I can see with the original code was that I forgot that this runs after
type legalization and hence the result type will always be i32. (Custom
legalization of EXTRACT_VECTOR_ELT is only enabled for vector types with
8- and 16-bit elements.)

Regarding the FIXME comment: any information about sign and zero-extension
should be captured by separate extension operations. The DAG combiner should
handle those to produce either VGETLANEu or VGETLANEs, and that seems to be
working now. If there are cases that we're missing, let me know.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84218 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
934f98b5368c10a77599dab7dd6ec969c8b2f385 16-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revert svn r80498 and replace it with a different solution. The only problem
I can see with the original code was that I forgot that this runs after
type legalization and hence the result type will always be i32. (Custom
legalization of EXTRACT_VECTOR_ELT is only enabled for vector types with
8- and 16-bit elements.)

Regarding the FIXME comment: any information about sign and zero-extension
should be captured by separate extension operations. The DAG combiner should
handle those to produce either VGETLANEu or VGETLANEs, and that seems to be
working now. If there are cases that we're missing, let me know.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84218 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
28d7ecb80c7a6a39039e73f1f3aa8ad91bf05bd3 16-Oct-2009 Sandeep Patel <deeppatel1987@gmail.com> Branches must be the last instruction in a Thumb2 IT block. Approved by Evan Cheng.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84212 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
452b54a8aebee45088b2157a66ae0f9f6a9088fa 16-Oct-2009 Sandeep Patel <deeppatel1987@gmail.com> Branches must be the last instruction in a Thumb2 IT block. Approved by Evan Cheng.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84212 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
85f30d7362b1e8543f1988d02548e6f00949c3fe 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix encoding bits for N3VLInt3_QHS multiclass with 8-bit elements.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84206 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6f122625dde52dd112ca18cc016e4846734b9a4f 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix encoding bits for N3VLInt3_QHS multiclass with 8-bit elements.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84206 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
e6e22392e070a3159fe844aefedbdaad6973e423 15-Oct-2009 Kevin Enderby <enderby@apple.com> Fix ARM memory operand parsing of post indexing with just a base register, that
is just "[Rn]" and no tailing comma with an offset, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84205 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e2a98dd2a4f007d5d9d3c71460cfbe0a825b8993 15-Oct-2009 Kevin Enderby <enderby@apple.com> Fix ARM memory operand parsing of post indexing with just a base register, that
is just "[Rn]" and no tailing comma with an offset, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84205 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
7bfd59f06e8d1e8242d8775fe4e15a792394c698 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a potential performance problem in placing ARM constant pools.
In the case where there are no good places to put constants and we fall back
upon inserting unconditional branches to make new blocks, allow all constant
pool references in range of those blocks to put constants there, even if that
means resetting the "high water marks" for those references. This will still
terminate because you can't keep splitting blocks forever, and in the bad
cases where we have to split blocks, it is important to avoid splitting more
than necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84202 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b923953733ee6b0f477cd767dcc16f94a0966158 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a potential performance problem in placing ARM constant pools.
In the case where there are no good places to put constants and we fall back
upon inserting unconditional branches to make new blocks, allow all constant
pool references in range of those blocks to put constants there, even if that
means resetting the "high water marks" for those references. This will still
terminate because you can't keep splitting blocks forever, and in the bad
cases where we have to split blocks, it is important to avoid splitting more
than necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84202 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
804b26d218ceff164c578c1fdbf8c2a14d52aaf8 15-Oct-2009 Kevin Enderby <enderby@apple.com> More bits of the ARM target assembler for llvm-mc, code added to parse labels
as expressions, code for parsing a few arm specific directives (still needs
the MCStreamer calls for these). Some clean up of the operand parsing code
and adding some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84201 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
515d509360d81946247fd0f937034cdf1f237c72 15-Oct-2009 Kevin Enderby <enderby@apple.com> More bits of the ARM target assembler for llvm-mc, code added to parse labels
as expressions, code for parsing a few arm specific directives (still needs
the MCStreamer calls for these). Some clean up of the operand parsing code
and adding some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84201 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
57d88c38edb3667eb54c26571bcee5d57ae8ef12 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Be smarter about reusing constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84173 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
549dda9d82a5ec0a0cbf429a18d33a8e66062424 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Be smarter about reusing constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84173 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a9cdce8ba7928ac8a5176243fbf847415130f644 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix another problem with ARM constant pools. Radar 7303551.
When ARMConstantIslandPass cannot find any good locations (i.e., "water") to
place constants, it falls back to inserting unconditional branches to make a
place to put them. My recent change exposed a problem in this area. We may
sometimes append to the same block more than one unconditional branch. The
symptoms of this are that the generated assembly has a branch to an undefined
label and running llc with -debug will cause a seg fault.

This happens more easily since my change to prevent CPEs from moving from
lower to higher addresses as the algorithm iterates, but it could have
happened before. The end of the block may be in range for various constant
pool references, but the insertion point for new CPEs is not right at the end
of the block -- it is at the end of the CPEs that have already been placed
at the end of the block. The insertion point could be out of range. When
that happens, the fallback code will always append another unconditional
branch if the end of the block is in range.

The fix is to only append an unconditional branch if the block does not
already end with one. I also removed a check to see if the constant pool load
instruction is at the end of the block, since that is redundant with
checking if the end of the block is in-range.

There is more to be done here, but I think this fixes the immediate problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84172 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
36fa5321bacf351f47d6193f56c464e6ab93b934 15-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix another problem with ARM constant pools. Radar 7303551.
When ARMConstantIslandPass cannot find any good locations (i.e., "water") to
place constants, it falls back to inserting unconditional branches to make a
place to put them. My recent change exposed a problem in this area. We may
sometimes append to the same block more than one unconditional branch. The
symptoms of this are that the generated assembly has a branch to an undefined
label and running llc with -debug will cause a seg fault.

This happens more easily since my change to prevent CPEs from moving from
lower to higher addresses as the algorithm iterates, but it could have
happened before. The end of the block may be in range for various constant
pool references, but the insertion point for new CPEs is not right at the end
of the block -- it is at the end of the CPEs that have already been placed
at the end of the block. The insertion point could be out of range. When
that happens, the fallback code will always append another unconditional
branch if the end of the block is in range.

The fix is to only append an unconditional branch if the block does not
already end with one. I also removed a check to see if the constant pool load
instruction is at the end of the block, since that is redundant with
checking if the end of the block is in-range.

There is more to be done here, but I think this fixes the immediate problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84172 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
d4897545e4e21d0dbdc788c5576f4b80071a95d8 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix instruction encoding bits for NEON VPADAL.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84146 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b3642dcceeff3ff4045271c87105b5bfbf44c489 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix instruction encoding bits for NEON VPADAL.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84146 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
4a567357c7179b5c3c39f21d774578f362a4c033 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Remove unused variables to fix build warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84144 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
681a2ad40357fbf0415977d76323e9a03ada84ae 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Remove unused variables to fix build warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84144 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d9921a052e234642eb7db4f77ae777123d73b62f 14-Oct-2009 Jim Grosbach <grosbach@apple.com> Inst{11-8} for vshl should be 0b0101, not 0b1111.
Refs: A7-17 & A8-750.

Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84131 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b9d319b5854640b363d332ce9840026900b9f663 14-Oct-2009 Jim Grosbach <grosbach@apple.com> Inst{11-8} for vshl should be 0b0101, not 0b1111.
Refs: A7-17 & A8-750.

Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84131 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
cfb46c5a762f118fbe73fb50eec5be56a1fcd247 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Set instruction encoding bits 4 and 7 for ARM register-register and
register-shifted-register instructions. Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84124 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
8e86b5195bca5a7301bb3d633b56b1d1f58221d9 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Set instruction encoding bits 4 and 7 for ARM register-register and
register-shifted-register instructions. Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84124 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e4ff1a619f2a68222def8d30406ceb9f768ad410 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor code to select NEON VST intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
24f995d84b1fcb556f07ee40983f287cd13b2aa2 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor code to select NEON VST intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5ccc85a153111ff9f03ec36b0f78ffdd27e3ff09 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor code to select NEON VLD intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84117 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3e36f13ba738d9ab9123aadd486ab919f517387f 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor code to select NEON VLD intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84117 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
10c6f85c9ba78275c9f6de2ac9ea136200a09d10 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> More refactoring. NEON vst lane intrinsics can share almost all the code for
vld lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84110 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
9649344cb5e919f0d251c8b5b966259f3e7445bb 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> More refactoring. NEON vst lane intrinsics can share almost all the code for
vld lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84110 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
98e68ba7ff1b12e185eb7fa677683cc00e1e97e1 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor code for selecting NEON load lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84109 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a7c397c9c30df38901751abdcfa2c1c5e310d2e5 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> Refactor code for selecting NEON load lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84109 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
404500c0966b24922b62c6718713afdee5b88b7e 14-Oct-2009 Kevin Enderby <enderby@apple.com> Correct comment about ARM immediates using '#' not '$' and TODO for modifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84055 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
079469f649d8da3923b9f747d7062c84e01cc4ae 14-Oct-2009 Kevin Enderby <enderby@apple.com> Correct comment about ARM immediates using '#' not '$' and TODO for modifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84055 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
31a5af59b207ac90e75ddd830ff6c2e916b4a7ae 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> More Neon clean-up: avoid the need for custom-lowering vld/st-lane intrinsics
by creating TargetConstants during instruction selection instead of during
legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84042 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
e72142aa5b8bcd9266a5a2f88e4e227dd178f233 14-Oct-2009 Bob Wilson <bob.wilson@apple.com> More Neon clean-up: avoid the need for custom-lowering vld/st-lane intrinsics
by creating TargetConstants during instruction selection instead of during
legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84042 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
4d4c8b383ab4e089c9662cd3f6a0afdb144ecf6f 14-Oct-2009 Kevin Enderby <enderby@apple.com> More bits of the ARM target assembler for llvm-mc to parse immediates.
Also fixed a couple of coding style things that crept in. And added more
to the temporary hacked up ARMAsmParser::MatchInstruction() method for testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84040 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
cfe072401658bbe9336b200b79526b65c5213b74 14-Oct-2009 Kevin Enderby <enderby@apple.com> More bits of the ARM target assembler for llvm-mc to parse immediates.
Also fixed a couple of coding style things that crept in. And added more
to the temporary hacked up ARMAsmParser::MatchInstruction() method for testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84040 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
5f742e55de300e938ae76643a8e640913fc7a40e 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> NEON VLD/VST are now fully implemented. For operations that expand to
multiple instructions, the expansion is done during selection so there is
no need to do anything special during legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84036 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
73d64a6fd3294b2b265d4ca7b5c9f76989459fb7 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> NEON VLD/VST are now fully implemented. For operations that expand to
multiple instructions, the expansion is done during selection so there is
no need to do anything special during legalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84036 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6855b2222d78ecf39a0855bec858c8c395e04538 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revise ARM inline assembly memory operands to require the memory address to
be in a register. The previous use of ARM address mode 2 was completely
arbitrary and inappropriate for Thumb. Radar 7137468.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84022 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
smPrinter/ARMAsmPrinter.cpp
765cc0b9d59bf63dfcb02e3d126ea1c63e16f86f 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Revise ARM inline assembly memory operands to require the memory address to
be in a register. The previous use of ARM address mode 2 was completely
arbitrary and inappropriate for Thumb. Radar 7137468.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84022 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
smPrinter/ARMAsmPrinter.cpp
f7a7fc9585a5dc3afa894b6e5bdfd26fd17eca38 13-Oct-2009 Sandeep Patel <deeppatel1987@gmail.com> Fix method name in comment, per Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84017 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4e1ed88026dadbb508930b3dd30f84bffd01da7e 13-Oct-2009 Sandeep Patel <deeppatel1987@gmail.com> Fix method name in comment, per Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84017 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bb4648a936134616f3bef1097520afd80b496970 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
ce7c9ebddf4e1742e71087fae5abf239061475f2 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add some ARM instruction encoding bits.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83983 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5361cd2c7d2cd83ac3668bb553a4e63c282d05a2 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add some ARM instruction encoding bits.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83983 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f0976f41d9100957bf1eca01436dc8546d95ee39 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix regression introduced by r83894.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83982 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
4796ba2e701f302f9628af6e2fb4b491dc2e4b94 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix regression introduced by r83894.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83982 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b072c755593e95a598b683c12be63c359e274c02 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a tab. Thanks to Johnny Chen for pointing it out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83973 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a7fcb9b840775a8b45b63d597b88f8f05b12b962 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a tab. Thanks to Johnny Chen for pointing it out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83973 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7bbbc7d65719ff18592a21cb2246e7fa68e213d4 13-Oct-2009 Kevin Enderby <enderby@apple.com> Fix two warnings about unused variables that are only used in assert() calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83917 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
6bd266e56799703cd2773cadc4da8bc3c5107fdf 13-Oct-2009 Kevin Enderby <enderby@apple.com> Fix two warnings about unused variables that are only used in assert() calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83917 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
1449b8594c0a82f80d198ddadda5d23795cad922 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Delete a comment that makes no sense to me. The statement that moving a CPE
before its reference is only supported on ARM has not been true for a while.
In fact, until recently, that was only supported for Thumb. Besides that,
CPEs are always a multiple of 4 bytes in size, so inserting a CPE should have
no effect on Thumb alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83916 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
af4b7352193e4a024d4a4e87cac1ba1589e4de57 13-Oct-2009 Bob Wilson <bob.wilson@apple.com> Delete a comment that makes no sense to me. The statement that moving a CPE
before its reference is only supported on ARM has not been true for a while.
In fact, until recently, that was only supported for Thumb. Besides that,
CPEs are always a multiple of 4 bytes in size, so inserting a CPE should have
no effect on Thumb alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83916 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f5286ef78bba77aed8e21685baa8567e63316937 13-Oct-2009 Kevin Enderby <enderby@apple.com> Fix a problem in the code where ARMAsmParser::ParseShift() second argument
should have been a pointer to a reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83915 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
9d36962ab66f728291f0921b3b4851a37d303e95 13-Oct-2009 Kevin Enderby <enderby@apple.com> Fix a problem in the code where ARMAsmParser::ParseShift() second argument
should have been a pointer to a reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83915 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
96b37b64f271bec34a6a650fa875acff17cb53d5 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Change CreateNewWater method to return NewMBB by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83905 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
757652c5ba820bbea75d8713d7bf3749e4113778 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Change CreateNewWater method to return NewMBB by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83905 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
e5001730bd4aa9b23daa7861ea3ef08c35e77777 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Last week, ARMConstantIslandPass was failing to converge for the
MultiSource/Benchmarks/MiBench/automotive-susan test. The failure has
since been masked by an unrelated change (just randomly), so I don't have
a testcase for this now. Radar 7291928.

The situation where this happened is that a constant pool entry (CPE) was
placed at a lower address than the load that referenced it. There were in
fact 2 CPEs placed at adjacent addresses and referenced by 2 loads that were
close together in the code. The distance from the loads to the CPEs was
right at the limit of what they could handle, so that only one of the CPEs
could be placed within range. On every iteration, the first CPE was found
to be out of range, causing a new CPE to be inserted. The second CPE had
been in range but the newly inserted entry pushed it too far away. Thus the
second CPE was also replaced by a new entry, which in turn pushed the first
CPE out of range. Etc.

Judging from some comments in the code, the initial implementation of this
pass did not support CPEs placed _before_ their references. In the case
where the CPE is placed at a higher address, the key to making the algorithm
terminate is that new CPEs are only inserted at the end of a group of adjacent
CPEs. This is implemented by removing a basic block from the "WaterList"
once it has been used, and then adding the newly inserted CPE block to the
list so that the next insertion will come after it. This avoids the ping-pong
effect where CPEs are repeatedly moved to the beginning of a group of
adjacent CPEs. This does not work when going backwards, however, because the
entries at the end of an adjacent group of CPEs are closer than the CPEs
earlier in the group.

To make this pass terminate, we need to maintain a property that changes can
only happen in some sort of monotonic fashion. The fix used here is to require
that the CPE for a particular constant pool load can only move to lower
addresses. This is a very simple change to the code and should not cause
any significant degradation in the results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83902 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f98032ef64a777fe63d390539f901d7d6d4e868c 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Last week, ARMConstantIslandPass was failing to converge for the
MultiSource/Benchmarks/MiBench/automotive-susan test. The failure has
since been masked by an unrelated change (just randomly), so I don't have
a testcase for this now. Radar 7291928.

The situation where this happened is that a constant pool entry (CPE) was
placed at a lower address than the load that referenced it. There were in
fact 2 CPEs placed at adjacent addresses and referenced by 2 loads that were
close together in the code. The distance from the loads to the CPEs was
right at the limit of what they could handle, so that only one of the CPEs
could be placed within range. On every iteration, the first CPE was found
to be out of range, causing a new CPE to be inserted. The second CPE had
been in range but the newly inserted entry pushed it too far away. Thus the
second CPE was also replaced by a new entry, which in turn pushed the first
CPE out of range. Etc.

Judging from some comments in the code, the initial implementation of this
pass did not support CPEs placed _before_ their references. In the case
where the CPE is placed at a higher address, the key to making the algorithm
terminate is that new CPEs are only inserted at the end of a group of adjacent
CPEs. This is implemented by removing a basic block from the "WaterList"
once it has been used, and then adding the newly inserted CPE block to the
list so that the next insertion will come after it. This avoids the ping-pong
effect where CPEs are repeatedly moved to the beginning of a group of
adjacent CPEs. This does not work when going backwards, however, because the
entries at the end of an adjacent group of CPEs are closer than the CPEs
earlier in the group.

To make this pass terminate, we need to maintain a property that changes can
only happen in some sort of monotonic fashion. The fix used here is to require
that the CPE for a particular constant pool load can only move to lower
addresses. This is a very simple change to the code and should not cause
any significant degradation in the results.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83902 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
31d9eb561b52a70ac181ad610115e35ab86298dc 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Another minor clean-up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83897 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
32c50e8f9920bb7835eb42926945c9a1e6385de5 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Another minor clean-up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83897 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
8454df9db700b63793f4f73f3df6e69d4a54572a 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Remove redundant parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83894 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
d637c1a4955c750b64414c4429ec707be2d8b990 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Remove redundant parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83894 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
93312097c5c22dac9e6fa9b2e63ab29708f51ba0 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Use early exit to reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83874 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
3b7573517ccd0f8f9e4bc64cf1923bae68e40d3f 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Use early exit to reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83874 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
688468aa23fe332955436b2acd062fd9bf289f8d 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Change to return a value by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83873 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9d16f2c0baf91445764751b7c92cd1ff6d6d43f8 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Change to return a value by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83873 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b15413cce529d24d6ae4e52116eac7c56f042023 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a typedef for an iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83872 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
034de5f65f9139954cb01d94eaebbaefd294946e 12-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a typedef for an iterator.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83872 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
78e1a77cde46b7ba5de7d39b3a6db14e058f897c 10-Oct-2009 Dan Gohman <gohman@apple.com> Mark the LDR instruction with isReMaterializable, as it is rematerializable
when loading from an invariant memory location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83688 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
59ac57153be779fb2eaa1f2af2ad5fa05dde730b 10-Oct-2009 Dan Gohman <gohman@apple.com> Mark the LDR instruction with isReMaterializable, as it is rematerializable
when loading from an invariant memory location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83688 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
60bc0274f8e3cc55dd9332c4f404afee1c675b95 09-Oct-2009 Kevin Enderby <enderby@apple.com> Added another bit of the ARM target assembler to llvm-mc to parse register
lists. Changed ARMAsmParser::MatchRegisterName to return -1 instead of 0 on
errors so 0-15 values could be returned as register numbers. Also added the
rest of the arm register names to the currently hacked up version to allow more
testing. Some changes to ARMAsmParser::ParseOperand to give different errors
for things not yet supported and some additions to the hacked
ARMAsmParser::MatchInstruction to allow more testing for now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83673 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
d7894f105a3c397a3d7f5c5136eee39f5865e64b 09-Oct-2009 Kevin Enderby <enderby@apple.com> Added another bit of the ARM target assembler to llvm-mc to parse register
lists. Changed ARMAsmParser::MatchRegisterName to return -1 instead of 0 on
errors so 0-15 values could be returned as register numbers. Also added the
rest of the arm register names to the currently hacked up version to allow more
testing. Some changes to ARMAsmParser::ParseOperand to give different errors
for things not yet supported and some additions to the hacked
ARMAsmParser::MatchInstruction to allow more testing for now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83673 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
c7692e0185faaab4a68386afc362d95be591b455 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst4lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83600 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
5631139a699578e3281a1ae09f2cdf4d332179c8 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst4lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83600 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
dbffb21337be67595a47585d60e8dda083038601 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst3lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83598 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
8cdb26968669692e88ee0e4a444032bbd52da0d2 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst3lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83598 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
18e94a7a1d02201407370ce9f73be9798bd4b7cc 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst2lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83596 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
c5c6edb74f5586f2436d8aafe638703ab56dd5f1 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst2lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83596 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
7a8c6dfd8b82ead296bebcb567580cf08c5d449d 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld4lane intrinsics with 128-bit vectors.
Also fix some copy-and-paste errors in previous changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83590 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
62e053e5a1e36ce8b59bf3311e84b619356da96c 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld4lane intrinsics with 128-bit vectors.
Also fix some copy-and-paste errors in previous changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83590 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
47a1ff630bcc4c6ad5fc198b0b1fe9f7cd07a85c 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld3lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83585 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
0bf7d998b4e8a3edd2495bae6c35083a535b461a 09-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld3lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83585 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
9c196ef25d4afaf139cf282e439df7afa2c4e6ad 08-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Use lower16 / upper16 imm modifiers to asmprint 32-bit imms splitted via movt/movw pair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
632606c724ebcfa6a9da71c443151e7a65829c99 08-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Use lower16 / upper16 imm modifiers to asmprint 32-bit imms splitted via movt/movw pair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5687d8a26c08d089c60df2c92d048ab85bcdb2b9 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld2lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83568 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
30aea9d96ef8226749ff1eb73c2f3cb19668e077 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld2lane intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83568 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
5642cc9b885987140f2f385af99fd6ad3ff47845 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Clean up some unnecessary initializations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83566 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
cd7e327cdf6f3b6171905dec615cc7bf3b24f1ac 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Clean up some unnecessary initializations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83566 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
67902736c48e80706297e3141221c4951a15dabc 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Clean up a comment (indentation was wrong).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83565 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
af4a891273b82798e97ad3e59359d93f3c8d6c19 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Clean up a comment (indentation was wrong).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83565 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
94b5d43b15023b4757c1b08838104c6a14438e45 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst4 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83526 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
deb3141cf522cdd9f9330c8100280031ba5e0d9d 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst4 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83526 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
508ceee8273f7a4f579c60fd9e1ad2fee9f40241 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Cleanup up unused R3LiveIn tracking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83522 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
humb1RegisterInfo.cpp
1f30dcbd8dcf18cabb4be780fcf492869d5dcab9 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Cleanup up unused R3LiveIn tracking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83522 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
humb1RegisterInfo.cpp
4820d98aaad1442bfb4efb104a2ac91b64bc3a36 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Re-enable register scavenging in Thumb1 by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83521 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
65c58daa8b8985d2116216043103009815a55e77 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Re-enable register scavenging in Thumb1 by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83521 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
7200e5d850492bc316cf1cef72cfff01fb88fdb5 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst3 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83518 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
5adf60c03bcc72dd5462bdc4a5c72c1247a7879d 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst3 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83518 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
dd43d1eec2d82eb61329b5940fc2c7f4165cd9ed 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst2 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83513 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
24e04c535f528c27955664a8f4524ae33213e453 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst2 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83513 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
7ce4750b6014e38275dcf2878b6ca15a7111ac6d 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld4 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83508 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
0ea38bb93955a64477a66f9adca7eadab6635050 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld4 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83508 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
da8caccf975ceec8914586e3f0ae7e46a228e640 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld3 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83506 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
c67160c010b9aae5e7f912eaeee42cd0da6880c5 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld3 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83506 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
8c3be587276cc116d834bf213f80149e40add2b9 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld2 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83502 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
a4288080e62c6ecf94ebeafe84ab33a3b627d209 08-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld2 intrinsics with <1 x i64> vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83502 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
c7d2c5396f2876ed2ac8e5c3b65291a769a90767 08-Oct-2009 Jim Grosbach <grosbach@apple.com> reverting thumb1 scavenging default due to test failure while I figure out what's up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83501 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
9f3a559dff691bc1ed85089cb0870cf30a4a2d96 08-Oct-2009 Jim Grosbach <grosbach@apple.com> reverting thumb1 scavenging default due to test failure while I figure out what's up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83501 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
1d57f4b9260b0e0133e79e4fad874dfaf1739975 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable thumb1 register scavenging by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83494 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
ec1434dd8970f9bcd410ef6ffaa2d440995cb18b 08-Oct-2009 Jim Grosbach <grosbach@apple.com> Enable thumb1 register scavenging by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83494 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
humb1RegisterInfo.h
b172116673cb33453971b6308941bc7cbd2f624c 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add some instruction encoding bits for NEON load/store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83490 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
b07c1716248cebf00b37ed5d89581369b1191a87 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add some instruction encoding bits for NEON load/store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83490 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
931c76b4c08ea058d90f9fd5f5a59aea52010c0d 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst4 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83486 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
63c906343468dca4ac67ed85242d5a9fee95d57f 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst4 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83486 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
2a85bd13a0155cef6081a7f78e4b59c70ba8f5b4 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst3 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
66a70639dae4cbead3f9799406d98cb4293f2af5 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst3 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
5fa67d35b87341e9990fb7b3a26e3de7e76c0e64 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst2 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83482 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
d285575f87f1315a38bd23f89e75a776e102cd39 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vst2 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83482 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
004a2e16d3ac693fad8bbd5a6798406653f672ba 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld4 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
7708c22baafcbfa407fc3441d73f6f3533ccf455 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld4 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
308327301d99c310723d2ac204dc1fc513f89243 07-Oct-2009 Kevin Enderby <enderby@apple.com> Add another bit of the ARM target assembler to llvm-mc to parse registers
with writeback, things like "sp!", etc. Also added some more stuff to the
temporarily hacked methods ARMAsmParser::MatchRegisterName and
ARMAsmParser::MatchInstruction to allow more parser testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83477 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
99e6d4e8392497d950d48b03f45c79b7dd131327 07-Oct-2009 Kevin Enderby <enderby@apple.com> Add another bit of the ARM target assembler to llvm-mc to parse registers
with writeback, things like "sp!", etc. Also added some more stuff to the
temporarily hacked methods ARMAsmParser::MatchRegisterName and
ARMAsmParser::MatchInstruction to allow more parser testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83477 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a8b4362ee4e3a8442c18c5c951594a018cb7a682 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld3 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83471 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
ff8952e8a9dc01bba9605e90bd3b823d3cf43619 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld3 intrinsics with 128-bit vectors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83471 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
520f5611addbb5e14f6c0140155c94690e421414 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Rearrange code for selecting vld2 intrinsics. No functionality change.
This is just to be more consistent with the forthcoming code for vld3/4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83470 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
228c08b8ddff75a9d5d617ab12eb683a25fe17a8 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Rearrange code for selecting vld2 intrinsics. No functionality change.
This is just to be more consistent with the forthcoming code for vld3/4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83470 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b67fb2b7be5c577e88578d240998a7ed3bf210db 07-Oct-2009 Jim Grosbach <grosbach@apple.com> Add register-reuse to frame-index register scavenging. When a target uses
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.

eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.

ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
b58f498f7502e7e1833decbbbb4df771367c7341 07-Oct-2009 Jim Grosbach <grosbach@apple.com> Add register-reuse to frame-index register scavenging. When a target uses
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.

eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.

ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
f68604a29b3058546a6ec8d7f244523d59893a3b 07-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Add PseudoSourceValues for constpool stuff on ELF (Darwin should use something similar)
and register spills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83435 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelLowering.cpp
249fb339ad9d4b921a04de738b9c67d27e328bb7 07-Oct-2009 Anton Korobeynikov <asl@math.spbu.ru> Add PseudoSourceValues for constpool stuff on ELF (Darwin should use something similar)
and register spills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83435 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelLowering.cpp
91e27daccce0af4bff6f9299fa52c8cbbeab5ce1 07-Oct-2009 Kevin Enderby <enderby@apple.com> Added bits of the ARM target assembler to llvm-mc to parse some load instruction
operands. Some parsing of arm memory operands for preindexing and postindexing
forms including with register controled shifts. This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83424 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
a7ba3a81c008142a91d799e2ec3152cfd6bbb15f 07-Oct-2009 Kevin Enderby <enderby@apple.com> Added bits of the ARM target assembler to llvm-mc to parse some load instruction
operands. Some parsing of arm memory operands for preindexing and postindexing
forms including with register controled shifts. This is a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83424 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
e9829cafca9811fa616f8046ce384b797814fa67 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld2 operations on quad registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83422 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.h
EONPreAllocPass.cpp
3bf12ab860751a55fc8c16517a992497b98be11b 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add codegen support for NEON vld2 operations on quad registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83422 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
RMRegisterInfo.h
EONPreAllocPass.cpp
3360945de1c4c74c224806f22405ad8081b29701 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Use copyRegToReg hook to copy registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83421 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
349d82d40003cb6e6c604c5a447ba692468a50a6 07-Oct-2009 Bob Wilson <bob.wilson@apple.com> Use copyRegToReg hook to copy registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83421 91177308-0d34-0410-b5e6-96231b3b80d8
EONPreAllocPass.cpp
3443c216b30567ecf229ce43fe31ecb60e5e7ed3 06-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83407 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a3e8bf8412481139827b61f83bdd84637af800b8 06-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.
Patch by Johnny Chen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83407 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5fda434b0d4932d63b21ce3b5dd72c18e855da26 06-Oct-2009 Dan Gohman <gohman@apple.com> Instead of printing unnecessary basic block labels as labels in
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.

Also, factor out the relevant code out of all the targets and into
target-independent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e3cc3f3c84abfdf8eb3bd19dfa806ceea49f15d6 06-Oct-2009 Dan Gohman <gohman@apple.com> Instead of printing unnecessary basic block labels as labels in
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.

Also, factor out the relevant code out of all the targets and into
target-independent code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83392 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5450fc15cb5de674d4e5203ab9ace59d3d6c38e5 06-Oct-2009 Devang Patel <dpatel@apple.com> Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83363 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
smPrinter/ARMAsmPrinter.cpp
af0e2726835e096e32c30c1b88cc7a6232a6ef69 06-Oct-2009 Devang Patel <dpatel@apple.com> Update processDebugLoc() so that it can be used to process debug info before and after printing an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83363 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
smPrinter/ARMAsmPrinter.cpp
adf4cf604eeca26d6a854945893fa6c264e02900 06-Oct-2009 Jim Grosbach <grosbach@apple.com> In Thumb1, the register scavenger is not always able to use an emergency
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83336 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
540b05d227a79443b2a7b07d5152a35cb6392abf 06-Oct-2009 Jim Grosbach <grosbach@apple.com> In Thumb1, the register scavenger is not always able to use an emergency
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83336 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
82cdc06a6626e9a9fae300fafaeae9702ffb3808 05-Oct-2009 Chris Lattner <sabre@nondot.org> strength reduce a ton of type equality tests to check the typeid (Through
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83297 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
cf0fe8d813727383d630055bb9d1cde21b00b7e7 05-Oct-2009 Chris Lattner <sabre@nondot.org> strength reduce a ton of type equality tests to check the typeid (Through
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83297 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
8af7b535e3d97a9edb29b0ce3e6c4a4529b081a8 03-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a comment to describe letters used in multiclass name suffixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83257 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
916ac5b0690c529ce9a1a3615d84a48a5c907a69 03-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a comment to describe letters used in multiclass name suffixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83257 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
64c60918f15571fbb4dabdfa074c2bcdc0b9296d 03-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix encoding problem for VMLS instruction.
Thanks to Johnny Chen for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83256 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
8f07b9e8a954c95a42afd4883bc422526b640b8b 03-Oct-2009 Bob Wilson <bob.wilson@apple.com> Fix encoding problem for VMLS instruction.
Thanks to Johnny Chen for pointing this out!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83256 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
6f2bf0bd6f1ff49887d30f3433d05bd906e6b3d3 02-Oct-2009 Evan Cheng <evan.cheng@apple.com> getFunctionAlignment should return log2 alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83242 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
048e36f5369b500c15c7e74933904983724981bc 02-Oct-2009 Evan Cheng <evan.cheng@apple.com> getFunctionAlignment should return log2 alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83242 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
4a6e6dd500a86c44803aa7b1414c8603d9e5c753 02-Oct-2009 Evan Cheng <evan.cheng@apple.com> Forgot about ARM::tPUSH. It also has a new writeback operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83237 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
892597943adc02583af32a86b4289f1fb02d2e4f 02-Oct-2009 Evan Cheng <evan.cheng@apple.com> Forgot about ARM::tPUSH. It also has a new writeback operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83237 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
a2e9ca91163c46e55d5ee9e16efb3a1ab6a01467 02-Oct-2009 Evan Cheng <evan.cheng@apple.com> Move load / store multiple before post-alloc scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83236 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
62a1b5db44e87eaba053483041943905b4a4046c 02-Oct-2009 Evan Cheng <evan.cheng@apple.com> Move load / store multiple before post-alloc scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83236 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
736fed9ff71ae677a7c947ac80ebb42a527de0dc 02-Oct-2009 David Goodwin <david_goodwin@apple.com> Remove neonfp attribute and instead set default based on CPU string. Add -arm-use-neon-fp to override the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83218 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
9843a93e830e76f96e9a997b3002624a28ca5aa6 02-Oct-2009 David Goodwin <david_goodwin@apple.com> Remove neonfp attribute and instead set default based on CPU string. Add -arm-use-neon-fp to override the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83218 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
089aa85274d26ebec4989ac1ceeefba7fca5e5ea 01-Oct-2009 David Goodwin <david_goodwin@apple.com> Restore the -post-RA-scheduler flag as an override for the target specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83215 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
471850ab84301dd47cab2bf8d694fcb5766c1169 01-Oct-2009 David Goodwin <david_goodwin@apple.com> Restore the -post-RA-scheduler flag as an override for the target specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83215 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
a9a6b6528197d68ea551f665bc6be722a0009630 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> ARM::tPOP and tPOP_RET each has an extra writeback operand now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83214 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
10469f8e48e007989b0469e677d4000a1311ecd2 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> ARM::tPOP and tPOP_RET each has an extra writeback operand now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83214 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
7c8d5ea09fb5e7a585533f711b9540e9b3b95a5e 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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
713ff84d1467c64ad625681baa355b49bcc44ca3 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> Update ARM JIT emitter to account for ld/st multiple changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83192 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
7c043d7319330aaa8235384456ef2abccaa59716 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> Update ARM JIT emitter to account for ld/st multiple changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83192 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
b43a20e3bce6b4b16151ec25ef3541494fce8425 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
86049dcedaba49929bf6e4c1cd84f9d85cadb987 01-Oct-2009 Devang Patel <dpatel@apple.com> Use MachineInstr as an processDebugLoc() argument.
This will allow processDebugLoc() to handle scopes for DWARF debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b0fdedb3fd123a47e7deca75d1e6f7d64218b07a 01-Oct-2009 Devang Patel <dpatel@apple.com> Use MachineInstr as an processDebugLoc() argument.
This will allow processDebugLoc() to handle scopes for DWARF debug info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83183 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1f9b67a27f82ba4d75625c2e260d40cb3b662393 01-Oct-2009 Bob Wilson <bob.wilson@apple.com> Use OutStreamer.SwitchSection instead of writing out textual section directives.
Add a new TargetLoweringObjectFileMachO::getConstTextCoalSection method to
get access to that section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
29e066965fb84b3aad2840815c6d0602dafb0b17 01-Oct-2009 Bob Wilson <bob.wilson@apple.com> Use OutStreamer.SwitchSection instead of writing out textual section directives.
Add a new TargetLoweringObjectFileMachO::getConstTextCoalSection method to
get access to that section.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83178 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b5f835ee6e48aedbffb804a6bf5308465867e67b 01-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this
to emit target-specific things at the beginning of the asm output. This
fixes a problem for PPC, where the text sections are not being kept together
as expected. The base class doInitialization code calls DW->BeginModule()
which emits a bunch of DWARF section directives. The PPC doInitialization
code then emits all the TEXT section directives, with the intention that they
will be kept together. But as I understand it, the Darwin assembler treats
the default TEXT section as a special case and moves it to the beginning of
the file, which means that all those DWARF sections are in the middle of
the text. With this change, the EmitStartOfAsmFile hook is called before
the DWARF section directives are emitted, so that all the PPC text section
directives come out right at the beginning of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
812209a58c5520c604bc9279aa069e5ae066e860 01-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this
to emit target-specific things at the beginning of the asm output. This
fixes a problem for PPC, where the text sections are not being kept together
as expected. The base class doInitialization code calls DW->BeginModule()
which emits a bunch of DWARF section directives. The PPC doInitialization
code then emits all the TEXT section directives, with the intention that they
will be kept together. But as I understand it, the Darwin assembler treats
the default TEXT section as a special case and moves it to the beginning of
the file, which means that all those DWARF sections are in the middle of
the text. With this change, the EmitStartOfAsmFile hook is called before
the DWARF section directives are emitted, so that all the PPC text section
directives come out right at the beginning of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83176 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cd8cb7f1e4075f66179e15deb0c0aecaf09fe4be 30-Sep-2009 Bob Wilson <bob.wilson@apple.com> The AsmPrinter base class contains a DwarfWriter member, so there's no need
for derived AsmPrinters to add another one. In some cases, fixing this
removes the need to override the doInitialization method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83170 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b6e4742da7ecada32ba8d018f7292a837d5d90a9 30-Sep-2009 Bob Wilson <bob.wilson@apple.com> The AsmPrinter base class contains a DwarfWriter member, so there's no need
for derived AsmPrinters to add another one. In some cases, fixing this
removes the need to override the doInitialization method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83170 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
65a2b9aff1084c5c54afd4577555a5bf3b124114 30-Sep-2009 Jim Grosbach <grosbach@apple.com> Clarify comment phrasing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83148 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
460c482ed38f5c2f91e29eaacf241928d3d77edf 30-Sep-2009 Jim Grosbach <grosbach@apple.com> Clarify comment phrasing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83148 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
140523508f5e2af96e8c01218b4c4fc1c73abcdb 30-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add a option which would move ld/st multiple pass before post-alloc scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83145 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
792e1f6df9d70970b5f658d56344ded87f3d7b42 30-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add a option which would move ld/st multiple pass before post-alloc scheduling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83145 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
ce096d7654254793f6df9dcfea8e44345afa42bf 30-Sep-2009 Jim Grosbach <grosbach@apple.com> When checking whether we need to reserve a register for the scavenger,
the size of the saved frame pointer needs to be taken into account.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83136 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d1a5ca6cb11763059ba1ee1c965cc69abff92e38 30-Sep-2009 Jim Grosbach <grosbach@apple.com> When checking whether we need to reserve a register for the scavenger,
the size of the saved frame pointer needs to be taken into account.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83136 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c6f0c0268cdad78cdc3b8d4b4ad597d1c3ce7ba2 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
5147f1174ae1b6f8af2bc03d8f9915bda2937961 30-Sep-2009 Bob Wilson <bob.wilson@apple.com> For Darwin, emit all the text section directives together before the dwarf
section directives. This causes the assembler to put the text sections at
the beginning of the object file, which helps work around a limitation of the
Darwin ARM relocations. Radar 7255355.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83127 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0fb34683b9e33238288d2af1e090582464df8387 30-Sep-2009 Bob Wilson <bob.wilson@apple.com> For Darwin, emit all the text section directives together before the dwarf
section directives. This causes the assembler to put the text sections at
the beginning of the object file, which helps work around a limitation of the
Darwin ARM relocations. Radar 7255355.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83127 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cf89a609bc2c368e2c5c970131edc40c08175893 30-Sep-2009 David Goodwin <david_goodwin@apple.com> Remove -post-RA-schedule flag and add a TargetSubtarget method to enable post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83122 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
0dad89fa94536284d51f60868326294b725a0c61 30-Sep-2009 David Goodwin <david_goodwin@apple.com> Remove -post-RA-schedule flag and add a TargetSubtarget method to enable post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83122 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
278c839fdb36f39a25935fd83e12144b374d4e75 30-Sep-2009 Jim Grosbach <grosbach@apple.com> minor cleanup and add clarifying comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83117 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
17487ba60d171aa32b17e6c3ad6d5809e78f9868 30-Sep-2009 Jim Grosbach <grosbach@apple.com> minor cleanup and add clarifying comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83117 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
350c913b054b04ffd2c0041e8cf63d6031cb060b 29-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4687. Pre ARMv5te does not support ldrd / strd. Patch by John Tytgat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83058 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
fa1be5d99153a4709740ce5aabba3793e9f77982 29-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4687. Pre ARMv5te does not support ldrd / strd. Patch by John Tytgat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83058 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
e68f04e420b7b2422586e4927db982f30c654e2f 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Adjust processFunctionBeforeCalleeSavedScan() to correctly reserve a stack
slot for the register scavenger when compiling Thumb1 functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83023 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ec9eef4a15157fc0a05feff933848aa9283bd1af 29-Sep-2009 Jim Grosbach <grosbach@apple.com> Adjust processFunctionBeforeCalleeSavedScan() to correctly reserve a stack
slot for the register scavenger when compiling Thumb1 functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83023 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
56a506296805c4967326a41bd5b0ae3202ace90f 28-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix Thumb2 IT block pass bug. t2MOVi32imm may not be the start of a IT block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83008 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
fd847118eda59dcfa318dcb0895d1764c2a7a0ba 28-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix Thumb2 IT block pass bug. t2MOVi32imm may not be the start of a IT block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83008 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
8f12c7cd04af1b2eadddf46f00bf9527fa484188 28-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Introduce the TargetInstrInfo::KILL machine instruction and get rid of the
unused DECLARE instruction.

KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF
in the places where IMPLICIT_DEF is just used to alter liveness of physical
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83006 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
26207e5bf1123a793bd9b38bcda2f569a6b45ef2 28-Sep-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Introduce the TargetInstrInfo::KILL machine instruction and get rid of the
unused DECLARE instruction.

KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF
in the places where IMPLICIT_DEF is just used to alter liveness of physical
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83006 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
f4ecc68efa92c06e2de1937f2a6408f57318ee3f 28-Sep-2009 Bob Wilson <bob.wilson@apple.com> Pass the optimization level when constructing the ARM instruction selector.
Otherwise, it is always set to "default", which prevents debug info from
even being generated during isel. Radar 7250345.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82988 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMTargetMachine.cpp
522ce975327e1aeba8317b233cdb54366e2645b5 28-Sep-2009 Bob Wilson <bob.wilson@apple.com> Pass the optimization level when constructing the ARM instruction selector.
Otherwise, it is always set to "default", which prevents debug info from
even being generated during isel. Radar 7250345.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82988 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMTargetMachine.cpp
16c012d9a28fe4db3ee081192a587ad7f30d4cc2 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
EADME.txt
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
EADME.txt
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
fe89b6a96501aabf8edbd991e9fb81108ecde782 28-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix thinko in my recent movt commit: it's not safe to remat movt, since it has input reg argument.
Disable rematting of it for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82975 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
b0d8d781380cb2ea94692d25533f3bd04fd78dce 28-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix thinko in my recent movt commit: it's not safe to remat movt, since it has input reg argument.
Disable rematting of it for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82975 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
609289558295a0f4a1f6529c14ffe96db547ec41 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
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
340684f156c06a256649f09657a198653fbe8881 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
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
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
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
0e367e3f0866e9f690b307b4feefaec8d4a3bdfb 26-Sep-2009 Evan Cheng <evan.cheng@apple.com> Really remove this option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82838 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
72c158f90865852cd19aa8efb524ace74797fbba 26-Sep-2009 Evan Cheng <evan.cheng@apple.com> Really remove this option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82838 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
c2bb61fd9699873daeba366e97019d660c4006ca 26-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove a couple of unused command line options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82837 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8981572662300b97d166dacbfee188e463ff503c 26-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove a couple of unused command line options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82837 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
7f4c4564fc1f3955b136a050941b236467fca747 26-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82836 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
8f05c1004a642ba79c609b40cb3b6524d810b5f3 26-Sep-2009 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82836 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
e222c72bba42281674d39d3d33dd75fb8f926ce5 26-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Regenerate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82814 91177308-0d34-0410-b5e6-96231b3b80d8
RMPerfectShuffle.h
d1c37f5b2099233dc337f8b652de70d36e8f3b2c 26-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Regenerate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82814 91177308-0d34-0410-b5e6-96231b3b80d8
RMPerfectShuffle.h
65561df4eb4eb52ebf75755e9f9eafa36929fa0e 25-Sep-2009 Evan Cheng <evan.cheng@apple.com> Code clean up and prepare for Thumb2 support. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82805 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
eef490f45919c8f279e40b8b5ef09f612ec6ce2c 25-Sep-2009 Evan Cheng <evan.cheng@apple.com> Code clean up and prepare for Thumb2 support. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82805 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
4e3bb1bc735783b73f2dcca82c86b7faca1a87e8 25-Sep-2009 Dan Gohman <gohman@apple.com> Improve MachineMemOperand handling.
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.

Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82794 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
c76909abfec876c6b751d693ebd3df07df686aa0 25-Sep-2009 Dan Gohman <gohman@apple.com> Improve MachineMemOperand handling.
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.

Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82794 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
61fda0d889b3578fe435455679182c231a649aac 25-Sep-2009 Dan Gohman <gohman@apple.com> Rename getTargetNode to getMachineNode, for consistency with the
naming scheme used in SelectionDAG, where there are multiple kinds
of "target" nodes, but "machine" nodes are nodes which represent
a MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82790 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
602b0c8c17f458d2c80f2deb3c8e554d516ee316 25-Sep-2009 Dan Gohman <gohman@apple.com> Rename getTargetNode to getMachineNode, for consistency with the
naming scheme used in SelectionDAG, where there are multiple kinds
of "target" nodes, but "machine" nodes are nodes which represent
a MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82790 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
36bff0c1f84aa517c66320c6864e4443e818e574 25-Sep-2009 David Goodwin <david_goodwin@apple.com> Finish scheduling itineraries for NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82788 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
RMSchedule.td
RMScheduleV7.td
658ea6099724d0aaf5297a02b185f8351fcab389 25-Sep-2009 David Goodwin <david_goodwin@apple.com> Finish scheduling itineraries for NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82788 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
RMSchedule.td
RMScheduleV7.td
e55e52532c4a76b7ec83e530e3fe3b0bc0b8c00c 25-Sep-2009 Bob Wilson <bob.wilson@apple.com> Add some comments to clarify things that I discovered this week.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82773 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c8ce2d4cb9ef5ff8b3c574e522c870741d88ba58 25-Sep-2009 Bob Wilson <bob.wilson@apple.com> Add some comments to clarify things that I discovered this week.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82773 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c1c8b5e19b33c8b5e52c4b516669181f18feb98e 25-Sep-2009 Bob Wilson <bob.wilson@apple.com> pr4926: ARM requires the stack pointer to be aligned, even for leaf functions.
For the AAPCS ABI, SP must always be 4-byte aligned, and at any "public
interface" it must be 8-byte aligned. For the older ARM APCS ABI, the stack
alignment is just always 4 bytes. For X86, we currently align SP at
entry to a function (e.g., to 16 bytes for Darwin), but no stack alignment
is needed at other times, such as for a leaf function.

After discussing this with Dan, I decided to go with the approach of adding
a new "TransientStackAlignment" field to TargetFrameInfo. This value
specifies the stack alignment that must be maintained even in between calls.
It defaults to 1 except for ARM, where it is 4. (Some other targets may
also want to set this if they have similar stack requirements. It's not
currently required for PPC because it sets targetHandlesStackFrameRounding
and handles the alignment in target-specific code.) The existing StackAlignment
value specifies the alignment upon entry to a function, which is how we've
been using it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82767 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
0035f9c3b9982eeef098b608fceb7572df969b3e 25-Sep-2009 Bob Wilson <bob.wilson@apple.com> pr4926: ARM requires the stack pointer to be aligned, even for leaf functions.
For the AAPCS ABI, SP must always be 4-byte aligned, and at any "public
interface" it must be 8-byte aligned. For the older ARM APCS ABI, the stack
alignment is just always 4 bytes. For X86, we currently align SP at
entry to a function (e.g., to 16 bytes for Darwin), but no stack alignment
is needed at other times, such as for a leaf function.

After discussing this with Dan, I decided to go with the approach of adding
a new "TransientStackAlignment" field to TargetFrameInfo. This value
specifies the stack alignment that must be maintained even in between calls.
It defaults to 1 except for ARM, where it is 4. (Some other targets may
also want to set this if they have similar stack requirements. It's not
currently required for PPC because it sets targetHandlesStackFrameRounding
and handles the alignment in target-specific code.) The existing StackAlignment
value specifies the alignment upon entry to a function, which is how we've
been using it anyway.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82767 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
abd0e3ddaf34e1589bae68eecb9fcfb7f14ac297 25-Sep-2009 Jim Grosbach <grosbach@apple.com> Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving
interest for this, as it currently reserves a register rather than using
the scavenger for matierializing constants as needed.

Instead of scavenging registers on the fly while eliminating frame indices,
new virtual registers are created, and then a scavenged collectively in a
post-pass over the function. This isolates the bits that need to interact
with the scavenger, and sets the stage for more intelligent use, and reuse,
of scavenged registers.

For the time being, this is disabled by default. Once the bugs are worked out,
the current scavenging calls in replaceFrameIndices() will be removed and
the post-pass scavenging will be the default. Until then,
-enable-frame-index-scavenging enables the new code. Currently, only the
Thumb1 back end is set up to use it.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82734 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
3d6cb88a64fe67064de206405951eb326d86fc0c 25-Sep-2009 Jim Grosbach <grosbach@apple.com> Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving
interest for this, as it currently reserves a register rather than using
the scavenger for matierializing constants as needed.

Instead of scavenging registers on the fly while eliminating frame indices,
new virtual registers are created, and then a scavenged collectively in a
post-pass over the function. This isolates the bits that need to interact
with the scavenger, and sets the stage for more intelligent use, and reuse,
of scavenged registers.

For the time being, this is disabled by default. Once the bugs are worked out,
the current scavenging calls in replaceFrameIndices() will be removed and
the post-pass scavenging will be the default. Until then,
-enable-frame-index-scavenging enables the new code. Currently, only the
Thumb1 back end is set up to use it.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82734 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
humb1RegisterInfo.cpp
ed17499ee7446c5da5638f6c4c34eea660808a3d 24-Sep-2009 David Goodwin <david_goodwin@apple.com> Make the end-of-itinerary mark explicit. Some cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82709 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
1f528956921561f277a8c697e0202ac1e9a9c1d5 24-Sep-2009 David Goodwin <david_goodwin@apple.com> Make the end-of-itinerary mark explicit. Some cleanup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82709 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
78caa12a415bbd16db04088be6378398d4909b6f 23-Sep-2009 David Goodwin <david_goodwin@apple.com> Checkpoint NEON scheduling itineraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82657 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrNEON.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
127221fbdceba333f5e243f5278a691a7d182898 23-Sep-2009 David Goodwin <david_goodwin@apple.com> Checkpoint NEON scheduling itineraries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82657 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrNEON.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
3fad552803d264b6bf83981de305e7080cb8ef4f 23-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> ARM does not support offset folding (yet). Disable it for now.
This fixes PR5031. Unfortunately, there is no small testcase :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82643 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
48e19352840a5f7012493ead894e81a2dbec1778 23-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> ARM does not support offset folding (yet). Disable it for now.
This fixes PR5031. Unfortunately, there is no small testcase :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82643 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
35d4912e3b08a8a2d0e01c0ef8b23407f8efa8db 21-Sep-2009 David Goodwin <david_goodwin@apple.com> Add Cortex-A8 VFP model.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82483 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
b2bb7db9e242c54a4a84448ab503015a148e9286 21-Sep-2009 David Goodwin <david_goodwin@apple.com> Add Cortex-A8 VFP model.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82483 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
98cb5536ab1aa5667bb5b602bf691631f3bbaffc 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Register the MachineModuleInfo for the ARM JIT, and update JITDwarfEmitter to
assert if the setModuleInfo hasn't been called.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82441 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
003de66227d235a9ca7373d9cb2c0b1b6ae5b81a 21-Sep-2009 Daniel Dunbar <daniel@zuster.org> Register the MachineModuleInfo for the ARM JIT, and update JITDwarfEmitter to
assert if the setModuleInfo hasn't been called.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82441 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5f3a54090af5d61d35de2158542ff76fc9ef053f 19-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82311 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ce31910eae5bd4896fa6c27798e7b26885691d3b 19-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82311 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
764ce99aff6b5db12d99c31467c9e9b7c5612cf2 18-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a typo in an assertion message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82284 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a15de00f8246f19180b26ee5fe7ff8f436e0de08 18-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix a typo in an assertion message.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82284 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d7dc983029cf293dd67637c27b92c04c0baf968b 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes.
Not functionality change yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82273 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
fb2e752e4175920d0531f2afc93a23d0cdf4db14 18-Sep-2009 Evan Cheng <evan.cheng@apple.com> Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that sdisel will use to properly complete phi nodes.
Not functionality change yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82273 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
94ef1628bb9b33484a3887a742fb4cc662b41fd8 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Expand vector floating-point conversions not supported by NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82074 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0696fdf3220c4cdd7fc518274048a35091cc17b1 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Expand vector floating-point conversions not supported by NEON.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82074 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
71dd44de32bd74e60887991c9f06ab3917229a52 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Expand some more vector operations not supported by Neon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81969 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
642b32910425ce98059cf659c7cca84670435568 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Expand some more vector operations not supported by Neon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81969 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
098abb4f0f560ae8e2c2e649f7e16046740f3cda 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Neon does not support vector divide or remainder. Expand them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81966 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1633076c47f10a8d8735e81588e9cb07ac32efc8 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Neon does not support vector divide or remainder. Expand them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81966 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e8fefa0a3f88ebd6f5e24617ca5d5fe7c4734ef9 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Expand all v2f64 arithmetic operations for Neon.
Radar 7200803. (This should also fix the
SingleSource/UnitTests/Vector/sumarray-dbl test.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81959 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
74dc72e89bba8c67d2c9e455bad20f067b180499 16-Sep-2009 Bob Wilson <bob.wilson@apple.com> Expand all v2f64 arithmetic operations for Neon.
Radar 7200803. (This should also fix the
SingleSource/UnitTests/Vector/sumarray-dbl test.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81959 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
19f0725ebd200ab818b0431a64943eebf61c794d 15-Sep-2009 Bob Wilson <bob.wilson@apple.com> Handle AddrMode4 for Thumb2 in rewriteT2FrameIndex. This occurs for
VLDM/VSTM instructions, and without this check, the code assumes that an
offset is allowed, as it would be with VLDR/VSTR. The asm printer,
however, silently drops the offset, producing incorrect code. Since the
address register in this case is either the stack or frame pointer, the
spill location ends up conflicting with some other stack slot or with
outgoing arguments on the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81879 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
e4863f47596794df3dd955b6b7064863c50eabe4 15-Sep-2009 Bob Wilson <bob.wilson@apple.com> Handle AddrMode4 for Thumb2 in rewriteT2FrameIndex. This occurs for
VLDM/VSTM instructions, and without this check, the code assumes that an
offset is allowed, as it would be with VLDR/VSTR. The asm printer,
however, silently drops the offset, producing incorrect code. Since the
address register in this case is either the stack or frame pointer, the
spill location ends up conflicting with some other stack slot or with
outgoing arguments on the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81879 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
fe9c3803a79895c50881154a3a381f61692e13ae 15-Sep-2009 Sandeep Patel <deeppatel1987@gmail.com> Fix superreg use in ARMAsmPrinter. Approved by Anton Korobeynikov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
85111a9c07ad2bcb91cbccf34d0653dc4687d774 15-Sep-2009 Sandeep Patel <deeppatel1987@gmail.com> Fix superreg use in ARMAsmPrinter. Approved by Anton Korobeynikov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a045a696be25f2dec8969a68283582b33d660aae 15-Sep-2009 Ted Kremenek <kremenek@apple.com> Remove invalid add_dependencies line to unbreak the CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81827 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
83d255e43ef223b0556a61ab33d514db83cd434c 15-Sep-2009 Ted Kremenek <kremenek@apple.com> Remove invalid add_dependencies line to unbreak the CMake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81827 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/CMakeLists.txt
3d711a3d76b29a8b13ec316c81d0161df47818ce 15-Sep-2009 Kevin Enderby <enderby@apple.com> Added the first bits of the ARM target assembler to llvm-mc. For now it only
parses the .word directive as 4 bytes and ARMAsmParser::ParseInstruction will
give an error is called. Broke out the test of the .word directive into two
different test cases, one for x86 and one for arm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81817 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
smParser/CMakeLists.txt
smParser/Makefile
akefile
ca9c42c4daa8f4ffd9411e11c05fb53ee1bfaf70 15-Sep-2009 Kevin Enderby <enderby@apple.com> Added the first bits of the ARM target assembler to llvm-mc. For now it only
parses the .word directive as 4 bytes and ARMAsmParser::ParseInstruction will
give an error is called. Broke out the test of the .word directive into two
different test cases, one for x86 and one for arm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81817 91177308-0d34-0410-b5e6-96231b3b80d8
smParser/ARMAsmParser.cpp
smParser/CMakeLists.txt
smParser/Makefile
akefile
3107c9ecfee9c403e89e3d5eccbc00d1099fc151 14-Sep-2009 Jim Grosbach <grosbach@apple.com> trivial whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81773 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
a67240399316f42d0da235053c77d71e6204f21f 14-Sep-2009 Jim Grosbach <grosbach@apple.com> trivial whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81773 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
f0a25de172e71282bba275a51ce75849e5407f8b 13-Sep-2009 Chris Lattner <sabre@nondot.org> remove all but one reference to TargetRegisterDesc::AsmName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
762ccea600158bb317dcccdff3303e942426cb71 13-Sep-2009 Chris Lattner <sabre@nondot.org> remove all but one reference to TargetRegisterDesc::AsmName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81714 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
213703ced9eeaa585c06387ae3c643ea4701462e 13-Sep-2009 Chris Lattner <sabre@nondot.org> the tblgen produced 'getRegisterName' method does not access
the object, make it static instead of const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81711 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d95148f073c31924f275a34296da52a7cdefad91 13-Sep-2009 Chris Lattner <sabre@nondot.org> the tblgen produced 'getRegisterName' method does not access
the object, make it static instead of const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81711 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9222169c3ad7e619d1a8ab155b7a1118182c3c34 13-Sep-2009 Chris Lattner <sabre@nondot.org> make tblgen produce a function that returns the name for a physreg.
Nothing is using this info yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
05af2616d0df19638e799d3e7afadea26d96a4ba 13-Sep-2009 Chris Lattner <sabre@nondot.org> make tblgen produce a function that returns the name for a physreg.
Nothing is using this info yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81707 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2faa4ef57551d45e7b58b1827ae8156cea221637 13-Sep-2009 Chris Lattner <sabre@nondot.org> replace printBasicBlockLabel with EmitBasicBlockStart,
now that printBasicBlockLabel is only used for starting
a MBB. This allows elimination of a bunch of arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
70a54c07a0807bf89d1a8b4414e53298c376eb61 13-Sep-2009 Chris Lattner <sabre@nondot.org> replace printBasicBlockLabel with EmitBasicBlockStart,
now that printBasicBlockLabel is only used for starting
a MBB. This allows elimination of a bunch of arguments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81684 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c6f802dd7f346ac5a44bbdc57d264ed928fe1e7c 13-Sep-2009 Chris Lattner <sabre@nondot.org> convert some uses of printBasicBlockLabel to use GetMBBSymbol
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
325d3dcfe4d5efc91db0f59b20a72a11dea024ed 13-Sep-2009 Chris Lattner <sabre@nondot.org> convert some uses of printBasicBlockLabel to use GetMBBSymbol
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81677 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
02791b0d5c7fe12bf1ada874da30dd5d0440bc98 13-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix merge problem

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81658 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
2a52122b304045e73a4a174259ffcde772e33040 13-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix merge problem

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81658 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
daf700156a4b1aec6f85be6f611f2f949b154f75 13-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Define proper subreg sets for arm - this should fix bunch of subtle problems
with subreg - superreg mapping and also fix PR4965.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81657 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
20c35ec427b4feefb827392b2cbed4cfdcaa015a 13-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Define proper subreg sets for arm - this should fix bunch of subtle problems
with subreg - superreg mapping and also fix PR4965.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81657 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
3600d16e551d4b49d3d8df86d5c90061804d5c7f 13-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Add QPR_VFP2 regclass and add copy_to_regclass nodes, where needed to
constraint the register usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81635 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMRegisterInfo.td
e56f9085b1e96f0cc302c678f1c00877676e455e 13-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Add QPR_VFP2 regclass and add copy_to_regclass nodes, where needed to
constraint the register usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81635 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMRegisterInfo.td
5b01f934c23227abf954e317b5b65cc77f38c21d 11-Sep-2009 Jim Grosbach <grosbach@apple.com> Revert array initialization regclass change so that the initialization stays static, not runtime.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81560 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
82b3c2e40417098f9af0c33150c4b1c66ae1747c 11-Sep-2009 Jim Grosbach <grosbach@apple.com> Revert array initialization regclass change so that the initialization stays static, not runtime.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81560 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
21f15abfa99b786925bb1b36717b454ac800251b 11-Sep-2009 Jim Grosbach <grosbach@apple.com> Update register class references to use the global constant ARM::*RegisterClass names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81556 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMLoadStoreOptimizer.cpp
e11a8f565c6a019ddc54667227be9c4d8f117473 11-Sep-2009 Jim Grosbach <grosbach@apple.com> Update register class references to use the global constant ARM::*RegisterClass names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81556 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMLoadStoreOptimizer.cpp
50e503fc4a90ecd8e98266c4a68c566e5f3e315f 10-Sep-2009 Evan Cheng <evan.cheng@apple.com> Proper support of non-lazy indirect symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81422 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
08669746d04468898b094908484946216628d359 10-Sep-2009 Evan Cheng <evan.cheng@apple.com> Proper support of non-lazy indirect symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81422 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
71429f87316fc88ebe54b904c4b1326a71fbc3ec 10-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix double load / store multiple encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81403 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
10bf734e6e0b5aba79dc199d611dcdec54a1e48e 10-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix double load / store multiple encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81403 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
10371a5fdd1b829b3ce0cbd6d0721c700bde1e55 10-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4939: Change FPCCToARMCC to translate SETOLE to ARMCC::LS.
See the bug report for details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81397 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cd3b9a4f17cf78f208765ab2ab01f2019a9e5651 10-Sep-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4939: Change FPCCToARMCC to translate SETOLE to ARMCC::LS.
See the bug report for details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81397 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
32d4cc74e1075b6d9f77c75ff6099784ad4f15b2 10-Sep-2009 Chris Lattner <sabre@nondot.org> remove DebugLoc from MCInst and eliminate "Comment printing" from
the MCInst path of the asmprinter. Instead, pull comment printing
out of the autogenerated asmprinter into each target that uses the
autogenerated asmprinter. This causes code duplication into each
target, but in a way that will be easier to clean up later when more
asmprinter stuff is commonized into the base AsmPrinter class.

This also fixes an xcore strangeness where it inserted two tabs
before every instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c5ea263a23f4f15587e35c9cb07cf72a9fba7613 10-Sep-2009 Chris Lattner <sabre@nondot.org> remove DebugLoc from MCInst and eliminate "Comment printing" from
the MCInst path of the asmprinter. Instead, pull comment printing
out of the autogenerated asmprinter into each target that uses the
autogenerated asmprinter. This causes code duplication into each
target, but in a way that will be easier to clean up later when more
asmprinter stuff is commonized into the base AsmPrinter class.

This also fixes an xcore strangeness where it inserted two tabs
before every instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81396 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e34788cb7ed482bf3b51075f1b06ccc03021fbac 09-Sep-2009 Chris Lattner <sabre@nondot.org> hoist the call to processDebugLoc out of the generated
asm printer into the "printInstruction" routine. This
fixes a problem where the experimental asmprinter would
drop debug labels in some cases, and fixes issues on ppc/xcore
where pseudo instructions like "mr" didn't get debug locs properly.

It is annoying that this moves the call from one place into each
target, but a future set of more invasive refactorings will fix
that problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
634cca377a8254cfe8a5afe99ef2e6c6db7f0c6b 09-Sep-2009 Chris Lattner <sabre@nondot.org> hoist the call to processDebugLoc out of the generated
asm printer into the "printInstruction" routine. This
fixes a problem where the experimental asmprinter would
drop debug labels in some cases, and fixes issues on ppc/xcore
where pseudo instructions like "mr" didn't get debug locs properly.

It is annoying that this moves the call from one place into each
target, but a future set of more invasive refactorings will fix
that problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81377 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
52f6f63fbd1339c08b982355b62b85dc344add50 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Cast MO.getImm() to unsigned before comparing with an unsigned limit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81318 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
28d63b169938fa95cf481b64ef6e4bc1849dabef 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Cast MO.getImm() to unsigned before comparing with an unsigned limit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81318 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
c84d4d3a2e752a4ba621587c066c1177cb8d5f40 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Make sure to make stub region writable before emission, executable after emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81311 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
04cedd3c8f6c7d00e06f63a49aaef05d1d4a726f 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Make sure to make stub region writable before emission, executable after emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81311 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
a989293ca8e2c88ac10cf6fb577a9ece58b7b845 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix arm jit encoding bug introduced by 75048. Some instructions', e.g. MOVi, bit 25 should be set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81310 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7995ef3b18357bb4a77ff7e9e4981eae7947e765 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix arm jit encoding bug introduced by 75048. Some instructions', e.g. MOVi, bit 25 should be set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81310 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7b3c2ad4b0e7825170e90aadb07fe99408d4046b 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove comments which don't add much to .s readibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81306 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
cdf23b950a0a4c59b48b5dc6f18ce38383e3cc3c 09-Sep-2009 Evan Cheng <evan.cheng@apple.com> Remove comments which don't add much to .s readibility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81306 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
14636a5b8822276713045b4322b1f9f9c0c7c600 09-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Unbreak getOnesVector() / getZeroVector() to use valid ARM extended imm's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81262 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
2ba62ef7f201b2e8f61c6988e76b40c7c8a6a191 09-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Unbreak getOnesVector() / getZeroVector() to use valid ARM extended imm's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81262 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
dd528195c766db4211a29e0955e5f888f322dc37 08-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Add NEON 'laned' operations. This fixes another bunch of gcc testsuite fails and
makes the code faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81220 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMRegisterInfo.td
6ca0b9e7220911a6d1fccf34e532e69c7e37cd2f 08-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Add NEON 'laned' operations. This fixes another bunch of gcc testsuite fails and
makes the code faster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81220 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMRegisterInfo.td
05db668fe21feee223e19fe50ddeb6456ddebafb 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some not-really-used variables, as warned
about by icc (#593, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81115 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
c2d98bc0d682419f09659d94afefd6a6266dd6ee 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some not-really-used variables, as warned
about by icc (#593, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81115 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
5c3f915679bede35de38a5702359ab5befc38b95 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some unused variables and methods warned about by
icc (#177, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81106 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
b7c5bdf843419e4222770475c27932c4c8e5c303 06-Sep-2009 Duncan Sands <baldrick@free.fr> Remove some unused variables and methods warned about by
icc (#177, partial). Patch by Erick Tryzelaar.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81106 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
9c2ed5cff22b49e07be176f3d4830b5bc67739c6 04-Sep-2009 Jim Grosbach <grosbach@apple.com> Whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80978 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e9952213086c865eb678bd3f4c9c7d849f0249d2 04-Sep-2009 Jim Grosbach <grosbach@apple.com> Whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80978 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3d88e9179113826d90cfe1653b8497e59798858b 04-Sep-2009 David Goodwin <david_goodwin@apple.com> Calls clobber FPSCR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
e8d82c0e4fafb95b1807ce4387a48587537bcb51 04-Sep-2009 David Goodwin <david_goodwin@apple.com> Calls clobber FPSCR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80956 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
ba2cf3d635dcc68ac416f56b767fd79d77ea7c83 03-Sep-2009 Evan Cheng <evan.cheng@apple.com> Reference to hidden symbols do not have to go through non-lazy pointer in non-pic mode. rdar://7187172.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80904 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
63476a80404125e5196b6c09113c1d4796da0604 03-Sep-2009 Evan Cheng <evan.cheng@apple.com> Reference to hidden symbols do not have to go through non-lazy pointer in non-pic mode. rdar://7187172.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80904 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
b261a1986acd86bb414d8e9e190a4e15742efc44 02-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> More missed vdup patterns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80838 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
69d1c1aebf009e58157e233cd7f2338e654e8d05 02-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> More missed vdup patterns

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80838 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5838baa4a8aedfd453a5b0663425979c77e4e285 02-Sep-2009 Sandeep Patel <deeppatel1987@gmail.com> Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80773 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
65c3c8f323198b99b88b109654194540cf9b3fa5 02-Sep-2009 Sandeep Patel <deeppatel1987@gmail.com> Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80773 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d5496d944b0095cfd0d1cc93386a3c569b7f06d5 01-Sep-2009 Jim Grosbach <grosbach@apple.com> reduce size of SmallString to something more reasonable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80710 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ee793a6c197b2cccfee96c6da1bbe6a2048830cc 01-Sep-2009 Jim Grosbach <grosbach@apple.com> reduce size of SmallString to something more reasonable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80710 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c2d6585e5e77e5b44a9440f7cb821dada5009692 01-Sep-2009 Bob Wilson <bob.wilson@apple.com> Add support for generating code for vst{234}lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80707 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
8a3198b770c9fa7e8319a96bcbcfd85202342eef 01-Sep-2009 Bob Wilson <bob.wilson@apple.com> Add support for generating code for vst{234}lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80707 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
1e58780928c42ba7c34deb7bbb35c17391b3d36e 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Use raw_ostream instead of sstream

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80704 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c40d9f9bae70c83947bf8fa5f9ee97adbf1bb0c0 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Use raw_ostream instead of sstream

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80704 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
02b0e35f988abea2d6e5a07a854b4c6192872355 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
d14b8b63b3557e85950beb061a1d8b01cff4eadf 01-Sep-2009 Bob Wilson <bob.wilson@apple.com> Generate code for vld{234}_lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80656 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
243fcc5a6901e75e7ca5c374e706a634593ec17f 01-Sep-2009 Bob Wilson <bob.wilson@apple.com> Generate code for vld{234}_lane intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80656 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
4b673ee8fb5f7351de61d8bc06fb8958aa846d93 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Fix compiler warnings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80650 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
27830e39c4e960a5c372deedfcd082d6393d9355 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Fix compiler warnings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80650 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
5e0257f9b7567c8c285ee3115c10d552c7c037fb 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Clean up LSDA name generation and use for SJLJ exception handling. This
makes an eggregious hack somewhat more palatable. Bringing the LSDA forward
and making it a GV available for reference would be even better, but is
beyond the scope of what I'm looking to solve at this point.

Objective C++ code could generate function names that broke the previous
scheme. This fixes that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80649 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
3fb2b1ede30193b59a651328a946174196b20610 01-Sep-2009 Jim Grosbach <grosbach@apple.com> Clean up LSDA name generation and use for SJLJ exception handling. This
makes an eggregious hack somewhat more palatable. Bringing the LSDA forward
and making it a GV available for reference would be even better, but is
beyond the scope of what I'm looking to solve at this point.

Objective C++ code could generate function names that broke the previous
scheme. This fixes that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80649 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
08ed20d6841e1879cff1c6b7717b64fd400dc913 31-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove .n suffix for some 16-bit opcodes now that Darwin assembler is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80615 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
029599bf018c4000cf1b8d93ca9b7e05063dd6a0 31-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove .n suffix for some 16-bit opcodes now that Darwin assembler is fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80615 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
b759ebc5bc48ee93a9f4b031ec6ed3247028d77c 31-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Normalize makefile comments and sort cmake file lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80584 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
MakeLists.txt
b4f770b68a2f1890e17f634b695d19bb7d07168d 31-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Normalize makefile comments and sort cmake file lists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80584 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
MakeLists.txt
d33527768525e6447c6fdcf521ffb975165dbc7a 30-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add missed pattern

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80502 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
d91aafd0055a10230f3d606a933b2dac4f68284b 30-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add missed pattern

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80502 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
243874430bb02c8f76b7603cbc8f31ebf2749785 30-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> EXTRACT_VECTOR_ELEMENT can have result type different from element type.
Remove the assertion and generalize the code for ARM NEON stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80498 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b00c03bb3548d1c2fd7ae95d6921d1aebbd5ca87 30-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> EXTRACT_VECTOR_ELEMENT can have result type different from element type.
Remove the assertion and generalize the code for ARM NEON stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80498 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cb7c98d9ef32354166106ff8218fb9fcbb8b2d24 29-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not assert on too wide splats we don't support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80409 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
71624cc7861c5ceaa72786aef2cd290bbb7fa33c 29-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not assert on too wide splats we don't support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80409 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
44e0a6cee931258a05b190f9e6e411a6d276c96a 29-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add missed extract_element pattern

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80408 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2324bdc1ee1b4b1a92ccde15848d2f2ad4662232 29-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add missed extract_element pattern

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80408 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
c299914a58baed2d7cf594494dbba60880d476cd 29-Aug-2009 Evan Cheng <evan.cheng@apple.com> Let Darwin linker auto-synthesize stubs and lazy-pointers. This deletes a bunch of nasty code in ARM asm printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80404 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
e4e4ed3b56f63e9343e01bf0b2ecd7c1f45d296c 29-Aug-2009 Evan Cheng <evan.cheng@apple.com> Let Darwin linker auto-synthesize stubs and lazy-pointers. This deletes a bunch of nasty code in ARM asm printer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80404 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMSubtarget.cpp
RMSubtarget.h
smPrinter/ARMAsmPrinter.cpp
f14af431e0f9724474dfa923ba940ecaf19316c7 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning, round two.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80354 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
19bb87d0f80f3e6eed38a9fa267bf2b0474aeaab 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning, round two.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80354 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
3ab6715ba17ac6726bd92a4514c68c5e58c3c884 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
c24bcdb66bd5b6904147ac443ca44da2660f9223 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80338 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ca7943226e1d58f4f3ae936f93aa03c2a72289ae 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> Fix -Asserts warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80338 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
5e1d21856de4bf387cccf8365885c45c87642dfb 28-Aug-2009 Evan Cheng <evan.cheng@apple.com> v4, v5 does not support sxtb / sxth.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80322 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
0e87e23f6e5f6615cf178933dcdec7a49436bb7a 28-Aug-2009 Evan Cheng <evan.cheng@apple.com> v4, v5 does not support sxtb / sxth.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80322 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
aa152ae811d8e0ffd01c7a8b454d595cb1a1a31f 27-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Hopefully the final missing part :(
scalar_to_vector is fully legal now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80251 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b5fb4282cd2968be81a853c0f3199d167e402bdf 27-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Hopefully the final missing part :(
scalar_to_vector is fully legal now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80251 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
872393c20ee29eaae1746deed115f06192526f64 27-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Forgot about actual change :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80250 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b5cdf873bcfb216e1866d05693822741313b5076 27-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Forgot about actual change :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80250 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
baee7b2a5501a45a59554b5bafd87264a2edc442 27-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Transform float scalar_to_vector into subreg accesses.
No idea whether this is profitable or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80245 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
fdf189ac9709bd4b645f23010689fd4686c37cc8 27-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Transform float scalar_to_vector into subreg accesses.
No idea whether this is profitable or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80245 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
9daa0677ac901b0f54bdba31dc3913b92df58e50 27-Aug-2009 Misha Brukman <brukman+llvm@gmail.com> STRD and LDRD require ARMv5TE, not just ARMv5T.
See http://llvm.org/PR4687 for more info and links.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bf16f1ddc47303bbbf343152997a342c0c4140bc 27-Aug-2009 Misha Brukman <brukman+llvm@gmail.com> STRD and LDRD require ARMv5TE, not just ARMv5T.
See http://llvm.org/PR4687 for more info and links.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
363cd759d4186bdae7b49e89a0d434749d6198aa 27-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4789. Teach eliminateFrameIndex how to handle VLDRQ and VSTRQ which cannot fold any immediate offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80191 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
humb2InstrInfo.cpp
cdbb3f5d3311e0f46d22bc8daa211b2fab3541cb 27-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4789. Teach eliminateFrameIndex how to handle VLDRQ and VSTRQ which cannot fold any immediate offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80191 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
humb2InstrInfo.cpp
b1b88455b18224867a8d2fc6c3202b6ce12e0a1c 26-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove unneeded ARM-specific DAG nodes for VLD* and VST* Neon operations.
The instructions can be selected directly from the intrinsics. We will need
to add some ARM-specific nodes for VLD/VST of 3 and 4 128-bit vectors, but
those are not yet implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80117 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
31fb12f93a30cca700a20088e97d8b05d13d5fca 26-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove unneeded ARM-specific DAG nodes for VLD* and VST* Neon operations.
The instructions can be selected directly from the intrinsics. We will need
to add some ARM-specific nodes for VLD/VST of 3 and 4 128-bit vectors, but
those are not yet implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80117 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
886f20275a78a1b03b83a8145a62f5e4cfbb1c99 26-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Expand scalar_to_vector - we don't have any isel logic for it now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80107 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1cb852b0ea0a63cd9b93306e2397d97a0688192c 26-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Expand scalar_to_vector - we don't have any isel logic for it now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80107 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
82d30b73d3a37de0ec7960a4e099ef9e255d4f11 25-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove some unused SDNode definitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80015 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a123239a5fcdedf7254802dba44f0dfb4af5e907 25-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove some unused SDNode definitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80015 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
316062a4d193609d98e80e64389fc2094ad8c515 25-Aug-2009 Bob Wilson <bob.wilson@apple.com> Expose the instruction contraint string as an argument to the NLdSt class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80011 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
2a9df47abd75c0337e0254f09070f90023509066 25-Aug-2009 Bob Wilson <bob.wilson@apple.com> Expose the instruction contraint string as an argument to the NLdSt class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80011 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
da55128a91134c0199390afe1c0081b3574fad93 24-Aug-2009 Dale Johannesen <dalej@apple.com> Make linkerprivate work for ARM and PPC. Testcase covers
all Darwin targets; could be split into separate tests for
the chip subdirectories, but from Chris' last mail on testing
I assume he'd rather have only one test. Generic seems to be
the best available, maybe there should be a Darwin subdirectory?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a60e51f7e81bdb99ca331776a06c93dfd6043762 24-Aug-2009 Dale Johannesen <dalej@apple.com> Make linkerprivate work for ARM and PPC. Testcase covers
all Darwin targets; could be split into separate tests for
the chip subdirectories, but from Chris' last mail on testing
I assume he'd rather have only one test. Generic seems to be
the best available, maybe there should be a Darwin subdirectory?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8755dee89ba6ae78f867a5f117212b569c2681fb 24-Aug-2009 Chris Lattner <sabre@nondot.org> remove the last uses of Config/alloca.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79873 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
dbe89cd2f019c23f41fe6471b8bfe0b45cc1c1ce 24-Aug-2009 Chris Lattner <sabre@nondot.org> remove the last uses of Config/alloca.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79873 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
7966fe8c4e6a6699adbbd789cb3d897021f4b9e0 23-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Remove Streams.h from the targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79853 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
072a56e37de0e4872ce0340b0bd5585ba15fd0c3 23-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Remove Streams.h from the targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79853 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
2c6014b7beb12b2eb1f2487d3b52ebea13b7f58e 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate the last DOUTs from the targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79833 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
893e1c90a03a53cf13f73849324e83612688428a 23-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate the last DOUTs from the targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79833 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
d71b0b0bc402d151d7ea364cad32ad44ac7fbee2 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove various std::ostream version of printing methods from
MachineInstr and MachineOperand. This required eliminating a
bunch of stuff that was using DOUT, I hope that bill doesn't
mind me stealing his fun. ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
humb2SizeReduction.cpp
705e07f578e2b3af47ddab610feb4e7f2d3063a5 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove various std::ostream version of printing methods from
MachineInstr and MachineOperand. This required eliminating a
bunch of stuff that was using DOUT, I hope that bill doesn't
mind me stealing his fun. ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
humb2SizeReduction.cpp
a2cb51a5eaa6f188ad128c2ab7430081a99776ff 23-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Forgot to update some CMakeLists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79780 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
f682f3d019794d4402b73701a06a4bb117f5d5e7 23-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Forgot to update some CMakeLists.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79780 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
a5ef4d36198b2b591b592c595978ed7d3ac96a18 22-Aug-2009 Chris Lattner <sabre@nondot.org> rename TAI -> MAI, being careful not to make MAILJMP instructions :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79777 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
smPrinter/ARMAsmPrinter.cpp
33adcfb4d217f5f23d9bde8ba02b8e48f9605fc5 22-Aug-2009 Chris Lattner <sabre@nondot.org> rename TAI -> MAI, being careful not to make MAILJMP instructions :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79777 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
smPrinter/ARMAsmPrinter.cpp
cd4cab9054f1d9573675c7d0beed14b59f14ab3e 22-Aug-2009 Chris Lattner <sabre@nondot.org> rename COFFMCAsmInfo -> MCAsmInfoCOFF, likewise for darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79773 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
RMMCAsmInfo.h
RMTargetMachine.cpp
2807afa664b579af4c559b3880d6763b9e7e236a 22-Aug-2009 Chris Lattner <sabre@nondot.org> rename COFFMCAsmInfo -> MCAsmInfoCOFF, likewise for darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79773 91177308-0d34-0410-b5e6-96231b3b80d8
RMMCAsmInfo.cpp
RMMCAsmInfo.h
RMTargetMachine.cpp
621c44d3606307a3e9e56add33539c78c0009ab9 22-Aug-2009 Chris Lattner <sabre@nondot.org> Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79763 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrInfo.cpp
RMMCAsmInfo.cpp
RMMCAsmInfo.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
af76e592c7f9deff0e55c13dbb4a34f07f1c7f64 22-Aug-2009 Chris Lattner <sabre@nondot.org> Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79763 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrInfo.cpp
RMMCAsmInfo.cpp
RMMCAsmInfo.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
c3d25a1ce7c6718d6304464aacb2005c1ae99de7 22-Aug-2009 Devang Patel <dpatel@apple.com> Record variable debug info at ISel time directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79742 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
24f20e083280d979e8fa1bc88959ae9e8339ee99 22-Aug-2009 Devang Patel <dpatel@apple.com> Record variable debug info at ISel time directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79742 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
f44f5f18682a475983b00d9941df5952a6d34e2b 22-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Make x86 test actually test x86 code generation. Fix the
construct on ARM, which was breaking by coincidence, and add a similar
testcase for ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79719 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ce392eb3ea16b781de89b7ff8f42c39f8b3df30e 22-Aug-2009 Eli Friedman <eli.friedman@gmail.com> Make x86 test actually test x86 code generation. Fix the
construct on ARM, which was breaking by coincidence, and add a similar
testcase for ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79719 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
30ff44954a2b0241c9b508f9cf2b79c9193f20ac 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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
8446276f4b086edd69bf329e88a2047dafc8a31f 21-Aug-2009 Bob Wilson <bob.wilson@apple.com> Match VTRN, VZIP, and VUZP shuffles. Restore the tests for these operations,
now using shuffles instead of intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c692cb77aaa8b16bcc7fe0c70d47adce94c43911 21-Aug-2009 Bob Wilson <bob.wilson@apple.com> Match VTRN, VZIP, and VUZP shuffles. Restore the tests for these operations,
now using shuffles instead of intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
394bbb86bff564329dc3c7728956428188147246 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix some typos and use type-based isel for VZIP/VUZP/VTRN

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79625 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
051cfd683f698b0061656fbff01d3971d2f3d58c 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix some typos and use type-based isel for VZIP/VUZP/VTRN

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79625 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
0a0297852932f078c1872b9585ee1a2e4491d6fd 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add lowering of ARM 4-element shuffles to multiple instructios via perfectshuffle-generated table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79624 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMPerfectShuffle.h
1c8e581832440a114c9587d41473d107de4cac74 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add lowering of ARM 4-element shuffles to multiple instructios via perfectshuffle-generated table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79624 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMPerfectShuffle.h
be262ae09d3579c9c17930fc4fc7012b84a8bc71 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add nodes & dummy matchers for some v{zip,uzp,trn} instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79622 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
62e84f177d4519bf719d188496faf8b6c247e3a7 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add nodes & dummy matchers for some v{zip,uzp,trn} instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79622 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
755fa0b4fd5f69b1a47747d0a3007082d2936dc1 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Expand EXTRACT_SUBVECTOR

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79621 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8e6c2b90410ae8c8f5a9a89e35de1dcc62840dbf 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Expand EXTRACT_SUBVECTOR

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79621 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6c28c006c732c46bef1f367edeeb992051307e2b 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Provide vext.{16,32}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79620 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
5da894f5c45ad7130158e4d85fea93ae450692ba 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Provide vext.{16,32}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79620 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrNEON.td
2a0296f324bd6d4c342bbb525793add75da96cea 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Use masks not nodes for vector shuffle predicates. Provide set of 'legal' masks, so legalizer won't infinite cycle

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79619 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d0ac234b1b3a88946ad8bb52677764f3e3eeb8b3 21-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Use masks not nodes for vector shuffle predicates. Provide set of 'legal' masks, so legalizer won't infinite cycle

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79619 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
9d35d080280ff92147d325ac65b3f120e96f7560 21-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove Neon intrinsics for VZIP, VUZP, and VTRN. We will represent these as
vector shuffles. Temporarily remove the tests for these operations until the
new implementation is working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79579 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d4b4cf524b8afc342b618254d69f48f214b60093 21-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove Neon intrinsics for VZIP, VUZP, and VTRN. We will represent these as
vector shuffles. Temporarily remove the tests for these operations until the
new implementation is working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79579 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
af35b283da82d4bdd623e8b7d5ae0c16fe55e4fb 20-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix an obvious copy-n-paste bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79535 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
89d177f017f5a41898f373f5c75a91eed0e96c8c 20-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix an obvious copy-n-paste bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79535 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
236ccb5fa1cd720da928d85124fdbd0669633e10 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
3ac391379082bc13e9d8a374ed8f8fbf66c6131f 19-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add support for Neon VEXT (vector extract) shuffles.
This is derived from a patch by Anton Korzh. I modified it to recognize
the VEXT shuffles during legalization and lower them to a target-specific
DAG node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79428 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
de95c1b88be44d4af916af8fba9d7940b7e98e32 19-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add support for Neon VEXT (vector extract) shuffles.
This is derived from a patch by Anton Korzh. I modified it to recognize
the VEXT shuffles during legalization and lower them to a target-specific
DAG node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79428 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
73266f9a953d9cb0833df1208c455725f5adf2ef 19-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate AsmPrinter::SwitchToSection and just have clients
talk to the MCStreamer directly instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6c2f9e14fdf14d8c1c687c6bd9918183fa7f8a7f 19-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate AsmPrinter::SwitchToSection and just have clients
talk to the MCStreamer directly instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79405 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a793115a75b24b6b59de79d12b331a4829c6b9e2 18-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegScavenger::FindUnusedReg.

- Drop the Candidates argument and fix all callers. Now that RegScavenger
tracks available registers accurately, there is no need to restict the
search.
- Make sure that no aliases of the found register are in use. This was a potential bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79369 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMLoadStoreOptimizer.cpp
c0823fe7c679ca8f7d1667a310c2fca97b9402d5 18-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify RegScavenger::FindUnusedReg.

- Drop the Candidates argument and fix all callers. Now that RegScavenger
tracks available registers accurately, there is no need to restict the
search.
- Make sure that no aliases of the found register are in use. This was a potential bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79369 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMLoadStoreOptimizer.cpp
b4c98a3b126da90477787b721329eb227a181e37 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
84b4f2ce266b1bf1616f0f29cdc61db461f53b00 16-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix use after free in Thumb2SizeReduction (PR4707). A MachineInstr was used after erasure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79189 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
9ae7d44d95de16be5ed7bea7e1117160d9e2d5ce 16-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> Fix use after free in Thumb2SizeReduction (PR4707). A MachineInstr was used after erasure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79189 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
5c433f394bc5e2ebc4025bdaad5960124de3f40a 15-Aug-2009 Bill Wendling <isanbard@gmail.com> Reapply r79127. It was fixed by d0k.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79136 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
af5663405834ca7cf4a847f2efa2d624ce99b1d8 15-Aug-2009 Bill Wendling <isanbard@gmail.com> Reapply r79127. It was fixed by d0k.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79136 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
7f3ce7ac58e53176f491d4433c7a7d15988ab78b 15-Aug-2009 Bill Wendling <isanbard@gmail.com> Revert r79127. It was causing compilation errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79135 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
f865ea85bd9d3e04aa795ee03cfc8db339f8c9b9 15-Aug-2009 Bill Wendling <isanbard@gmail.com> Revert r79127. It was causing compilation errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79135 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c109ecf5d6f45edee969a74caabf24213a70d6dc 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> Change allowsUnalignedMemoryAccesses to take type argument since some targets
support unaligned mem access only for certain types. (Should it be size
instead?)

ARM v7 supports unaligned access for i16 and i32, some v6 variants support it
as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79127 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
088880cb192fb6dd5b1bf85af62023c5ca3da38f 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> Change allowsUnalignedMemoryAccesses to take type argument since some targets
support unaligned mem access only for certain types. (Should it be size
instead?)

ARM v7 supports unaligned access for i16 and i32, some v6 variants support it
as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79127 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ff5c7c42d1f1c13ad8ba7f0449a3ca785a19fb95 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> Turn on if-conversion for thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79084 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMISelLowering.cpp
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
bc9b754091ea281e769e487f396b40f6675b9edb 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> Turn on if-conversion for thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79084 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMISelLowering.cpp
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
humb2ITBlockPass.cpp
humb2SizeReduction.cpp
e8e9b04005a57d638d97de966c8a55c0b68dff56 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> Do not use frame register to reference fixed stack objects if the function is frameless.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79067 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
010b1b9e7b11bced0b277a4d808226ba2af3044a 15-Aug-2009 Evan Cheng <evan.cheng@apple.com> Do not use frame register to reference fixed stack objects if the function is frameless.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79067 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
fee1f6802d01a05fa8e80cc4ad301e8f2062ac81 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Leaf functions which do not save CSRs can be frameless even with -disable-fp-elim.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79039 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
98a0104014e9bb6ed89c2572f615351fd526674a 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Leaf functions which do not save CSRs can be frameless even with -disable-fp-elim.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79039 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
cdab71fbe3e03cd2481f648ce9f8ea24e3fc73a5 14-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Allow targets to specify their choice of calling conventions per
libcall. Take advantage of this in the ARM backend to rectify broken
choice of CC when hard float is in effect. PIC16 may want to see if
it could be of use in MakePIC16Libcall, which works unchanged.

Patch by Sandeep!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79033 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
72977a45a8ad9d9524c9b49399e89fb9a3a676ed 14-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Allow targets to specify their choice of calling conventions per
libcall. Take advantage of this in the ARM backend to rectify broken
choice of CC when hard float is in effect. PIC16 may want to see if
it could be of use in MakePIC16Libcall, which works unchanged.

Patch by Sandeep!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79033 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a71c2b6f6ed989e6f9d41c5b0c14e8ba98b0a57b 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add Thumb2 lsr hooks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79032 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e6c835f42418c0fae6b63908d3c576a26d64cab2 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add Thumb2 lsr hooks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79032 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
bdab42c850b035ae48f7ee7ca1bcb467a3c0e976 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79026 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
59bc0604e5283d4f57d074a99891e6b744b4d333 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79026 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
41cb734efafb8fa8bc22a0f33dd137b105b95be6 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79022 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bba9f5f37859f1d53ff061695bfc8c22133c6f0e 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79022 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f7b61a1072a2bdb4a6ba40ba1103663c4f1d8c6d 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Also shrink immediate branches; also more assembler workarounds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79014 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
31b99dd76035067b1c3cc6c7e9d663b7b0210938 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Also shrink immediate branches; also more assembler workarounds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79014 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
4c292c3564ca6b8102e16d23c4ebc048bc3fc8d9 14-Aug-2009 Bob Wilson <bob.wilson@apple.com> Now that all the legal Neon shuffles (or at least the ones that have been
implemented so far) are recognized during legalization, it is easy to fall
back to the default expansion for other shuffles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78995 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
22cac0d9b328ef89a6aafdbda9cd0cea71f8ce46 14-Aug-2009 Bob Wilson <bob.wilson@apple.com> Now that all the legal Neon shuffles (or at least the ones that have been
implemented so far) are recognized during legalization, it is easy to fall
back to the default expansion for other shuffles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78995 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f4f1a2736f5cce5e6b7459dde6084332d87f21e7 14-Aug-2009 Bob Wilson <bob.wilson@apple.com> Create a new ARM-specific DAG node, VDUP, to represent a splat from a
scalar_to_vector. Generate these VDUP nodes during legalization instead
of trying to recognize the pattern during selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78994 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
c1d287b4b73487b6ab094a253a7357addc1d8b84 14-Aug-2009 Bob Wilson <bob.wilson@apple.com> Create a new ARM-specific DAG node, VDUP, to represent a splat from a
scalar_to_vector. Generate these VDUP nodes during legalization instead
of trying to recognize the pattern during selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78994 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
206f6c43cc7b1e8d6ae108a6cee78182e608ac7d 14-Aug-2009 Bob Wilson <bob.wilson@apple.com> During legalization, change Neon vdup_lane operations from shuffles to
target-specific VDUPLANE nodes. This allows the subreg handling for the
quad-register version to be done easily with Pats in the .td file, instead
of with custom code in ARMISelDAGToDAG.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78993 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
0ce371082565330672c276f76297f46b362d74b7 14-Aug-2009 Bob Wilson <bob.wilson@apple.com> During legalization, change Neon vdup_lane operations from shuffles to
target-specific VDUPLANE nodes. This allows the subreg handling for the
quad-register version to be done easily with Pats in the .td file, instead
of with custom code in ARMISelDAGToDAG.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78993 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
a441c1a63b3ee5756a43e561bcd245e198313a98 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
RMConstantIslandPass.cpp
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
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
RMConstantIslandPass.cpp
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
a3ec27c1d07bf29ecd06c0575a0d86c3cb80dce5 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> New entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78968 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
1135a232eb99c033d820d2b278e6f1d19a45cd29 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> New entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78968 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
35b4707edb32008b1a7976dcbf3920b1160fc1c6 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
1d0be15f89cb5056e20e2d24faa8d6afb1573bca 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMLoadStoreOptimizer.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
ee3b6c614de852e172878213380d9de311687779 13-Aug-2009 Daniel Dunbar <daniel@zuster.org> Revert 78892 and 78895, these break generating working executables on
x86_64-apple-darwin10.

--- Reverse-merging r78895 into '.':
U test/CodeGen/PowerPC/2008-12-12-EH.ll
U lib/Target/DarwinTargetAsmInfo.cpp
--- Reverse-merging r78892 into '.':
U include/llvm/Target/DarwinTargetAsmInfo.h
U lib/Target/X86/X86TargetAsmInfo.cpp
U lib/Target/X86/X86TargetAsmInfo.h
U lib/Target/ARM/ARMTargetAsmInfo.h
U lib/Target/ARM/ARMTargetMachine.cpp
U lib/Target/ARM/ARMTargetAsmInfo.cpp
U lib/Target/PowerPC/PPCTargetAsmInfo.cpp
U lib/Target/PowerPC/PPCTargetAsmInfo.h
U lib/Target/PowerPC/PPCTargetMachine.cpp
G lib/Target/DarwinTargetAsmInfo.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78919 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
b42dad4761968b4b052e72494ce1bf0c7b3aba3e 13-Aug-2009 Daniel Dunbar <daniel@zuster.org> Revert 78892 and 78895, these break generating working executables on
x86_64-apple-darwin10.

--- Reverse-merging r78895 into '.':
U test/CodeGen/PowerPC/2008-12-12-EH.ll
U lib/Target/DarwinTargetAsmInfo.cpp
--- Reverse-merging r78892 into '.':
U include/llvm/Target/DarwinTargetAsmInfo.h
U lib/Target/X86/X86TargetAsmInfo.cpp
U lib/Target/X86/X86TargetAsmInfo.h
U lib/Target/ARM/ARMTargetAsmInfo.h
U lib/Target/ARM/ARMTargetMachine.cpp
U lib/Target/ARM/ARMTargetAsmInfo.cpp
U lib/Target/PowerPC/PPCTargetAsmInfo.cpp
U lib/Target/PowerPC/PPCTargetAsmInfo.h
U lib/Target/PowerPC/PPCTargetMachine.cpp
G lib/Target/DarwinTargetAsmInfo.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78919 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
3990e39b87261086add8cf1399b8af195fa0673c 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
a346e714f2836fdbb07582c5c7d4e8bb3ffafaf2 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
dd4f75b26fa233ce68361d709adf757dcdfdde55 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
207a4ba3cce02d3073f24980f45251304d5808b5 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
2868cf17878628907f07ceb5cf0eb27c91a9bbcd 13-Aug-2009 Evan Cheng <evan.cheng@apple.com> tPOP_RET now has predicate operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78898 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
48bd7e3bbc481cd9b99a981f7d8e06989774f9d2 13-Aug-2009 Evan Cheng <evan.cheng@apple.com> tPOP_RET now has predicate operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78898 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
628c99a8051b17b605fc489d11f3e49c5d8e6e67 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add a fixme message about canonicalizing floating-point vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78897 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bfcbb507c232bd386b37abcbc5f478d8a9cccde9 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add a fixme message about canonicalizing floating-point vector types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78897 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
62255b5d072362c0f6d1fd7610ff51014ab44c3a 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Revert r78852 for now. I want to do this differently, but I don't have time
to fix it tonight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78896 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
bab812b4b0126839fe6e026aad54c90164c89765 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Revert r78852 for now. I want to do this differently, but I don't have time
to fix it tonight.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78896 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
54bf800f169cc9594cd79da984fa0c7e32d3b30a 13-Aug-2009 Evan Cheng <evan.cheng@apple.com> It's ok to spill a tGPR register as long as it's still allocated a low register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78893 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
86e5f7b6f8cbe20ee564f3b566ce23419ac44ec4 13-Aug-2009 Evan Cheng <evan.cheng@apple.com> It's ok to spill a tGPR register as long as it's still allocated a low register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78893 91177308-0d34-0410-b5e6-96231b3b80d8
humb1InstrInfo.cpp
9fa0f937cb7795a5b6676788e36608b9bef4ff19 13-Aug-2009 Chris Lattner <sabre@nondot.org> fix a minor fixme. When building with SL and later tools, the ".eh" symbols
don't need to be exported from the .o files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78892 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
b2d3169d96ee780e6b8f43230e36e41d97ed3140 13-Aug-2009 Chris Lattner <sabre@nondot.org> fix a minor fixme. When building with SL and later tools, the ".eh" symbols
don't need to be exported from the .o files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78892 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
26d7ecd5f45419ebe39e07188218c00c0ab3a916 13-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change MCSectionELF to represent a section semantically instead of
syntactically as a string, very similiar to what Chris did with MachO.
The parsing support and validation is not introduced yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78890 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
b808588a3a5febe931896b3779d159ba90d836f7 13-Aug-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change MCSectionELF to represent a section semantically instead of
syntactically as a string, very similiar to what Chris did with MachO.
The parsing support and validation is not introduced yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78890 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
24e23171e85612b1435c265e6e23cc6f9e713f84 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add a comment to describe why vector shuffles are legalized to custom DAG nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78884 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
28865062c1ef60e47f0ac23a5ebc22eaf0d1b184 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add a comment to describe why vector shuffles are legalized to custom DAG nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78884 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
beacf650c3fa2f7dddc55abb94f654a24c22b56c 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use cast<> instead of dyn_cast<> in places where the type is known.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78881 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d06791f6d0b302eeee7189ea8182565594ffdc0e 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use cast<> instead of dyn_cast<> in places where the type is known.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78881 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2aa282f4941f44996dc3e56f658a7a932dfb6531 13-Aug-2009 Dan Gohman <gohman@apple.com> Various AsmWriter output cleanups. Use WriteAsOperand instead of
PrintUnmangledNameSafely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cf20ac4fd12ea3510a8f32a24fff69eebe7b6f4a 13-Aug-2009 Dan Gohman <gohman@apple.com> Various AsmWriter output cleanups. Use WriteAsOperand instead of
PrintUnmangledNameSafely.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78878 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e38b37db20ac7cf9f2db06876eddc5ae5febf273 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Recognize Neon VDUP shuffles during legalization instead of selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78852 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
af385baa1d0438104a67b63a61b264c7cde43c50 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Recognize Neon VDUP shuffles during legalization instead of selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78852 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
0847927af373a2abd24d2ab46c113fda33416e8e 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Recognize Neon VREV shuffles during legalization instead of selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78850 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
d8e1757eacbcbae6657558f40fdada4279a9d1ed 13-Aug-2009 Bob Wilson <bob.wilson@apple.com> Recognize Neon VREV shuffles during legalization instead of selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78850 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
3dbe9443c80ab668ad5cc8547fdb874634f25818 13-Aug-2009 Dan Gohman <gohman@apple.com> This void is implicit in C++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78848 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
a9ad04191cb56c42944b17980b8b2bb2afe11ab2 13-Aug-2009 Dan Gohman <gohman@apple.com> This void is implicit in C++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78848 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
5ef42ed623f1faff939c895a583afa2c27c66619 12-Aug-2009 Bob Wilson <bob.wilson@apple.com> Generate Neon VTBL and VTBX instructions from the corresponding intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78835 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
EONPreAllocPass.cpp
114a266c942ac2dc1e98047a00337ecbc81f7380 12-Aug-2009 Bob Wilson <bob.wilson@apple.com> Generate Neon VTBL and VTBX instructions from the corresponding intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78835 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
EONPreAllocPass.cpp
396d85707b679cbd8227918df11f90c7302068e3 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> PredCC is meant to be 2 bits wide, like PredCC1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78829 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
3aaccffbce9146aad97929d5812fb6271a7443ef 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> PredCC is meant to be 2 bits wide, like PredCC1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78829 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
4b6e4983844989b5a88421f2ac8aa54bed7de166 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMScheduleV7.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMScheduleV7.td
f2d915d7810e0ceb04a207bd6c15c6542ede83e8 12-Aug-2009 Jim Grosbach <grosbach@apple.com> Add catch block handling to SjLj exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78817 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bff392384ddb032c732c38ec78b91d7a25dcf467 12-Aug-2009 Jim Grosbach <grosbach@apple.com> Add catch block handling to SjLj exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78817 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
66b3400110159b259b0ae25bbd13fc660ce1f61b 12-Aug-2009 Bob Wilson <bob.wilson@apple.com> Fix TableGen warnings. This partly reverts my previous change to this file,
leaving the mayLoad and mayStore settings around only the load/store
instructions where those can't be inferred from the patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78815 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9f7d60f460151bf5ba9f90372618cd769216b314 12-Aug-2009 Bob Wilson <bob.wilson@apple.com> Fix TableGen warnings. This partly reverts my previous change to this file,
leaving the mayLoad and mayStore settings around only the load/store
instructions where those can't be inferred from the patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78815 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
23c001b507d051c94f514242b0ce1ddc3cb941fc 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
d88f9fd3f28cee69b0fcdca59532824d5617577e 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple
pair instead of from a virtual method on TargetMachine. This cuts the final
ties of TargetAsmInfo to TargetMachine, meaning that MC can now use
TargetAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
a7ac47cee1a0b3f4c798ecaa22ecf9d1be9c07e6 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change TargetAsmInfo to be constructed via TargetRegistry from a Target+Triple
pair instead of from a virtual method on TargetMachine. This cuts the final
ties of TargetAsmInfo to TargetMachine, meaning that MC can now use
TargetAsmInfo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78802 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
bf4111cb1e3f47364d51932c99e34ee9c2cdab0e 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrink Thumb2 movcc instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78790 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb.td
humb2SizeReduction.cpp
007ea274f4ab85bfc7698240eb5afd5a779ec330 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrink Thumb2 movcc instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78790 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb.td
humb2SizeReduction.cpp
b08935563a0e9cdb1c1ef89fad7254c24b72b582 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove another Darwin assembler workaround.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78779 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
e0d7fe85505b14c014a9da78e891359a99c1e0a3 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove another Darwin assembler workaround.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78779 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b9d5cff0f31c0588f3ca7b77f4c53794995921b0 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78778 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c972165b114477a57f0c6e0984b1be81d5ccdd82 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78778 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
f9e5b5ebb4d7f30a32bd1ba6527277519c186f20 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
RMInstrThumb2.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
RMInstrThumb2.td
427fd7a3460d708a2daa35a6960bbfab1f135eb3 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrink ADDS, ADC, RSB, and SUBS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78776 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
05c269c64593d8cc6aeb0780a5a8afbb86da5691 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrink ADDS, ADC, RSB, and SUBS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78776 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
ee27bece1030da55f205fde76986fe27d746d656 12-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add missing chain operands for VLD* and VST* instructions.
Set "mayLoad" and "mayStore" on the load/store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78761 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
dbd3c0e06dcd4b94c291388b365a93a3710335af 12-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add missing chain operands for VLD* and VST* instructions.
Set "mayLoad" and "mayStore" on the load/store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78761 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
9deae0bef2ad6e84d289db7d3ccfdcdc2c69886f 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrinkify Thumb2 r = add sp, imm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78745 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrThumb.td
humb2SizeReduction.cpp
b89030ab6554d84de4331c2853edac4dbf8da9b9 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrinkify Thumb2 r = add sp, imm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78745 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrThumb.td
humb2SizeReduction.cpp
cae14fd2f334ef46b141a5e400fc43528f5e5b43 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change the asmprinter to print the comment character before the
"inlineasmstart/end" strings so that the contents of the directive
are separate from the comment character. This lets elf targets
get #APP/#NOAPP for free even if they don't use "#" as the comment
character. This also allows hoisting the darwin stuff up to the
shared TAI class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78737 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
e2b060161c92ddf60b5d020f981451e9e34a3f02 12-Aug-2009 Chris Lattner <sabre@nondot.org> Change the asmprinter to print the comment character before the
"inlineasmstart/end" strings so that the contents of the directive
are separate from the comment character. This lets elf targets
get #APP/#NOAPP for free even if they don't use "#" as the comment
character. This also allows hoisting the darwin stuff up to the
shared TAI class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78737 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
eb75972692419eee5ea85909cea17b04abeeddc6 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Allow a zero cycle stage to reserve/require a FU without advancing the cycle counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78736 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
546952fd600ddba3f1eb6d4f93ff4eb42821a962 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Allow a zero cycle stage to reserve/require a FU without advancing the cycle counter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78736 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
ca22f87bf12d401bf7b3f0411daaa5184131dfa2 12-Aug-2009 Chris Lattner <sabre@nondot.org> factorize more darwin TAI stuff. Note that this gives
darwin/arm support for .no_dead_strip


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78734 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
e28a2e8b70e926324575ddec0a1565c6dba7d404 12-Aug-2009 Chris Lattner <sabre@nondot.org> factorize more darwin TAI stuff. Note that this gives
darwin/arm support for .no_dead_strip


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78734 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
75dabac7cf3820b5463852b4404851a740fb3228 12-Aug-2009 Chris Lattner <sabre@nondot.org> factorize darwin ProtectedDirective and SetDirective.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78732 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
e2811a74803d24fff45a186d2871377d248cec1c 12-Aug-2009 Chris Lattner <sabre@nondot.org> factorize darwin ProtectedDirective and SetDirective.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78732 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
9364e7229cb5678ecd26c2a4181b2e7603322ba6 12-Aug-2009 Chris Lattner <sabre@nondot.org> all darwin targets have .space and .zerofill, pull up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78730 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
b6ba9c36dbc54c85b86b29d9491c457b4de8b60c 12-Aug-2009 Chris Lattner <sabre@nondot.org> all darwin targets have .space and .zerofill, pull up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78730 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
1bc7ea6ec052737d0dc444a568d6e9b9745f6669 12-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate template from arm TAI


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78729 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
5f28ffe6c25a8dea55aee425648e4942c04e4f3f 12-Aug-2009 Chris Lattner <sabre@nondot.org> eliminate template from arm TAI


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78729 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
7fbb0a1d451373a93b58b31f40e4e7c275d5c9eb 12-Aug-2009 Chris Lattner <sabre@nondot.org> move LCOMMDirective = "\t.lcomm\t" up to DarwinTAI, eliminate
template in PPC backend for TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78727 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
c89ecc5c2f6c089db328e2856aadf9fd4a1a0bd3 12-Aug-2009 Chris Lattner <sabre@nondot.org> move LCOMMDirective = "\t.lcomm\t" up to DarwinTAI, eliminate
template in PPC backend for TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78727 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
94958144886d364172e378c033ce2453ca7e7b5c 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
RMConstantIslandPass.cpp
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
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
RMConstantIslandPass.cpp
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2SizeReduction.cpp
36e3a6e235ee8b21eba777686b4508f71248b869 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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
humb1RegisterInfo.h
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
humb1RegisterInfo.h
d9236ecabe1bd73e89ce5cdb12da8a1bfdc67a0d 11-Aug-2009 Chris Lattner <sabre@nondot.org> pass the TargetTriple down from each target ctor to the
LLVMTargetMachine ctor. It is currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78711 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
0a31d2f6456069adba19b8aeca66c68b633c38b4 11-Aug-2009 Chris Lattner <sabre@nondot.org> pass the TargetTriple down from each target ctor to the
LLVMTargetMachine ctor. It is currently unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78711 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
df97304b68f46fc1afed8a54b71eaea20973a8f4 11-Aug-2009 Chris Lattner <sabre@nondot.org> split "JumpTableDirective" (an existing hack) into a PIC and nonPIC
version. This allows TAI implementations to specify the directive to use
based on the mode being codegen'd for.

The real fix for this is to remove JumpTableDirective, but I don't feel
like diving into the jumptable snarl just now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78709 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
dfab291702a9c6e88981047bf6a3fe42f7d508b0 11-Aug-2009 Chris Lattner <sabre@nondot.org> split "JumpTableDirective" (an existing hack) into a PIC and nonPIC
version. This allows TAI implementations to specify the directive to use
based on the mode being codegen'd for.

The real fix for this is to remove JumpTableDirective, but I don't feel
like diving into the jumptable snarl just now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78709 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cc6e66ab427fd02a31b06ad6302098be72899516 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
RMBaseInstrInfo.cpp
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMInstrThumb2.td
89116de4c762ecba8215146476297f5c2357ba57 11-Aug-2009 Jim Grosbach <grosbach@apple.com> fix GetInstSizeInBytes for eh_sjlj_setjmp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78683 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
cdc17ebc2b2e9e18ac516b9d246a5c5a3af227d3 11-Aug-2009 Jim Grosbach <grosbach@apple.com> fix GetInstSizeInBytes for eh_sjlj_setjmp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78683 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
909610aa7b45b775b151fd8338d71e20f0fbf1f3 11-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> This void is implicit in C++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78678 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
327365e58fd8aa2159be77f86b8017da814c59e1 11-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> This void is implicit in C++.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78678 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
770d718405114860f3874871848e345873bf7cb4 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Whitespace cleanup. Remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78666 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMSubtarget.h
RMTargetMachine.cpp
RMTargetObjectFile.h
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
764ab52dd80310a205c9888bf166d09dab858f90 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Whitespace cleanup. Remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78666 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMSubtarget.h
RMTargetMachine.cpp
RMTargetObjectFile.h
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
3fe420be2d2032ac5dbeae61c170b64d9acd4e1f 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Move ~ARMConstantPoolValue() to the .cpp file to avoid needing to include <cstdlib> in the header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78665 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
f128787f941bb372e80d69b786ed144d8606a292 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Move ~ARMConstantPoolValue() to the .cpp file to avoid needing to include <cstdlib> in the header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78665 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
a855ffa77adc5e3ebfc9e296956e56c601be38da 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix the previous accidental commit. Now shrinking common Thumb2 load / store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
humb2SizeReduction.cpp
195c71b472d3f83c1051d2b87f4e93cc928b6ec9 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix the previous accidental commit. Now shrinking common Thumb2 load / store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78659 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
humb2SizeReduction.cpp
e8f37121a379584bd03b8f724f5a63eafcbdb3ee 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix Thumb2 load / store addressing mode matching code. Do not use so_reg form to
match base only address, i.e. [r] since Thumb2 requires a offset register field.
For those, use [r + imm12] where the immediate is zero.
Note the generated assembly code does not look any different after the patch.
But the bug would have broken the JIT (if there is Thumb2 support) and it can
break later passes which expect the address mode to be well-formed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78658 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
smPrinter/ARMAsmPrinter.cpp
humb2SizeReduction.cpp
3a21425dbe09c7ac85e6b156f82184dd6132435a 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix Thumb2 load / store addressing mode matching code. Do not use so_reg form to
match base only address, i.e. [r] since Thumb2 requires a offset register field.
For those, use [r + imm12] where the immediate is zero.
Note the generated assembly code does not look any different after the patch.
But the bug would have broken the JIT (if there is Thumb2 support) and it can
break later passes which expect the address mode to be well-formed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78658 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
smPrinter/ARMAsmPrinter.cpp
humb2SizeReduction.cpp
64cfb7f95ab073d275cd96a2fb5d6a5b57abe14c 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
RMInstrThumb2.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
RMInstrThumb2.td
275468af219080d7c1d1b52baf64c2d85950f962 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78655 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
4a8ea215e69e9ca19c8acf1c236b73860188a023 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Cosmetic changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78655 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9d9601b8d4ac9cbf37dca95d2b95ffcead4ea508 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Adding a blank line back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78654 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
7fb8c3ffc0b41d60ac935b8f3550f262a28f155d 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Adding a blank line back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78654 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
8f10b3f2521e99168e7fb89310270d821a0b00fb 11-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use vAny type to get rid of Neon intrinsics that differed only in whether
the overloaded vector types allowed floating-point or integer vector elements.
Most of these operations actually depend on the element type, so bitcasting
was not an option.

If you include the vpadd intrinsics that I updated earlier, this gets rid
of 20 intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78646 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
b0abb4dc4203b903d8d0b48a952ba0a6312eeeb7 11-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use vAny type to get rid of Neon intrinsics that differed only in whether
the overloaded vector types allowed floating-point or integer vector elements.
Most of these operations actually depend on the element type, so bitcasting
was not an option.

If you include the vpadd intrinsics that I updated earlier, this gets rid
of 20 intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78646 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
1c2660e35128fd67548385951ea81ace076a835b 11-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use new EVT::vAny type to combine Neon intrinsics for VPADD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78632 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f24bd401eb453f3e15e69a093b3943f7946d5bed 11-Aug-2009 Bob Wilson <bob.wilson@apple.com> Use new EVT::vAny type to combine Neon intrinsics for VPADD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78632 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2dc814624f67cd6ea1f6e005a287365c92f95fe5 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Fix bug in NEON convert for single-precision FP. This also fixes the tblgen warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78629 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f35290ce8d562eb80bc6e5f2b07c423f7e10a132 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Fix bug in NEON convert for single-precision FP. This also fixes the tblgen warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78629 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
0325b5c4797722ce65d145a4e80c7ed4c36baa66 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Add stdlib.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78627 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
3034e8fb1f1d65d335cd88ee3bbc5feb6e86d732 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Add stdlib.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78627 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
29feb6a583204de0948def1d59d186e4b837ef52 11-Aug-2009 Jim Grosbach <grosbach@apple.com> SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMInstrInfo.td
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
1b747ad8a0694b86e8d98a8b9a05ddfe74ec0cd3 11-Aug-2009 Jim Grosbach <grosbach@apple.com> SjLj based exception handling unwinding support. This patch is nasty, brutish
and short. Well, it's kinda short. Definitely nasty and brutish.

The front-end generates the register/unregister calls into the SjLj runtime,
call-site indices and landing pad dispatch. The back end fills in the LSDA
with the call-site information provided by the front end. Catch blocks are
not yet implemented.

Built on Darwin and verified no llvm-core "make check" regressions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78625 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMInstrInfo.td
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
02f6f9f1055d0a0abf5d14eaeeddcaf3f65be0ab 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Enable Thumb2 instruction shrinking (32-bit to 16-bit) pass. Convert a bunch of thumb2 tests to FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78622 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
3a1f0f6785e27eb8ede455a3583ca8c885d3911e 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Enable Thumb2 instruction shrinking (32-bit to 16-bit) pass. Convert a bunch of thumb2 tests to FileCheck.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78622 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
3f20cb6d9679205620a4fd51d3ec9aa73bf3a508 11-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bug where DAGCombine was producing an illegal ConstantFP
node after legalize, and remove the workaround code from the
ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a407ca16c29b4e91ef3cf9e188ac2e3ab6920cd8 11-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bug where DAGCombine was producing an illegal ConstantFP
node after legalize, and remove the workaround code from the
ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
ac9de036dc0e4065ee2c03419f11515a34ce505e 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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
humb1RegisterInfo.cpp
humb1RegisterInfo.h
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
humb1RegisterInfo.cpp
humb1RegisterInfo.h
4b358dbdfc1bea92346785e4227f2eeeb8beee46 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Use NEON for single-precision int<->FP conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78604 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
338268c67fbb7252702bf400495771068750466b 11-Aug-2009 David Goodwin <david_goodwin@apple.com> Use NEON for single-precision int<->FP conversions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78604 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
a0c69eb90d53b9f5e7f4a1e070ebbaf3d0d4bda8 10-Aug-2009 Owen Anderson <resistor@mac.com> SimpleValueType-ify a few more methods on TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78595 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d6662add687f20cffa0755e410efbb40de4dcf23 10-Aug-2009 Owen Anderson <resistor@mac.com> SimpleValueType-ify a few more methods on TargetLowering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78595 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
898c62b4036f13a156a58c437f43f4fcb17923a0 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Handle the constantfp created during post-legalization dag combiner phase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78594 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e2b861f7d91c09115cd637614b1bc5f5154bce1d 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Handle the constantfp created during post-legalization dag combiner phase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78594 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a4509893aacf06a14f470c0981aa90b7248423a8 10-Aug-2009 Owen Anderson <resistor@mac.com> Continue the SimpleValueType-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78593 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
70671845adce8ab36ae596bb06d0375459a7a2af 10-Aug-2009 Owen Anderson <resistor@mac.com> Continue the SimpleValueType-ification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78593 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7f1ac7fb49bc11464120fc29541c3efef52eed96 10-Aug-2009 Chris Lattner <sabre@nondot.org> split MachO section handling stuff out to its out .h/.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78576 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
f9bdeddb96043559c61f176f8077e3b91a0c544f 10-Aug-2009 Chris Lattner <sabre@nondot.org> split MachO section handling stuff out to its out .h/.cpp file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78576 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
05fbaf65399b1894965304256dbe2abd0decbe19 10-Aug-2009 Chris Lattner <sabre@nondot.org> arm only needs to emit one .align directive for hidden nlp's, not one
per pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
f3231de60bb64c3f6fc6770b3e6174f4f839a4f3 10-Aug-2009 Chris Lattner <sabre@nondot.org> arm only needs to emit one .align directive for hidden nlp's, not one
per pointer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78574 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
13089a4eb9c13664c597485e561d6d5476f0cfba 10-Aug-2009 Chris Lattner <sabre@nondot.org> make sure that arm nonlazypointers are aligned properly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c076a9793936b140364671a5e39ee53bd266c6c3 10-Aug-2009 Chris Lattner <sabre@nondot.org> make sure that arm nonlazypointers are aligned properly


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
48e1359f978cc5959179860de764ea40e91c42ea 10-Aug-2009 David Goodwin <david_goodwin@apple.com> Checkpoint scheduling itinerary changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78564 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
bcf81629b85218ba86d9a4b4fdd06d4c182ba9a0 10-Aug-2009 David Goodwin <david_goodwin@apple.com> Checkpoint scheduling itinerary changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78564 91177308-0d34-0410-b5e6-96231b3b80d8
RMSchedule.td
RMScheduleV6.td
RMScheduleV7.td
56634756463eda355e2841cac0d39f110e94a47b 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Watch out for empty BB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78562 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
65f2e7887a8b70b3ee63ef535a6bcfe8a170c074 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Watch out for empty BB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78562 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
2db61f9d268c48db9df76d76a550b0e45fdfcabd 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> rev, rev16, and revsh do not set CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78561 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
8442d00a0ea750200b34a7fa94b5b72033da65b3 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> rev, rev16, and revsh do not set CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78561 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
0fdb1d4baf7a431a1250711710e6ced341b93835 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Duh. Most 16-bit Thumb rr instructions are two-address. Fix table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78560 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
0d3007bb32c9085e6d45264133248a98379e2d8a 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Duh. Most 16-bit Thumb rr instructions are two-address. Fix table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78560 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
3bc97d6ee3eea839929f8a7389c5ae95d6302223 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> CPSR can be livein; transfer predicate operands correctly; tMUL is two-address.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78559 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
26cc252a43c20eccbd49ae92dea8b5a1bb02cdc2 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> CPSR can be livein; transfer predicate operands correctly; tMUL is two-address.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78559 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
fab4d981673c13470c7f13076d25d4b7180550fd 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add support for folding loads / stores into 16-bit moves used by Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78558 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
19068ba71a480d9b5032fd9f87eb412e8beb09f4 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add support for folding loads / stores into 16-bit moves used by Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78558 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ebc39166f670961c5008b06762745a0d03cf1b39 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78557 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
229464564243b24fb12cece515d727673e726994 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78557 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
5fa65db760b50a43a68ab7577c56cc8fa362427c 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Use tMOVgpr2gpr instead of t2MOVr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78556 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
052053bbe3169a3574cb5af026cf0a5d616ae04d 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Use tMOVgpr2gpr instead of t2MOVr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78556 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
6dadbee58837a1ce323b16aa818c6fd753f432f7 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
RMBaseInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
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
RMBaseInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
humb2SizeReduction.cpp
d2f87a67623caff88d29d01be4acf74b0b3e479d 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Always use the 16-bit tMOVgpr2gpr instead of the 32-bit t2MOVr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78549 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
09d97354edb65473e61337f543b66855896de134 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Always use the 16-bit tMOVgpr2gpr instead of the 32-bit t2MOVr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78549 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
72a676aa4aa35b3eef2ac29b5bb79b4f941c1948 10-Aug-2009 Chris Lattner <sabre@nondot.org> Make the big switch: Change MCSectionMachO to represent a section *semantically*
instead of syntactically as a string. This means that it keeps track of the
segment, section, flags, etc directly and asmprints them in the right format.
This also includes parsing and validation support for llvm-mc and
"attribute(section)", so we should now start getting errors about invalid
section attributes from the compiler instead of the assembler on darwin.

Still todo:
1) Uniquing of darwin mcsections
2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h]
3) there are a few FIXMEs, for example what is the syntax to get the
S_GB_ZEROFILL segment type?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78547 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ff4bc460c52c1f285d8a56da173641bf92d49e3f 10-Aug-2009 Chris Lattner <sabre@nondot.org> Make the big switch: Change MCSectionMachO to represent a section *semantically*
instead of syntactically as a string. This means that it keeps track of the
segment, section, flags, etc directly and asmprints them in the right format.
This also includes parsing and validation support for llvm-mc and
"attribute(section)", so we should now start getting errors about invalid
section attributes from the compiler instead of the assembler on darwin.

Still todo:
1) Uniquing of darwin mcsections
2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h]
3) there are a few FIXMEs, for example what is the syntax to get the
S_GB_ZEROFILL segment type?



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78547 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
71efb4f6e333b5ed9718e017abac16d4c312f23f 09-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add support to convert 32-bit instructions to 16-bit non-two-address ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78540 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
a56c57e5f0876e7c47adbdaa59248fee3131d3be 09-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add support to convert 32-bit instructions to 16-bit non-two-address ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78540 91177308-0d34-0410-b5e6-96231b3b80d8
humb2SizeReduction.cpp
e2be3383447e747354ae2dfe965f8617136f88d6 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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
d0d09fcf74cd20325acc3dcc38007c4ebc2816ff 09-Aug-2009 Chris Lattner <sabre@nondot.org> 1. Make MCSection an abstract class.
2. Move section switch printing to MCSection virtual method which takes a
TAI. This eliminates textual formatting stuff from TLOF.
3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and
TLOFELF::AtIsCommentChar.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
892e18239308f8a02a4c83758616be84a459c19d 09-Aug-2009 Chris Lattner <sabre@nondot.org> 1. Make MCSection an abstract class.
2. Move section switch printing to MCSection virtual method which takes a
TAI. This eliminates textual formatting stuff from TLOF.
3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and
TLOFELF::AtIsCommentChar.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
849290adaa476e99074db8e0519faca0a2284564 08-Aug-2009 Chris Lattner <sabre@nondot.org> now that getOrCreateSection is all object-file specific,
give the impls an object-file-specific name. In the future
they can take different arguments etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78495 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
0c0cb7123346beab4e0d3ad6ce9570560b14971e 08-Aug-2009 Chris Lattner <sabre@nondot.org> now that getOrCreateSection is all object-file specific,
give the impls an object-file-specific name. In the future
they can take different arguments etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78495 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
85fb26f6020af85ba9c3a3b68b15c218f2cde280 08-Aug-2009 Daniel Dunbar <daniel@zuster.org> Update CMake


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78475 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
cf1e764a1c1a15f3710ca41ecad5662527fca21f 08-Aug-2009 Daniel Dunbar <daniel@zuster.org> Update CMake


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78475 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
49284e74a5be31b2a2c99c956ba296f978b2e3ab 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add insert_elt / extract_elt patterns for v4f32 stuff.
Did anyone tests v4f32 ever?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78470 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
06af2ba80991e57063abe55b84b32e650973f1ac 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Add insert_elt / extract_elt patterns for v4f32 stuff.
Did anyone tests v4f32 ever?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78470 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
f141141c3776a621442485520316c3bd45ab370f 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Lane number should be printed w/o hash

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78469 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
3405201bcedd8c509f484cc342fc2d6304dd5da3 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Lane number should be printed w/o hash

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78469 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
3f08766da2675d1c8b57303b5e263d878abfb0cd 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Use VLDM / VSTM to spill/reload 128-bit Neon registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78468 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
baf31088f1472f48ea5ae81f0b93636cc44ca444 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Use VLDM / VSTM to spill/reload 128-bit Neon registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78468 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
c1eaa4d40719e34857f514cf567ea3a373d30608 08-Aug-2009 Bob Wilson <bob.wilson@apple.com> Implement Neon VZIP and VUZP instructions. These are very similar to VTRN,
so I generalized the class for VTRN in the .td file to handle all 3 of them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78460 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
b6ab51e8297281888b85eee8c38215eab2649c4b 08-Aug-2009 Bob Wilson <bob.wilson@apple.com> Implement Neon VZIP and VUZP instructions. These are very similar to VTRN,
so I generalized the class for VTRN in the .td file to handle all 3 of them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78460 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
3b169335b47956cfde20ff854bcb5bf052e928a8 08-Aug-2009 Bob Wilson <bob.wilson@apple.com> Implement Neon VTRN instructions. For now, anyway, these are selected
directly from the intrinsics produced by the frontend. If it is more
convenient to have a custom DAG node for using these to implement shuffles,
we can add that later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
64efd90f8c878214abc29afa3d1c1e7bfe854a49 08-Aug-2009 Bob Wilson <bob.wilson@apple.com> Implement Neon VTRN instructions. For now, anyway, these are selected
directly from the intrinsics produced by the frontend. If it is more
convenient to have a custom DAG node for using these to implement shuffles,
we can add that later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
a108309120c616b456aad9d22255f1e6e7a1d442 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add a skeleton Thumb2 instruction size reduction pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78456 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
humb2SizeReduction.cpp
3eff16e27a4b0e9dfb8c0061faf10fdce9f4df4e 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add a skeleton Thumb2 instruction size reduction pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78456 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
humb2SizeReduction.cpp
05a1bfd2c76c5dc568560a6ef265eacf1873bccc 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> Code refactoring. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78455 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMLoadStoreOptimizer.cpp
8fb903604e83dfd63659c919042bf2bfed3c940f 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> Code refactoring. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78455 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMLoadStoreOptimizer.cpp
a42214a57ebee527a50abb0b06d32a9b13738749 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> tADDhirr should target GPR, not tGPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78454 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
57834cdee56cf3df2ea0a7010d3977adc007d5e5 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> tADDhirr should target GPR, not tGPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78454 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
44690b2c1e034f9927df3fb797ba19085368ef4f 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> I can type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78453 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
34f8a029e341a74fd02ccb198f4d4f0c8b38c015 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> I can type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78453 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
ddb259a23c415dff73cf9d85ae835f533690fdfd 08-Aug-2009 Chris Lattner <sabre@nondot.org> make printInstruction return void since its result is omitted. Make the
error condition get trapped with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
41aefdcdd1c1631041834d53ffada106a5cfaf02 08-Aug-2009 Chris Lattner <sabre@nondot.org> make printInstruction return void since its result is omitted. Make the
error condition get trapped with an assert.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78449 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
38d4169aa39ad934c13b3f0ae0f18132d570521d 08-Aug-2009 David Goodwin <david_goodwin@apple.com> Make NEON single-precision FP support the default for cortex-a8 (again).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78430 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
767a952a6fe812466b21ea3ab5748a15aec6ebfd 08-Aug-2009 David Goodwin <david_goodwin@apple.com> Make NEON single-precision FP support the default for cortex-a8 (again).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78430 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
8e4585fb9ab25b18366ca6b50c67fb28b9bae40a 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Unbreak the stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78425 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
a55fd4a23f1d766790acc07d25c6c0013d4bca30 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Unbreak the stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78425 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
9c913fbc77965d161856c9e797ca3f10c09dcb55 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> 2 more vdup.32 cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78419 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
32a1b257813e133ba1146289a9aa43ed8ad9c00d 08-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> 2 more vdup.32 cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78419 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
6fc3248620145044629a08b9202c6afc8a9f2dde 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> A big oops. Thumb1 default CC is a def of CPSR, not a use of CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78418 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
fcc716352b893b45da2d6aa9d7afff8ba1ad0527 08-Aug-2009 Evan Cheng <evan.cheng@apple.com> A big oops. Thumb1 default CC is a def of CPSR, not a use of CPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78418 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
9b53104dfd8c2bb2d9eca8b000a998f100196d5a 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
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
bdd3fde4845351a49cabf7d42a391a0fa155f479 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> This is done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78399 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
f12288e8aa27a7cb1e48e1fceccd5cf49876104e 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> This is done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78399 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
e61fb9c959d6703dbcc5ac919470f0c37ee01109 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Use 16-bit tMOVgpr2gpr instead of tMOVr to copy GPR registers in Thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78398 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
humb2InstrInfo.cpp
e118cb614643c568716ee612366cae4c365a8aa3 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Use 16-bit tMOVgpr2gpr instead of tMOVr to copy GPR registers in Thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78398 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
humb2InstrInfo.cpp
46961d83a791897a1eac69dce49b49408728227d 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix support to use NEON for single precision fp math.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78397 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
1d2426c4701650846922d312eb742cc55385c721 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix support to use NEON for single precision fp math.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78397 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
3c05d13bee9053f2350cfd5d650f106add305c27 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Error out, rather than infinite looping, if constant island pass can't converge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78377 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b6879b2b84df2f642cd39f5bf58584c4a39f8080 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Error out, rather than infinite looping, if constant island pass can't converge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78377 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
d6053af8ed2d4e9cf4fecd0594e2c2b250287f12 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> tBfar is bl, which clobbers LR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78370 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
53c67c0218d8420234dd71bf2d9df3388909af77 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> tBfar is bl, which clobbers LR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78370 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrThumb.td
6d29b324f77099bf84fefbf8cb529de5141e1080 07-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bunch of namespace pollution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78363 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
7db949df789383acce98ef072f08794fdd5bd04e 07-Aug-2009 Dan Gohman <gohman@apple.com> Fix a bunch of namespace pollution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78363 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
815c23a1ce10135b3158451b56c3ff469febbef3 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
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
EADME-Thumb2.txt
humb2InstrInfo.cpp
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
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
EADME-Thumb2.txt
humb2InstrInfo.cpp
6a209cd114d8d1db00ddad1af7f73ae13b3efa98 06-Aug-2009 Bob Wilson <bob.wilson@apple.com> Implement Neon VST[234] operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78330 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
EONPreAllocPass.cpp
b36ec86c01e3c3238dca621648f017aef96dda60 06-Aug-2009 Bob Wilson <bob.wilson@apple.com> Implement Neon VST[234] operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78330 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
EONPreAllocPass.cpp
cfd6765463c874dd55c8efff6fe87a7c5aa43b92 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
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.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
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrThumb.td
RMInstrThumb2.td
RMInstrVFP.td
163757aba770b06c111275ec23c1f416ac132c96 06-Aug-2009 Bob Wilson <bob.wilson@apple.com> Neon does not actually have VLD{234}.64 instructions.
These operations will have to be synthesized from other instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78263 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
0cedab9a0d5127049ac1da54e2891d91796e5c61 06-Aug-2009 Bob Wilson <bob.wilson@apple.com> Neon does not actually have VLD{234}.64 instructions.
These operations will have to be synthesized from other instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78263 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrNEON.td
EONPreAllocPass.cpp
2267933252114a408c8b9448a85744b41a069ae9 06-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add a new pre-allocation pass to assign adjacent registers for Neon instructions
that have that constraint. This is currently just assigning a fixed set of
registers, and it only handles VLDn for n=2,3,4 with DPR registers.
I'm going to expand it to handle more operations next; we can make it smarter
once everything is working correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78256 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
MakeLists.txt
EONPreAllocPass.cpp
70cd88fb7b5b77f8bbca7417e624d11b6e22a7e7 06-Aug-2009 Bob Wilson <bob.wilson@apple.com> Add a new pre-allocation pass to assign adjacent registers for Neon instructions
that have that constraint. This is currently just assigning a fixed set of
registers, and it only handles VLDn for n=2,3,4 with DPR registers.
I'm going to expand it to handle more operations next; we can make it smarter
once everything is working correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78256 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
MakeLists.txt
EONPreAllocPass.cpp
2105b90ab62c2b09b380f7b89a4383fe07f8a19e 05-Aug-2009 David Goodwin <david_goodwin@apple.com> When using NEON for single-precision FP, the NEON result must be placed in D0-D15 as these are the only D registers with S subregs. Introduce a new regclass to represent D0-D15 and use it in the NEON single-precision FP patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78244 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMRegisterInfo.td
7bfdca0206f51132b26094c6f83a5ac97ee0f943 05-Aug-2009 David Goodwin <david_goodwin@apple.com> When using NEON for single-precision FP, the NEON result must be placed in D0-D15 as these are the only D registers with S subregs. Introduce a new regclass to represent D0-D15 and use it in the NEON single-precision FP patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78244 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMInstrNEON.td
RMRegisterInfo.td
7bd8d73d4825087d6e3b8e6c5295b74b6c3e6218 05-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Remove redundand checks: the only way to have, e.g. f32 RegVT is exactly
hardfloat case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78237 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
058c251d4ac23bb3f9ca66eb0e465fa2c6c66f42 05-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Remove redundand checks: the only way to have, e.g. f32 RegVT is exactly
hardfloat case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78237 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9d6269e95bb3723d78398c9e60a08ddf14af51ea 05-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Unbreak the stuff, this is ugly, but we cannot do better for now with 'plain' C calling conv.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78232 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
14d9495403e4c0129119a79322ee4e744b2eced8 05-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Unbreak the stuff, this is ugly, but we cannot do better for now with 'plain' C calling conv.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78232 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
02e15b8bf527067fb347214f77c2c8166ae0078a 05-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Missed pieces for ARM HardFP ABI.
Patch by Sandeep Patel!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78225 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
smPrinter/ARMAsmPrinter.cpp
567d14f07cd62bfb9dd0edd90144a0a840450f7a 05-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Missed pieces for ARM HardFP ABI.
Patch by Sandeep Patel!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78225 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
smPrinter/ARMAsmPrinter.cpp
fa0c2a8234fd76deaef312499eb1e4c4ad83d112 05-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove some dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78219 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
e22f4da01d57f51757663fdcae986af0aeca49fe 05-Aug-2009 Daniel Dunbar <daniel@zuster.org> Remove some dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78219 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
4a8ee1bccdaa28cf8d0f2236911b531b80bdd403 05-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove a redundant declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78216 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
7f0f2515a01596a2785aca9ee5f630ecc0ab134a 05-Aug-2009 Bob Wilson <bob.wilson@apple.com> Remove a redundant declaration.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78216 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
21ff88337d1d7b5da364c4a97471000edb4cb686 05-Aug-2009 David Goodwin <david_goodwin@apple.com> Disable NEON single-precision FP support for Cortex-A8, for now...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78209 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
ce3c1f2a0e726832286fde44cd3b0c4be605c19c 05-Aug-2009 David Goodwin <david_goodwin@apple.com> Disable NEON single-precision FP support for Cortex-A8, for now...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78209 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
c6d513775142204b35aa0b30a59940a2ebf73ae9 05-Aug-2009 Devang Patel <dpatel@apple.com> Remove dead code. MDNode and MDString are not Constant anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78207 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
bccdcb1857f400206ed07984dc04e229c6013cc6 05-Aug-2009 Devang Patel <dpatel@apple.com> Remove dead code. MDNode and MDString are not Constant anymore.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78207 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8916f80c379a4e57d6950ac2ef89de5159e9cd0b 05-Aug-2009 David Goodwin <david_goodwin@apple.com> By default, for cortex-a8 use NEON for single-precision FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78200 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
1f0e404c87675ce75e34bcd91395c660fe1d4ac1 05-Aug-2009 David Goodwin <david_goodwin@apple.com> By default, for cortex-a8 use NEON for single-precision FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78200 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
3f19e31f3ba41771d31f8e54eb2f054af668c1f3 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78175 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
61f4b721b2f268ffbd0be614a4f328d541fa1d81 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 col violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78175 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
5bf205713e799a2072967a00b6d8550229c8204f 05-Aug-2009 Bob Wilson <bob.wilson@apple.com> Oops. I didn't mean to commit this piece yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78146 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
aa289d5e7f526b3586a2b1e0b5bb6c1e5af9ef5d 05-Aug-2009 Bob Wilson <bob.wilson@apple.com> Oops. I didn't mean to commit this piece yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78146 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
9178de1d2b1e0787539b83ed54ad505ff13169e8 05-Aug-2009 Dan Gohman <gohman@apple.com> Major calling convention code refactoring.

Instead of awkwardly encoding calling-convention information with ISD::CALL,
ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
provides three virtual functions for targets to override:
LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
lowering done on the special nodes. They provide the same information, but
in a more immediately usable format.

This also reworks much of the target-independent tail call logic. The
decision of whether or not to perform a tail call is now cleanly split
between target-independent portions, and the target dependent portion
in IsEligibleForTailCallOptimization.

This also synchronizes all in-tree targets, to help enable future
refactoring and feature work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78142 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
98ca4f2a325f72374a477f9deba7d09e8999c29b 05-Aug-2009 Dan Gohman <gohman@apple.com> Major calling convention code refactoring.

Instead of awkwardly encoding calling-convention information with ISD::CALL,
ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
provides three virtual functions for targets to override:
LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
lowering done on the special nodes. They provide the same information, but
in a more immediately usable format.

This also reworks much of the target-independent tail call logic. The
decision of whether or not to perform a tail call is now cleanly split
between target-independent portions, and the target dependent portion
in IsEligibleForTailCallOptimization.

This also synchronizes all in-tree targets, to help enable future
refactoring and feature work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78142 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
c2cd97a71c66240b49a6af5ad38b2d950a0181d5 05-Aug-2009 Dan Gohman <gohman@apple.com> Don't flush the raw_ostream between each MachineFunction. These flush
calls were originally put in place because errs() at one time was
not unbuffered, and these print routines are commonly used with errs()
for debugging. However, errs() is now properly unbuffered, so the
flush calls are no longer needed. This significantly reduces the
number of write(2) calls for regular asm printing when there are many
small functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1c55fab53455f11fbd7bde69d0c5911031218e35 05-Aug-2009 Dan Gohman <gohman@apple.com> Don't flush the raw_ostream between each MachineFunction. These flush
calls were originally put in place because errs() at one time was
not unbuffered, and these print routines are commonly used with errs()
for debugging. However, errs() is now properly unbuffered, so the
flush calls are no longer needed. This significantly reduces the
number of write(2) calls for regular asm printing when there are many
small functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78137 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
055a90dd7e4c218f53b5ee646afd6be06a18d6f3 05-Aug-2009 Bob Wilson <bob.wilson@apple.com> Change DAG nodes for Neon VLD2/3/4 operations to return multiple results.
Get rid of yesterday's code to fix the register usage during isel.
Select the new DAG nodes to machine instructions. The new pre-alloc pass
to choose adjacent registers for these results is not done, so the
results of this will generally not assemble yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78136 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
RMTargetMachine.cpp
4a3d35abefa3a1f6558ef88b25f2a320c76d5328 05-Aug-2009 Bob Wilson <bob.wilson@apple.com> Change DAG nodes for Neon VLD2/3/4 operations to return multiple results.
Get rid of yesterday's code to fix the register usage during isel.
Select the new DAG nodes to machine instructions. The new pre-alloc pass
to choose adjacent registers for these results is not done, so the
results of this will generally not assemble yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78136 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrNEON.td
RMTargetMachine.cpp
d16eb2fb217128c28c5ce2fefbd08d3e9236aa5c 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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
560d2d0754776d68b93fc927ab4a193c81bf9319 04-Aug-2009 Bob Wilson <bob.wilson@apple.com> Replace dregsingle operand modifier with explicit escaped curly brackets.
For other VLDn and VSTn operations, we need to list the multiple registers
explicitly anyway, so there's no point in special-casing this one usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78109 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
c00479253b92dd79b0345e4229af62835533347c 04-Aug-2009 Bob Wilson <bob.wilson@apple.com> Replace dregsingle operand modifier with explicit escaped curly brackets.
For other VLDn and VSTn operations, we need to list the multiple registers
explicitly anyway, so there's no point in special-casing this one usage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78109 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
06c0e626b6021938b64b376d677631936ac21b56 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Enable load / store multiple pass for Thumb2. It's not using ldrd / strd yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78104 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
9e7a312391cb955bfc148d15a69adcaf7cc3ae50 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Enable load / store multiple pass for Thumb2. It's not using ldrd / strd yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78104 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
bc7c05eba593dc873637ba6b42afe4fb153c8ff0 04-Aug-2009 David Goodwin <david_goodwin@apple.com> Add NEON single-precision FP support for fabs and fneg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78101 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
53e4471adcf34cac253d2486e6b29c331e2d973e 04-Aug-2009 David Goodwin <david_goodwin@apple.com> Add NEON single-precision FP support for fabs and fneg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78101 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
RMInstrVFP.td
363d9f7dfd775af342c58be35a5abf9b69735f0f 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> In thumb mode, r7 is used as frame register. This fixes pr4681.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78086 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
3425df44b511de2e45524a885b370fd8f5d139d3 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> In thumb mode, r7 is used as frame register. This fixes pr4681.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78086 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
f31748c9a78aa89062d31ef7eb6875d8c8d45cb5 04-Aug-2009 David Goodwin <david_goodwin@apple.com> Match common pattern for FNMAC. Add NEON SP support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78085 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
b84f3d427c2f301f2836a743547e6a20bd8ee8a4 04-Aug-2009 David Goodwin <david_goodwin@apple.com> Match common pattern for FNMAC. Add NEON SP support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78085 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
RMInstrVFP.td
dd19ce43bb9742c41d90123b2ae0fc5661d6e27e 04-Aug-2009 David Goodwin <david_goodwin@apple.com> Initial support for single-precision FP using NEON. Added "neonfp" attribute to enable. Added patterns for some binary FP operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78081 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
42a83f2d15cbbc08f5be19856198e3c885221e9c 04-Aug-2009 David Goodwin <david_goodwin@apple.com> Initial support for single-precision FP using NEON. Added "neonfp" attribute to enable. Added patterns for some binary FP operations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78081 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrInfo.td
RMInstrNEON.td
RMInstrVFP.td
RMSubtarget.cpp
RMSubtarget.h
6ddebfe77a1ba265baed2d425a864347d8adbfac 04-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Ooops, I was too fast to commit the wrong fix :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78060 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
939ba32747d472032e8c3a5f3ea4feadcd6f622e 04-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Ooops, I was too fast to commit the wrong fix :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78060 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
b9d8a9988f3aaaad5010f5f16125d497ff7e279e 04-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix a typo - this unbreaks llvm-gcc build on arm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78059 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
20e037a8c506c9918ffe25e092a6a593187d93d5 04-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix a typo - this unbreaks llvm-gcc build on arm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78059 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetObjectFile.h
bd28ace99fe2bbdcaa9defca497319c85ff839a5 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 does not have ib (increment before) and da (decrement after) forms of ldm / stm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78057 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
eb084d16712ededa4486e1dd05ba98aa3d40646c 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 does not have ib (increment before) and da (decrement after) forms of ldm / stm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78057 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
8fb4cc6678e482b01e6026d274fc575aff3e7134 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove ARM specific getInlineAsmLength. We'll rely on the simpler (and faster) generic algorithm for now. If more accurate computation is needed, we'll rely on the disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78032 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
f0409ea488ec2cf27daeb192d18e206b11c6360f 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove ARM specific getInlineAsmLength. We'll rely on the simpler (and faster) generic algorithm for now. If more accurate computation is needed, we'll rely on the disassembler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78032 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
4bb74e76a5e6858aa90a2cabbf48a627e6554a48 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Load / store multiple pass fixes for Thumb2. Not enabled yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78031 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
27934da97bcb7a6a4949dfc0c449d99f43077e98 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Load / store multiple pass fixes for Thumb2. Not enabled yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78031 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
809fadb4f63a99752a8dd02b5f6c817984571db4 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
RMInstrThumb2.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
RMInstrThumb2.td
d2a2e002bfb53b66ab5f5421e9bcf5ff319e09a6 04-Aug-2009 Bob Wilson <bob.wilson@apple.com> Lower Neon VLD* intrinsics to custom DAG nodes, and manually allocate the
results to fixed registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78025 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
a599bff101095e528198ae85739fe8b97ffba82b 04-Aug-2009 Bob Wilson <bob.wilson@apple.com> Lower Neon VLD* intrinsics to custom DAG nodes, and manually allocate the
results to fixed registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78025 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
d99b111729ce68370a436b04abfa457c921fbecc 04-Aug-2009 Bob Wilson <bob.wilson@apple.com> Minor cleanup. No functional changes intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78024 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
916afdbc2d4af2596894c4ccc179b4445fe659a7 04-Aug-2009 Bob Wilson <bob.wilson@apple.com> Minor cleanup. No functional changes intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78024 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c3f5a2bca13dd75d12f05d91c940b6d1cb24553c 04-Aug-2009 Chris Lattner <sabre@nondot.org> use TLOF to compute the section for a function instead of
replicating the logic manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78011 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5e44e472d61fd113095e7b0825a0146703e500d3 04-Aug-2009 Chris Lattner <sabre@nondot.org> use TLOF to compute the section for a function instead of
replicating the logic manually.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78011 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
21f0cc2c7ad63f4f0d1b88d9a971c3d70b27ba45 04-Aug-2009 Chris Lattner <sabre@nondot.org> convert macho stub emission to use SwitchToSection instead of
textual sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78007 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
f61159b574155b056dbd5d6d44f47f753d424056 04-Aug-2009 Chris Lattner <sabre@nondot.org> convert macho stub emission to use SwitchToSection instead of
textual sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78007 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
96ba605eda9151eb197e6c907fedf08e1e9aa882 03-Aug-2009 Bob Wilson <bob.wilson@apple.com> Lower CONCAT_VECTOR during legalization instead of matching it during isel.
Add a testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77992 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
a6d658620f1b8803825d3d3adc5d5ed9b36dc422 03-Aug-2009 Bob Wilson <bob.wilson@apple.com> Lower CONCAT_VECTOR during legalization instead of matching it during isel.
Add a testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77992 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
98c00ab7ee4842f1faa79d2fcf46476d02c4eb99 03-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> llvm_report_error already prints "LLVM ERROR:". So stop reporting errors like "LLVM ERROR: llvm: error:" or "LLVM ERROR: ERROR:".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77971 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d5fe92efbc1774ada25a1cfa18009bfc5c6e625c 03-Aug-2009 Benjamin Kramer <benny.kra@googlemail.com> llvm_report_error already prints "LLVM ERROR:". So stop reporting errors like "LLVM ERROR: llvm: error:" or "LLVM ERROR: ERROR:".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77971 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
356fba7852c5e44ca0d77c9a68c5cfd819263d9b 03-Aug-2009 Evan Cheng <evan.cheng@apple.com> These are done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77949 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
9072c8198de8730a1332ca5e03a2a597631b7615 03-Aug-2009 Evan Cheng <evan.cheng@apple.com> These are done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77949 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb2.txt
b2c36328d32febf103f04c1cbd77e42749e241fa 03-Aug-2009 Evan Cheng <evan.cheng@apple.com> Use the i12 variant of load / store opcodes if offset is zero. Now we pass all of multisource as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77939 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
a8e8984ee4c197634839cf228f5b1d79a77fa4b9 03-Aug-2009 Evan Cheng <evan.cheng@apple.com> Use the i12 variant of load / store opcodes if offset is zero. Now we pass all of multisource as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77939 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
f5c2b85a55d67bb0b4711932ecb3a4bfb7a1974f 03-Aug-2009 Daniel Dunbar <daniel@zuster.org> Move most targets TargetMachine constructor to only taking a target triple.
- The C, C++, MSIL, and Mips backends still need the module.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77927 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
e28039cfd1a9c43b5fa9274bf19372d96f58f460 03-Aug-2009 Daniel Dunbar <daniel@zuster.org> Move most targets TargetMachine constructor to only taking a target triple.
- The C, C++, MSIL, and Mips backends still need the module.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77927 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
b711cf09b31c5498b18293768ae4323ecee304ef 03-Aug-2009 Daniel Dunbar <daniel@zuster.org> Normalize Subtarget constructors to take a target triple string instead of
Module*.

Also, dropped uses of TargetMachine where unnecessary. The only target which
still takes a TargetMachine& is Mips, I would appreciate it if someone would
normalize this to match other targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77918 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
3be03406c9c3b2075d5ae416499af2f15f703d6f 03-Aug-2009 Daniel Dunbar <daniel@zuster.org> Normalize Subtarget constructors to take a target triple string instead of
Module*.

Also, dropped uses of TargetMachine where unnecessary. The only target which
still takes a TargetMachine& is Mips, I would appreciate it if someone would
normalize this to match other targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77918 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
72d228decc0b7d1cd28738b728cb289e5403f14c 02-Aug-2009 Chris Lattner <sabre@nondot.org> move dwarf debug info section selection stuff from TAI to
TLOF, unifying all the dwarf targets at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77889 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
18a4c16726db2b8874c7b84d04650dda80746074 02-Aug-2009 Chris Lattner <sabre@nondot.org> move dwarf debug info section selection stuff from TAI to
TLOF, unifying all the dwarf targets at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77889 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
20f98d18cbda767491b6d97413dcc10dedb21b76 02-Aug-2009 Chris Lattner <sabre@nondot.org> ARM TAI no longer needs a TM, but createTargetAsmInfo() still does.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77878 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
24def37c85cad01845e5fb2efc87e4d5471a2a6a 02-Aug-2009 Chris Lattner <sabre@nondot.org> ARM TAI no longer needs a TM, but createTargetAsmInfo() still does.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77878 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
5f1fdb3d639bc0300b5a40f1a1c62178fb534668 02-Aug-2009 Chris Lattner <sabre@nondot.org> Move the getInlineAsmLength virtual method from TAI to TII, where
the only real caller (GetFunctionSizeInBytes) uses it.

The custom ARM implementation of this is basically reimplementing
an assembler poorly for negligible gain. It should be removed
IMNSHO, but I'll leave that to ARMish folks to decide.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77877 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
humb1InstrInfo.cpp
humb2InstrInfo.cpp
d90183d25dcbc0eabde56319fed4e8d6ace2e6eb 02-Aug-2009 Chris Lattner <sabre@nondot.org> Move the getInlineAsmLength virtual method from TAI to TII, where
the only real caller (GetFunctionSizeInBytes) uses it.

The custom ARM implementation of this is basically reimplementing
an assembler poorly for negligible gain. It should be removed
IMNSHO, but I'll leave that to ARMish folks to decide.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77877 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
humb1InstrInfo.cpp
humb2InstrInfo.cpp
c7ac3c140866e50ea684fd1315445fa1d58de353 02-Aug-2009 Chris Lattner <sabre@nondot.org> turn some templated inline functions into static functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77873 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
7bbd178d4bf1181d337e5fe657926d677c2e33aa 02-Aug-2009 Chris Lattner <sabre@nondot.org> turn some templated inline functions into static functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77873 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
e3cfb273a3fe3b0f7cf832e7cff8dd2b45fc1062 02-Aug-2009 Chris Lattner <sabre@nondot.org> remove the dead ELFTargetAsmInfo.h/cpp file. TargetAsmInfo
defaults to being ELF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77866 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.h
9ba8c6872dc722d0f9f804fcd67bace4acfe67ba 02-Aug-2009 Chris Lattner <sabre@nondot.org> remove the dead ELFTargetAsmInfo.h/cpp file. TargetAsmInfo
defaults to being ELF.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77866 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.h
7dd4ffc0a889f3c4ee0c3454ea37502466955293 02-Aug-2009 Chris Lattner <sabre@nondot.org> remove TargetAsmInfo::TM, which is now dead. The basic TAI class now
no longer depends on TM!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77863 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
8d4a0a328a89d1f3c7ad83048e04ace53b6ba781 02-Aug-2009 Chris Lattner <sabre@nondot.org> remove TargetAsmInfo::TM, which is now dead. The basic TAI class now
no longer depends on TM!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77863 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
b5c952a6aa643bfa7a002013f46e199e7a86bb3f 02-Aug-2009 Chris Lattner <sabre@nondot.org> convert ctors/dtors section to be in TLOF instead of
TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77842 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetAsmInfo.cpp
RMTargetObjectFile.h
80ec2792b2b271eca55743a3cc4c8bca214fa705 02-Aug-2009 Chris Lattner <sabre@nondot.org> convert ctors/dtors section to be in TLOF instead of
TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77842 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetAsmInfo.cpp
RMTargetObjectFile.h
25f3b84f767dfecf6a006ea41e78e3145218df2b 02-Aug-2009 Chris Lattner <sabre@nondot.org> REmove dead fields of TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77820 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
b80610cd13e7accf6db0924c75d0914bf566922b 02-Aug-2009 Chris Lattner <sabre@nondot.org> REmove dead fields of TAI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77820 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
04f40fa7a8b534f215e4dfc71261f166cc6149c9 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
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMInstrThumb2.td
7c002f3a33492769762ebbc2bd75a06b32d9db74 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
68e4b5869c777bbb8256dde0a971172751105518 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
RMISelLowering.cpp
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
RMSubtarget.cpp
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
RMISelLowering.cpp
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
RMSubtarget.cpp
d3c3a237b71e55ee6f8bf0126ed48bf7a4ba4079 01-Aug-2009 Evan Cheng <evan.cheng@apple.com> t2BR_JT is mov pc, it's 2 byte long, not 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77744 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
a0ee862f2e3a0d202244e02459ddcf0dca0e8607 01-Aug-2009 Evan Cheng <evan.cheng@apple.com> t2BR_JT is mov pc, it's 2 byte long, not 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77744 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
dec08246cef517841dbfbf7802c240225ffba622 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
RMInstrThumb2.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
RMInstrThumb2.td
e6ad12f8febebcdca8ea6b0e48014786267df1ea 31-Jul-2009 Chris Lattner <sabre@nondot.org> switch off of 'Section' onto MCSection. We're not properly using
MCSection subclasses yet, but this is a step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a87dea4f8c546ca748f1777a8d1cabcc06515d91 31-Jul-2009 Chris Lattner <sabre@nondot.org> switch off of 'Section' onto MCSection. We're not properly using
MCSection subclasses yet, but this is a step in the right direction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77708 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2ee6e2d788b7fc1a6869740da53c52174be25179 31-Jul-2009 Evan Cheng <evan.cheng@apple.com> Until we have a "ALIGN" pseudo instruction, have asm printer emitted a .align
to ensure the instruction that follows a TBB (when the number of table entries
is odd) is 2-byte aligned.
Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ff6ab176192b4f7d345abea8391dfd3094d994e5 31-Jul-2009 Evan Cheng <evan.cheng@apple.com> Until we have a "ALIGN" pseudo instruction, have asm printer emitted a .align
to ensure the instruction that follows a TBB (when the number of table entries
is odd) is 2-byte aligned.
Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77705 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b6a03389e694fb958d6e29fa3fcbf8d698d77a7e 31-Jul-2009 Evan Cheng <evan.cheng@apple.com> - Teach TBB / TBH offset limits are 510 and 131070 respectively since the offset
is scaled by two.
- Teach GetInstSizeInBytes about TBB and TBH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77701 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
d26b14c34cbcee1448b86b524578fc51cc979023 31-Jul-2009 Evan Cheng <evan.cheng@apple.com> - Teach TBB / TBH offset limits are 510 and 131070 respectively since the offset
is scaled by two.
- Teach GetInstSizeInBytes about TBB and TBH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77701 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
013162700841c12357dc27f2a4a268c967c3eb50 31-Jul-2009 Chris Lattner <sabre@nondot.org> refactor section construction in TLOF to be through an explicit
initialize method, which can be called when an MCContext is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77687 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f26e03bc7e30162197641406e37e662a15d80f7e 31-Jul-2009 Chris Lattner <sabre@nondot.org> refactor section construction in TLOF to be through an explicit
initialize method, which can be called when an MCContext is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77687 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
49f2d5bb20cd0e7f0ced36850ee68138cab399a5 31-Jul-2009 Evan Cheng <evan.cheng@apple.com> When fp is not eliminated, instructions with T2_i12 modes will be changed to T2_i8 ones. Take that into consideration when determining stack size limit for reserving register scavenging slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77642 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
ee42fd309ee6a8febfafb97c2f3b6f2069758c5e 31-Jul-2009 Evan Cheng <evan.cheng@apple.com> When fp is not eliminated, instructions with T2_i12 modes will be changed to T2_i8 ones. Take that into consideration when determining stack size limit for reserving register scavenging slot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77642 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
11c550b84be68c7c04d5564b6ae7c358ff78b252 31-Jul-2009 David Goodwin <david_goodwin@apple.com> Remove redundant match for frame index from imm8 addrmode, it is handled by the imm12 addrmode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77632 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
07337c0fcf04fff3f62d3727097347f8be299c9e 31-Jul-2009 David Goodwin <david_goodwin@apple.com> Remove redundant match for frame index from imm8 addrmode, it is handled by the imm12 addrmode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77632 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
481216a0382a90b8b7e07213bf15f569f9e72fd1 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
RMInstrThumb2.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
RMInstrThumb2.td
1f69767d5bffd998b94d2b52b6c1a421dab4e732 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
RMInstrThumb2.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
RMInstrThumb2.td
c289648b9f47ff8e8e38b80e1da9cf87b94e492a 30-Jul-2009 David Goodwin <david_goodwin@apple.com> Cleanup and include code selection for some frame index cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77622 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d8c95b5ac2ae0619c22434dbdd993196ea82489b 30-Jul-2009 David Goodwin <david_goodwin@apple.com> Cleanup and include code selection for some frame index cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77622 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f84412287e8401cb3070eed750dd965256aa3bd4 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
RMInstrThumb2.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
RMInstrThumb2.td
ecd9b641b95362a050045ffcd2ee2b650a413f80 30-Jul-2009 Chris Lattner <sabre@nondot.org> add a random codegen deficiency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77598 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
513503961dda4a4ce7d196771961d92902ca790d 30-Jul-2009 Chris Lattner <sabre@nondot.org> add a random codegen deficiency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77598 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
bfea4859278283431cfbac082a279e4f2742d0bd 30-Jul-2009 Daniel Dunbar <daniel@zuster.org> Switch obvious clients to Twine instead of utostr (when they were already using
a Twine, e.g., for names).
- I am a little ambivalent about this; we don't want the string conversion of
utostr, but using overload '+' mixed with string and integer arguments is
sketchy. On the other hand, this particular usage is something of an idiom.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
7f93dc8345fb33652973e35cae4c3b58addf4f87 30-Jul-2009 Daniel Dunbar <daniel@zuster.org> Switch obvious clients to Twine instead of utostr (when they were already using
a Twine, e.g., for names).
- I am a little ambivalent about this; we don't want the string conversion of
utostr, but using overload '+' mixed with string and integer arguments is
sketchy. On the other hand, this particular usage is something of an idiom.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77579 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d9a908af4aa1f77d4b93de192d3041894f3fd587 30-Jul-2009 Bob Wilson <bob.wilson@apple.com> Lower a 128-bit BUILD_VECTOR with 2 elements to a pair of INSERT_VECTOR_ELTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77557 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cf661e2c562e7b3ac35ff2aed916615356e0f2c1 30-Jul-2009 Bob Wilson <bob.wilson@apple.com> Lower a 128-bit BUILD_VECTOR with 2 elements to a pair of INSERT_VECTOR_ELTs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77557 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e12c92dd389065e194d94e032440caff188b261f 30-Jul-2009 Evan Cheng <evan.cheng@apple.com> tbb / tbh instructions only branch forward, not backwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77522 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
8770f747a98194056805f1b7cbcb0b75a7633b87 30-Jul-2009 Evan Cheng <evan.cheng@apple.com> tbb / tbh instructions only branch forward, not backwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77522 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
45f6baf7d90d6cde0332db07fc2ba0cf8b7d2f98 30-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add VFP3 D registers to the DPR register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77521 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
d600522608fb3374456af83dfcf51586bcabfb57 30-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add VFP3 D registers to the DPR register class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77521 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
9e7344841ca5369461277f1c7e75bd987e0bc613 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
1937700fa5dce81f6c36c9314786a04f1bc99279 29-Jul-2009 Chris Lattner <sabre@nondot.org> Give getPointerRegClass() a "kind" value so that targets can
support multiple different pointer register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77501 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
2cfd52c507bd5790457a171eb9bcb39019cc6860 29-Jul-2009 Chris Lattner <sabre@nondot.org> Give getPointerRegClass() a "kind" value so that targets can
support multiple different pointer register classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77501 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
80ab2a83805a1005679ba97d308219b460bd6a4d 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
d3902f758c2c8164db3bc67640f6ded24250aa6c 29-Jul-2009 Bob Wilson <bob.wilson@apple.com> Change Neon VLDn intrinsics to return multiple values instead of really
wide vectors. Likewise, change VSTn intrinsics to take separate arguments
for each vector in a multi-vector struct. Adjust tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77468 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
b7d0c90c449882c8ec697c8989244dba2dc917ae 29-Jul-2009 Bob Wilson <bob.wilson@apple.com> Change Neon VLDn intrinsics to return multiple values instead of really
wide vectors. Likewise, change VSTn intrinsics to take separate arguments
for each vector in a multi-vector struct. Adjust tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77468 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2931fe435726903f4b8c63ab542e27620dc1a2f3 29-Jul-2009 Chris Lattner <sabre@nondot.org> pass the mangler down into the various SectionForGlobal methods.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e53a600f065075731d0aeb9dc8f4f3d75f5a05f8 29-Jul-2009 Chris Lattner <sabre@nondot.org> pass the mangler down into the various SectionForGlobal methods.
No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77432 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1b2b3e209303c078ada99f0a74bad71defe1cf7e 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
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
humb2InstrInfo.cpp
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
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
humb2InstrInfo.cpp
f5a9816e20d5f885cd8c9fb4ca7d8846124e0edc 29-Jul-2009 David Goodwin <david_goodwin@apple.com> Thumb-2: fix typo that caused incorrect stack elimination for VFP operations and very large stack frames.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77401 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
d9453784fbcbbf052a32752d00e3b7d0004fda55 29-Jul-2009 David Goodwin <david_goodwin@apple.com> Thumb-2: fix typo that caused incorrect stack elimination for VFP operations and very large stack frames.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77401 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
7c368855a7d367bf6009c59cd14c8aece9d80bec 28-Jul-2009 Devang Patel <dpatel@apple.com> Rename MDNode.h header. It defines MDnode and other metadata classes.
New name is Metadata.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77370 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0a9f7b9c3ebe7d0ec033462e1a7c9101279956f9 28-Jul-2009 Devang Patel <dpatel@apple.com> Rename MDNode.h header. It defines MDnode and other metadata classes.
New name is Metadata.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77370 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5c03715743f38b03b73c74b9e7c7b2faa2d28977 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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
5282105af8b0aade81f78588d49990e366f845ce 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
RMInstrThumb2.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
RMInstrThumb2.td
8fa356f2123103af328eada06440e4c277268b07 28-Jul-2009 Chris Lattner <sabre@nondot.org> more simplifications and cleanup. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77350 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
b180d992d81f97862af6089dfe899d0363cac6f5 28-Jul-2009 Chris Lattner <sabre@nondot.org> more simplifications and cleanup. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77350 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
91f064f3e1f3f40f07e666a3587ab49abafda4d7 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
RMInstrThumb2.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
RMInstrThumb2.td
28faffe5c44cc59195968365f388cc9c52c537b8 28-Jul-2009 Chris Lattner <sabre@nondot.org> the apple "ld_classic" linker doesn't support .literal16 in 32-bit
mode, and "ld64" (the default linker) falls back to it in -static
mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77334 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4bb253c60f895131371aa2ad1bfa5a2bea213f78 28-Jul-2009 Chris Lattner <sabre@nondot.org> the apple "ld_classic" linker doesn't support .literal16 in 32-bit
mode, and "ld64" (the default linker) falls back to it in -static
mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77334 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7cdd24ce79a4ab41234dc546fccdc7f9525ba59e 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
RMInstrThumb2.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
RMInstrThumb2.td
5b4eafcf72bb3b094921a92757b8b374ea13c08c 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> tADDrSPI doesn't have a predicate operand, but tADDhirr and tADDi3 have.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77305 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
bae20a6353583089224b94280a2dd69805dca247 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> tADDrSPI doesn't have a predicate operand, but tADDhirr and tADDi3 have.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77305 91177308-0d34-0410-b5e6-96231b3b80d8
humb1RegisterInfo.cpp
5b249dfab8f983563ef0bedbdddd59b8c38a9453 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> Code clean up. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77301 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
542383d93b146e11a1d70c01f8afea8ea9f08eff 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> Code clean up. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77301 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
5a3605f37d2c4b3b7d01dfdde0ddce456696fc4c 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
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb2.td
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
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
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb2.td
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
c4c40a9f14d66de770ba7c0922be07dca7e3b827 28-Jul-2009 Chris Lattner <sabre@nondot.org> Rip all of the global variable lowering logic out of TargetAsmInfo. Since
it is highly specific to the object file that will be generated in the end,
this introduces a new TargetLoweringObjectFile interface that is implemented
for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.

Though still is still a brutal and ugly refactoring, this is a major step
towards goodness.

This patch also:
1. fixes a bunch of dangling pointer problems in the PIC16 backend.
2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
3. gets us closer to xcore having its own crazy target section flags and
pic16 not having to shadow sections with its own objects.
4. fixes wierdness where ELF targets would set CStringSection but not
CStringSection_. Factor the code better.
5. fixes some bugs in string lowering on ELF targets.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77294 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
f0144127b98425d214e59e4a1a4b342b78e3642b 28-Jul-2009 Chris Lattner <sabre@nondot.org> Rip all of the global variable lowering logic out of TargetAsmInfo. Since
it is highly specific to the object file that will be generated in the end,
this introduces a new TargetLoweringObjectFile interface that is implemented
for each of ELF/MachO/COFF/Alpha/PIC16 and XCore.

Though still is still a brutal and ugly refactoring, this is a major step
towards goodness.

This patch also:
1. fixes a bunch of dangling pointer problems in the PIC16 backend.
2. disables the TargetLowering copy ctor which PIC16 was accidentally using.
3. gets us closer to xcore having its own crazy target section flags and
pic16 not having to shadow sections with its own objects.
4. fixes wierdness where ELF targets would set CStringSection but not
CStringSection_. Factor the code better.
5. fixes some bugs in string lowering on ELF targets.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77294 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
87affb9593562fea5185159da28cff7e78ede43c 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
RMInstrThumb2.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
RMInstrThumb2.td
27c016ba84f5607b3610f0ae63d36742ba0083f8 27-Jul-2009 David Goodwin <david_goodwin@apple.com> Remove TPat. No patterns depend on just isThumb(). Must use either T1Pat (isThumb1Only()) or T2Pat (is Thumb2).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77242 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
c9d138f505b515e96eb761a7b2138cd27f3f9536 27-Jul-2009 David Goodwin <david_goodwin@apple.com> Remove TPat. No patterns depend on just isThumb(). Must use either T1Pat (isThumb1Only()) or T2Pat (is Thumb2).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77242 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
b79a26b1b5ea8106e664d5951ddeb711fe5f0cc9 27-Jul-2009 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77233 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.h
RMTargetMachine.cpp
fa199f3c168947f91e1935d23b5fd6ee3027ddd3 27-Jul-2009 Chris Lattner <sabre@nondot.org> remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77233 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.h
RMTargetMachine.cpp
4ffaf27e34ab7567ac06409fc3a259a7934d4bb4 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> More DCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77231 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
e0f21bd47f3fed91124e3d8187e1bf8a66c6aef3 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> More DCE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77231 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
4abacf956e3caae49e6d1e6600820f09f6e29116 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> convertToThreeAddress can't handle Thumb2 instructions (which don't have same address mode as ARM instructions).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77230 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
78703ddafe3d037f75d8ca188e4829d238289ac3 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> convertToThreeAddress can't handle Thumb2 instructions (which don't have same address mode as ARM instructions).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77230 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ccf6536207ad87bfe62569bb560573cfb529b99c 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid of more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77227 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
fc17fb0aeed584b8560461ab2843d0676a243f29 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid of more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77227 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
9399ff2369c6919e277afab10dc67d37386a7095 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Cosmetic change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77222 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
293f8d9b8800ab68c64b67f38a7f76e00126715d 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Cosmetic change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77222 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
2c03f6d1089da3175a70901a832840fc56687fe9 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77221 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
83e0e36be8390fee1235783731f6c64aa604b7ee 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77221 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
03c5e0db6b035c01e6e425b53939bb49e56397f8 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid of some more getOpcode calls.

This also fixes potential problems in ARMBaseInstrInfo routines not recognizing thumb1 instructions when 32-bit and 16-bit instructions mix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77218 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
5ca53a7ad821613d324e4189ddbb0d468a326146 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid of some more getOpcode calls.

This also fixes potential problems in ARMBaseInstrInfo routines not recognizing thumb1 instructions when 32-bit and 16-bit instructions mix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77218 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
3bc1afec44eefb1aa52d84423e98515497dd0cea 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
RMInstrThumb2.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
RMInstrThumb2.td
2f6f113c9eede5bccde2d88eb84af0681b37038e 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
RMInstrThumb2.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
RMInstrThumb2.td
64630569a623462f384d546addd4d9547600900e 27-Jul-2009 Chris Lattner <sabre@nondot.org> Eliminate getNamed/getUnnamedSection, adding a new and unified getOrCreateSection
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77186 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
e346694a81cbead3289d11057111fba46aa30aae 27-Jul-2009 Chris Lattner <sabre@nondot.org> Eliminate getNamed/getUnnamedSection, adding a new and unified getOrCreateSection
instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77186 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
d8310520a75c10de2678e931f984e0c500e0ee43 27-Jul-2009 Chris Lattner <sabre@nondot.org> Eliminate SectionFlags, just embed a SectionKind into Section
instead and drive things based off of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77184 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
5fe575ff4fdefc1b003a009b1b9282526a26c237 27-Jul-2009 Chris Lattner <sabre@nondot.org> Eliminate SectionFlags, just embed a SectionKind into Section
instead and drive things based off of that.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77184 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
7b8b13ae655c54cfa770e74d11c02b04e2728dc6 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> If CPSR is modified but the def is dead, then it's ok to fold the load / store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77182 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
1f5c9887544ac2cb39d48e35cc6fa7a7b73ed3b0 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> If CPSR is modified but the def is dead, then it's ok to fold the load / store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77182 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
ac5c1f00b23e82802e657570fd4f9f4f75832710 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use t2LDRi12 and t2STRi12 to load / store to / from stack frames. Eliminate more getOpcode calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77181 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
5732ca084aaa0cd26149e50dd4b487efff37fe41 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use t2LDRi12 and t2STRi12 to load / store to / from stack frames. Eliminate more getOpcode calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77181 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
d8b20e21a86f904ab2a67f4b0e837f312df226e8 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use the right instructions to copy between GPR and the more strictive tGPR classes. t2MOV does not match the RC requirements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77175 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb2InstrInfo.cpp
08b93c6a70ae59af375f205cfcffeaa3517577ab 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use the right instructions to copy between GPR and the more strictive tGPR classes. t2MOV does not match the RC requirements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77175 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb2InstrInfo.cpp
15b7a580a79d2e9db8dff2c489181fa3a8d791a1 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Merge isLoadFromStackSlot into one since it behaves the same regardless of sub-target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77174 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
dced03fc846fa7cd9558ecb8e33ca98ec29bdcf0 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Merge isLoadFromStackSlot into one since it behaves the same regardless of sub-target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77174 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
0841e77fe8580b74d80f6432a4f5bfc78a80fd60 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Just use a single isMoveInstr to catch all the cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77173 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
68e3c6ae49ff67cba98403e43b5bd0c2499caa41 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Just use a single isMoveInstr to catch all the cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77173 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
humb1InstrInfo.cpp
humb1InstrInfo.h
df827f201fc83119ba8d0d89d6ecb7d8fb2b012c 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Rename tMOVhi2lor to tMOVgpr2tgpr. It's not moving from a high register to a low register. It's moving from a GPR register class to a more restrictive tGPR class. Also change tMOVlor2hir, and tMOVhir2hir.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77172 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrThumb.td
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
d83360694a6d82772cf31a0be8a64570c2e5cb88 27-Jul-2009 Evan Cheng <evan.cheng@apple.com> Rename tMOVhi2lor to tMOVgpr2tgpr. It's not moving from a high register to a low register. It's moving from a GPR register class to a more restrictive tGPR class. Also change tMOVlor2hir, and tMOVhir2hir.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77172 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrThumb.td
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
c51585bc4b9c3463853ed251846fc9609901129e 26-Jul-2009 Chris Lattner <sabre@nondot.org> untangle a TargetAsmInfo hack where ELFTargetAsmInfo would create a
'unnamed' bss section, but some impls would want a named one. Since
they don't have consistent behavior, just make each target do their
own thing, instead of doing something "sortof common" then having
targets change immutable objects later.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77165 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
0fcf4dc6d367216ff51501af282e33e93da8586f 26-Jul-2009 Chris Lattner <sabre@nondot.org> untangle a TargetAsmInfo hack where ELFTargetAsmInfo would create a
'unnamed' bss section, but some impls would want a named one. Since
they don't have consistent behavior, just make each target do their
own thing, instead of doing something "sortof common" then having
targets change immutable objects later.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77165 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
2d26465b799957820943cede4cb19cc2056cba9b 26-Jul-2009 Evan Cheng <evan.cheng@apple.com> Refactor. Get rid of a few more getOpcode() calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77164 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
30b2bdfa734d59bb7bc769dc2f06e4900a77f6f8 26-Jul-2009 Evan Cheng <evan.cheng@apple.com> Refactor. Get rid of a few more getOpcode() calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77164 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
23e2b80c58046994ba60bc9d6c7b0b2bfb894549 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Eliminate some uses of DOUT, cerr, and getNameStart().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
93b67e40de356569493c285b86b138a3f11b5035 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Eliminate some uses of DOUT, cerr, and getNameStart().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77145 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
68c9ce7c9e803dcb79ff465770e6dafa65f12779 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Factor commonality in triple match routines into helper template for registering
classes, and migrate existing targets over.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77126 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/ARMTargetInfo.cpp
8977d087c693fd581db82bcff134d12da0f48bd3 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Factor commonality in triple match routines into helper template for registering
classes, and migrate existing targets over.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77126 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/ARMTargetInfo.cpp
bfa8b2c02c927c58f8a0a4b1ff8c04d7eb747069 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Kill Target specific ModuleMatchQuality stuff.
- This was overkill and inconsistently implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77114 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/ARMTargetInfo.cpp
fa27ff296d3694a68e7abb3b6b7629588def3e58 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Kill Target specific ModuleMatchQuality stuff.
- This was overkill and inconsistently implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77114 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/ARMTargetInfo.cpp
c1cd72e05f3324eb2d7f1db44848e11541a8fa5a 26-Jul-2009 Bob Wilson <bob.wilson@apple.com> Add support for ARM Neon VREV instructions.
Patch by Anton Korzh, with some modifications from me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77101 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
8bb9e48752b4a88e512ceb8fb802e2cdf8150e7b 26-Jul-2009 Bob Wilson <bob.wilson@apple.com> Add support for ARM Neon VREV instructions.
Patch by Anton Korzh, with some modifications from me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77101 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrNEON.td
e03513b6e418341df9f2c18559c3e3557ac9b695 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::{isName, getNameRef}.

Also, change MDString to use a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77098 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
03d7651c3652e1f0cc86e79b26585d86818da9cf 26-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove Value::{isName, getNameRef}.

Also, change MDString to use a StringRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77098 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
123157a91a9c00c42cc7a91b03b4ed2db0b6d197 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> Simplify JIT target selection.
- Instead of requiring targets to define a JIT quality match function, we just
have them specify if they support a JIT.

- Target selection for the JIT just gets the host triple and looks for the best
target which matches the triple and has a JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77060 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/ARMTargetInfo.cpp
d6fd377f3333922c4e928019cdfa124ff7f4dd2e 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> Simplify JIT target selection.
- Instead of requiring targets to define a JIT quality match function, we just
have them specify if they support a JIT.

- Target selection for the JIT just gets the host triple and looks for the best
target which matches the triple and has a JIT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77060 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/ARMTargetInfo.cpp
c680b01a5af67194871ad98d1b85b61db34d6823 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add new helpers for registering targets.
- Less boilerplate == good.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77052 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
0c795d61878156817cedbac51ec2921f2634c1a5 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add new helpers for registering targets.
- Less boilerplate == good.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77052 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
0bdbfae85e3ffbc88045ea32e1f8a6b1f0c89f56 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77041 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
c7423aff68630d7fd1250337505a8e4be09d0f15 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77041 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ce4b3483064d398194cde05457dbfba2abb83bea 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid of a couple of unnecessary getOpcode calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77035 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
humb2RegisterInfo.cpp
c6b54d5a33ca5341da8d6ccc3140a5b67475e7f4 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid of a couple of unnecessary getOpcode calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77035 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
humb2RegisterInfo.cpp
4ded2824b2e221e0d55f5b8178a04210c4132e38 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> Another TODO.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77026 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
3c91f36a4588df306284db0dece0590e846b5f55 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> Another TODO.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77026 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
6e2ebc9df94229f84661a37f8b9747e330b9de07 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
EADME-Thumb2.txt
humb1InstrInfo.cpp
humb2InstrInfo.cpp
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
EADME-Thumb2.txt
humb1InstrInfo.cpp
humb2InstrInfo.cpp
005975c04c5ffc4ee07107ad60dd7d465464e6f7 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> More migration to raw_ostream, the water has dried up around the iostream hole.
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77019 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
ce63ffb52f249b62cdf2d250c128007b13f27e71 25-Jul-2009 Daniel Dunbar <daniel@zuster.org> More migration to raw_ostream, the water has dried up around the iostream hole.
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77019 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
7cdd0cc18a1514e41d0743986bbfffeaf537a5cf 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> ARM code emitter can't handle Thumb2 instructions yet. So don't even try.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77018 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
90daf4d035c5808d310f2500d051c2dd830cc5bd 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> ARM code emitter can't handle Thumb2 instructions yet. So don't even try.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77018 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
eacb44d0bb89c608c4465b7900eea3afc0f0be0d 25-Jul-2009 Owen Anderson <resistor@mac.com> Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
eed707b1e6097aac2bb6b3d47271f6300ace7f2e 25-Jul-2009 Owen Anderson <resistor@mac.com> Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
ace089079584cced3e3562d271f38b9d9ef3f8f8 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
RMInstrThumb2.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
RMInstrThumb2.td
4e50240d2aeae32e8b98473c4baeea257d180ca0 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Disable my constant island pass optimization (to make use soimm more effectively). It caused infinite looping on lencod.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76995 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
40efc251cd7a52dd2375ec95ee38b1be4572178f 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Disable my constant island pass optimization (to make use soimm more effectively). It caused infinite looping on lencod.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76995 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
370b544e924604d0e85f3620ae9917d45bceb1e1 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a workaround for Darwin assembler bug where it's not setting the thumb bit in Thumb2 jumptable entries. We now pass Olden.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
49f846805efe101ae8e6dcff6311cc480072845b 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a workaround for Darwin assembler bug where it's not setting the thumb bit in Thumb2 jumptable entries. We now pass Olden.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a609c1db269d37f9443af611b415a9f7af917474 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
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMInstrThumb2.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
RMBaseInstrInfo.cpp
RMConstantIslandPass.cpp
RMInstrThumb2.td
1f999061d3d6de5f9fb54e8793889cdb59a53627 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76984 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
23606e35ab48ab106ca0fcd29338349d5d77f54a 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76984 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
b437c25e587031168324b50079aa2db3317663ad 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Replace use of std::set with SmallPtrSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76983 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c324ecb7bc93a1f09db29851438ec5ee72b143eb 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Replace use of std::set with SmallPtrSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76983 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d1aa70a7dba5800c8c40e25131c1f037b83052e8 24-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused member functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76960 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
23ed52752bb40a9085c9d36bbc6603972c3e0080 24-Jul-2009 Eli Friedman <eli.friedman@gmail.com> Remove unused member functions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76960 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1InstrInfo.h
87bc69bc872258a4e16d38e5b10ee9816765c7a1 24-Jul-2009 Chris Lattner <sabre@nondot.org> use section flags more correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c440cc7f2c1e1e02fb4526babc9ab99986beb6e0 24-Jul-2009 Chris Lattner <sabre@nondot.org> use section flags more correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76944 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
16b8d7f1487d69ad759335774b7350b666d104b2 24-Jul-2009 Chris Lattner <sabre@nondot.org> reduce api exposure: clients shouldn't call SectionKindForGlobal directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76941 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
fb3431aec52f1d4d9305159d9f4e652c81b4d9fb 24-Jul-2009 Chris Lattner <sabre@nondot.org> reduce api exposure: clients shouldn't call SectionKindForGlobal directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76941 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
872df0d9836c1641c836b687b0d2419d951edac8 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 should use the register scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76930 91177308-0d34-0410-b5e6-96231b3b80d8
humb2RegisterInfo.cpp
865763bf80625aa3f06116335b067bf7ad76061c 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 should use the register scavenger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76930 91177308-0d34-0410-b5e6-96231b3b80d8
humb2RegisterInfo.cpp
64d673e5f3213c620eafd3f9011fdd3ddac37666 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> FLDD, FLDS, FCPYD, FCPYS, FSTD, FSTS, VMOVD, VMOVQ maps to the same instructions on all sub-targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76925 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
b74bb1a7a471a77e793d90de158aa4bbc67fe94d 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> FLDD, FLDS, FCPYD, FCPYS, FSTD, FSTS, VMOVD, VMOVQ maps to the same instructions on all sub-targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76925 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMInstrInfo.cpp
humb1InstrInfo.cpp
humb2InstrInfo.cpp
7938afc0b087519f71c2cbba499057c523948cb3 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb2.td
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb2.td
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
65c264243983974d40f2bb610b63b6aa20fe0d36 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
RMInstrThumb2.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
RMInstrThumb2.td
f6e7e692ddf32f101a85eed9661b8e2b9e422e4f 23-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix up ARM constant island pass for Thumb2.

Also fixed up code to fully use the SoImm field for ADR on ARM mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76890 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
d3d9d66dd211d1267e764c7294876d9a227f04ca 23-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix up ARM constant island pass for Thumb2.

Also fixed up code to fully use the SoImm field for ADR on ARM mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76890 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6683bb6a7d82f45a10742a914d3c7d0d30d8e753 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
df272512181f7db8fb865c58272c47a9e2bd52c6 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
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb2.td
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
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
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb2.td
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
28b3ffcf68128fbdb8e56157520202ed57a57e8d 23-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76872 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
697712c7d42cbd30fe07367abdbfa0620666e3a3 23-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76872 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
d1147266c27f635be76b988769f4c9b8eec922a9 23-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix typo in addrmode definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76806 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
e1e52edfff9f24d1e3f308cd126ff7ffac514ed7 23-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix typo in addrmode definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76806 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
9cf1e3e34210388fe79b88f264fca2d13029b2ee 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
08754dbf3644527cf8b38b0ccc4671a2f69b54ec 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Eliminate a redudant check Eli pointed out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76762 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
78dd9dbdfb55f1f1878e5000bd1f4ab1a0607f01 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Eliminate a redudant check Eli pointed out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76762 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
27396a68bc6b9251d92c0f3aa8aee4f5b12860cc 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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
996796e23d5aa0ee948924cab45a07e37495e48b 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add R12 to the list of registers clobbered by 16-bit Thumb calls as a pre-caution. r12 could be live once we have mixed 32-bit and 16-bit instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76728 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
4a8b7d030bf815baf082bc066c84ba091bc4e31f 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add R12 to the list of registers clobbered by 16-bit Thumb calls as a pre-caution. r12 could be live once we have mixed 32-bit and 16-bit instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76728 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
a862fe87a5c632a3cc1208f3c0478ab9ebc7ff3f 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a obvious copy-n-paste bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76727 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
3b6627b9440f5588d326747896739e1f9c3d9ce2 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a obvious copy-n-paste bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76727 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
6eb1493cc7275257232f2001f9d653538ef9ea1d 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid one of the getRegisterNumbering. Also add D16 - D31.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76725 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
8295d99bff6f8e3dfdfdaf1871cb72adab423f20 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Get rid one of the getRegisterNumbering. Also add D16 - D31.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76725 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMCodeEmitter.cpp
8523043feee8ebc0beca32a3bb75eefabfa8df81 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add an entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76711 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
064a6eacab8038f1021004b24f49fe70597f6032 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add an entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76711 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
175b6540352920afd47979cecb8c2667a3f7fdd3 22-Jul-2009 Owen Anderson <resistor@mac.com> Get rid of the Pass+Context magic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
e922c0201916e0b980ab3cfe91e1413e68d55647 22-Jul-2009 Owen Anderson <resistor@mac.com> Get rid of the Pass+Context magic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelLowering.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
bf2498c21108f07430f029ef952ae08b2b37b25c 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fixing cp island pass. Step 1: Determine whether the constant pool offset can be
negative on an individual bases rather than basing on whether it's in thumb
mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76698 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
5d8f1cae76e4e424bf3b4392eddb3f4dbf38662a 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fixing cp island pass. Step 1: Determine whether the constant pool offset can be
negative on an individual bases rather than basing on whether it's in thumb
mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76698 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
fdd472e94ea163893337db1d9c267cb1e7e69b79 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76693 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV6.td
7fdf962e5c8c58650b08e25ba2443f3252674b3d 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76693 91177308-0d34-0410-b5e6-96231b3b80d8
RMScheduleV6.td
690b8d58190f71ff277f1f8b74a13ba35bedce4f 22-Jul-2009 Chris Lattner <sabre@nondot.org> no really, I can spell!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76679 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
354c0165e755fd857bc89792243b82387ee3936d 22-Jul-2009 Chris Lattner <sabre@nondot.org> no really, I can spell!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76679 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
8f3f851edb0f3339c8913f666492d3be9843e854 22-Jul-2009 Chris Lattner <sabre@nondot.org> add an API so target-independent codegen can determine if a constant
pool entry will require relocations against it. I implemented this
conservatively for ARM, someone who is knowledgable about it should
see if this can be improved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76678 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
cb4596364369ea36ff5675eb12fc62d0c6f1f0dd 22-Jul-2009 Chris Lattner <sabre@nondot.org> add an API so target-independent codegen can determine if a constant
pool entry will require relocations against it. I implemented this
conservatively for ARM, someone who is knowledgable about it should
see if this can be improved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76678 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
0d68fde3e710982a02ff383488fc31aa3923cc7b 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add fake v7 itineraries for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76612 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSchedule.td
RMScheduleV7.td
6762d91c05324d7f931bb8dedf64e1559f66d0fa 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add fake v7 itineraries for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76612 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSchedule.td
RMScheduleV7.td
ae9822178ceb757bb0778146cf899bd715382f4f 21-Jul-2009 Chris Lattner <sabre@nondot.org> make AsmPrinter::doFinalization iterate over the global variables
and call PrintGlobalVariable, allowing elimination and simplification
of various targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
40bbebde9d250b875a47a688d0c6552834ada48f 21-Jul-2009 Chris Lattner <sabre@nondot.org> make AsmPrinter::doFinalization iterate over the global variables
and call PrintGlobalVariable, allowing elimination and simplification
of various targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76604 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
58fec0cb1710d68258f2e4463ef4c2918708c3f5 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Do not select tSXTB / tSXTH in thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76600 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
3ecadc816d04c5a0cd690ec9ec6680aeb1fc7bc3 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Do not select tSXTB / tSXTH in thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76600 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c35ff01747d5f5b35430784d3f16c617dcf1bb9b 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix ARM isle code that optimize multiply by constants which are power-of-2 +/- 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76520 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
af9e7a7c20d541cfaaaed9dfa21046ac6652cc03 21-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix ARM isle code that optimize multiply by constants which are power-of-2 +/- 1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76520 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
97eb10c18c5505caca89a396f8237f422594ecbd 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
RMInstrThumb2.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
RMInstrThumb2.td
e469911c38df4fa5da32770a3b916ee6af27c1b6 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Rename Mangler linkage enums to something less gross.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76456 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5c0ba804c02777c53c0842d0be2d16d1d92b9a46 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Rename Mangler linkage enums to something less gross.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76456 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3ac0d98f57e61a18c6af9265b0533f61ae9ede5f 20-Jul-2009 David Goodwin <david_goodwin@apple.com> Use t2LDRri12 for frame index loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76424 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
31e7eba06fdd74d72501b82fbedfb9724346c2ce 20-Jul-2009 David Goodwin <david_goodwin@apple.com> Use t2LDRri12 for frame index loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76424 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1ab1cbf8f9313fdd7fd184518a4f382071c9a2ed 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4567. Thumb1 target was using the wrong instruction to handle sp = sub fp, #c.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76401 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
humb1RegisterInfo.cpp
f6fe9579505be86420beea04f2c9ecb0fd7c55fd 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4567. Thumb1 target was using the wrong instruction to handle sp = sub fp, #c.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76401 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
humb1RegisterInfo.cpp
df6703e7c10896a3b5e2e9a45dd006050ca49a7b 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Model fpscr to prevent fcmped / fcmpezs etc from being deleted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76390 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMRegisterInfo.td
91449a883d4266730261710dfc15b5ec69c1a8f8 20-Jul-2009 Evan Cheng <evan.cheng@apple.com> Model fpscr to prevent fcmped / fcmpezs etc from being deleted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76390 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
RMRegisterInfo.td
41a0785fdd228e1563e606f650cef9b3617ab29e 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Add plumbing for the `linker_private' linkage type. This type is meant for
"private" symbols which the assember shouldn't strip, but which the linker may
remove after evaluation. This is mostly useful for Objective-C metadata.

This is plumbing, so we don't have a use of it yet. More to come, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76385 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3d10a5a75794356a0a568ce283713adc3a963200 20-Jul-2009 Bill Wendling <isanbard@gmail.com> Add plumbing for the `linker_private' linkage type. This type is meant for
"private" symbols which the assember shouldn't strip, but which the linker may
remove after evaluation. This is mostly useful for Objective-C metadata.

This is plumbing, so we don't have a use of it yet. More to come, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76385 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d75ede054a2651abd1f91520eb3dbebd7c2b3321 19-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a regression from 76124. Thumb1 instructions default to S bit being true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76374 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
humb1RegisterInfo.cpp
b46aaa3874d2753632c48400c66be1a10ac18d42 19-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a regression from 76124. Thumb1 instructions default to S bit being true.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76374 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.h
humb1RegisterInfo.cpp
88afc155c23fa1123eb2c42937ddbc5782ca9cc7 19-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add dependencies from TargetInfo onto .td generation.
- Shouldn't really be necessary, but currently .inc files get included into
some main target headers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76349 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/CMakeLists.txt
b384c85877d9fd3e9f3ae8d1b68c7c610bc5a1f4 19-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add dependencies from TargetInfo onto .td generation.
- Shouldn't really be necessary, but currently .inc files get included into
some main target headers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76349 91177308-0d34-0410-b5e6-96231b3b80d8
argetInfo/CMakeLists.txt
0b0441e2cbb543e18e764943bb3b9dc32bce1503 19-Jul-2009 Daniel Dunbar <daniel@zuster.org> Put Target definitions inside Target specific header, and llvm namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76344 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
argetInfo/ARMTargetInfo.cpp
4cb1e13769856716261a4d315f8202bd918502c3 19-Jul-2009 Daniel Dunbar <daniel@zuster.org> Put Target definitions inside Target specific header, and llvm namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76344 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
argetInfo/ARMTargetInfo.cpp
6628b5ba0e383904260935a46fe39d61d3e3bd52 17-Jul-2009 Jeffrey Yasskin <jyasskin@google.com> r76102 added the MachineCodeEmitter::processDebugLoc call and called it from
the X86 Emitter. This patch extends that to the rest of the targets that can
write to a MachineCodeEmitter: ARM, Alpha, and PPC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76211 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
75402822d6acc1fe62d911771cd7cf8358c718d7 17-Jul-2009 Jeffrey Yasskin <jyasskin@google.com> r76102 added the MachineCodeEmitter::processDebugLoc call and called it from
the X86 Emitter. This patch extends that to the rest of the targets that can
write to a MachineCodeEmitter: ARM, Alpha, and PPC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76211 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
ec369ef8ac33ac20f9ab08edeb8a4431a3566c85 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix tSUBspi operand definition. It reads and writes sp, which is a high register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76155 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
a6e4322cccad525c5b28ddae2875da695c04e90e 17-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix tSUBspi operand definition. It reads and writes sp, which is a high register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76155 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
24270fab43b2f3314cc6be7b14bfc8e5f2a8828b 17-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Emit cross regclass register moves for thumb2.
Minor code duplication cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76124 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
b8e9ac834a9c253e3f8f5caa8f229bafba0b4fcf 17-Jul-2009 Anton Korobeynikov <asl@math.spbu.ru> Emit cross regclass register moves for thumb2.
Minor code duplication cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76124 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
463a3e4dd8149ca3f4ab27a71f2a9f48e02c2726 16-Jul-2009 Evan Cheng <evan.cheng@apple.com> Let callers decide the sub-register index on the def operand of rematerialized instructions.
Avoid remat'ing instructions whose def have sub-register indices for now. It's just really really hard to get all the cases right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75900 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
378445303b10b092a898a75131141a8259cff50b 16-Jul-2009 Evan Cheng <evan.cheng@apple.com> Let callers decide the sub-register index on the def operand of rematerialized instructions.
Avoid remat'ing instructions whose def have sub-register indices for now. It's just really really hard to get all the cases right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75900 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
bf79dcb6c45fdf395584ce127852e75cf44def3b 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Kill off <TARGET>MachineModule variables, and <TARGETASMPRINTER>ForceLink
variables.
- Module initialization functions supplanted the need for these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75886 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
64cc97212346992892b6c92158c08cd93149a882 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Kill off <TARGET>MachineModule variables, and <TARGETASMPRINTER>ForceLink
variables.
- Module initialization functions supplanted the need for these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75886 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
f0cda48cf2490ed0212fc438beec5e803beb87f1 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift addAssemblyEmitter into LLVMTargetMachine.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75859 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
5d77cad60bd82dfa2d00f78e26443d667922efbf 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift addAssemblyEmitter into LLVMTargetMachine.
- No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75859 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
3e0ad8b5c033e9640473e7a274dbcd5d71dc4419 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75848 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
cfe9a605eea542d91e3db74289b69b7e317d90a6 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Lift DumpAsm / -print-emitted-asm functionality into LLVMTargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75848 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
b3cbc675ed99c2f5c8bc1125dbfa27c5727207f8 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove old style hacks to register AsmPrinter into TargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75843 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
f05522974b3c1b9dc2644831364e19d5132e751b 16-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove old style hacks to register AsmPrinter into TargetMachine.
- No intended functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75843 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
fe5939fd18b28961606da555f9c0ca5d7099a19b 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Reapply TargetRegistry refactoring commits.

--- Reverse-merging r75799 into '.':
U test/Analysis/PointerTracking
U include/llvm/Target/TargetMachineRegistry.h
U include/llvm/Target/TargetMachine.h
U include/llvm/Target/TargetRegistry.h
U include/llvm/Target/TargetSelect.h
U tools/lto/LTOCodeGenerator.cpp
U tools/lto/LTOModule.cpp
U tools/llc/llc.cpp
U lib/Target/PowerPC/PPCTargetMachine.h
U lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
U lib/Target/PowerPC/PPCTargetMachine.cpp
U lib/Target/PowerPC/PPC.h
U lib/Target/ARM/ARMTargetMachine.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/ARM/ARMTargetMachine.h
U lib/Target/ARM/ARM.h
U lib/Target/XCore/XCoreTargetMachine.cpp
U lib/Target/XCore/XCoreTargetMachine.h
U lib/Target/PIC16/PIC16TargetMachine.cpp
U lib/Target/PIC16/PIC16TargetMachine.h
U lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
U lib/Target/Alpha/AlphaTargetMachine.cpp
U lib/Target/Alpha/AlphaTargetMachine.h
U lib/Target/X86/X86TargetMachine.h
U lib/Target/X86/X86.h
U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
U lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h
U lib/Target/X86/X86TargetMachine.cpp
U lib/Target/MSP430/MSP430TargetMachine.cpp
U lib/Target/MSP430/MSP430TargetMachine.h
U lib/Target/CppBackend/CPPTargetMachine.h
U lib/Target/CppBackend/CPPBackend.cpp
U lib/Target/CBackend/CTargetMachine.h
U lib/Target/CBackend/CBackend.cpp
U lib/Target/TargetMachine.cpp
U lib/Target/IA64/IA64TargetMachine.cpp
U lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
U lib/Target/IA64/IA64TargetMachine.h
U lib/Target/IA64/IA64.h
U lib/Target/MSIL/MSILWriter.cpp
U lib/Target/CellSPU/SPUTargetMachine.h
U lib/Target/CellSPU/SPU.h
U lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
U lib/Target/CellSPU/SPUTargetMachine.cpp
U lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp
U lib/Target/Mips/MipsTargetMachine.cpp
U lib/Target/Mips/MipsTargetMachine.h
U lib/Target/Mips/Mips.h
U lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
U lib/Target/Sparc/SparcTargetMachine.cpp
U lib/Target/Sparc/SparcTargetMachine.h
U lib/ExecutionEngine/JIT/TargetSelect.cpp
U lib/Support/TargetRegistry.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75820 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
51b198af83cb0080c2709b04c129a3d774c07765 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Reapply TargetRegistry refactoring commits.

--- Reverse-merging r75799 into '.':
U test/Analysis/PointerTracking
U include/llvm/Target/TargetMachineRegistry.h
U include/llvm/Target/TargetMachine.h
U include/llvm/Target/TargetRegistry.h
U include/llvm/Target/TargetSelect.h
U tools/lto/LTOCodeGenerator.cpp
U tools/lto/LTOModule.cpp
U tools/llc/llc.cpp
U lib/Target/PowerPC/PPCTargetMachine.h
U lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
U lib/Target/PowerPC/PPCTargetMachine.cpp
U lib/Target/PowerPC/PPC.h
U lib/Target/ARM/ARMTargetMachine.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/ARM/ARMTargetMachine.h
U lib/Target/ARM/ARM.h
U lib/Target/XCore/XCoreTargetMachine.cpp
U lib/Target/XCore/XCoreTargetMachine.h
U lib/Target/PIC16/PIC16TargetMachine.cpp
U lib/Target/PIC16/PIC16TargetMachine.h
U lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
U lib/Target/Alpha/AlphaTargetMachine.cpp
U lib/Target/Alpha/AlphaTargetMachine.h
U lib/Target/X86/X86TargetMachine.h
U lib/Target/X86/X86.h
U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
U lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h
U lib/Target/X86/X86TargetMachine.cpp
U lib/Target/MSP430/MSP430TargetMachine.cpp
U lib/Target/MSP430/MSP430TargetMachine.h
U lib/Target/CppBackend/CPPTargetMachine.h
U lib/Target/CppBackend/CPPBackend.cpp
U lib/Target/CBackend/CTargetMachine.h
U lib/Target/CBackend/CBackend.cpp
U lib/Target/TargetMachine.cpp
U lib/Target/IA64/IA64TargetMachine.cpp
U lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
U lib/Target/IA64/IA64TargetMachine.h
U lib/Target/IA64/IA64.h
U lib/Target/MSIL/MSILWriter.cpp
U lib/Target/CellSPU/SPUTargetMachine.h
U lib/Target/CellSPU/SPU.h
U lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
U lib/Target/CellSPU/SPUTargetMachine.cpp
U lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp
U lib/Target/Mips/MipsTargetMachine.cpp
U lib/Target/Mips/MipsTargetMachine.h
U lib/Target/Mips/Mips.h
U lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
U lib/Target/Sparc/SparcTargetMachine.cpp
U lib/Target/Sparc/SparcTargetMachine.h
U lib/ExecutionEngine/JIT/TargetSelect.cpp
U lib/Support/TargetRegistry.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75820 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
1721b8dc5f33106beb57f85ac96a493820e99993 15-Jul-2009 Stuart Hastings <stuart@apple.com> Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair broken LLVM-GCC build.
Will revert 75770 in the llvm-gcc trunk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75799 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
2286f8dc4cec0625f7d7a14e2570926cf8599646 15-Jul-2009 Stuart Hastings <stuart@apple.com> Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair broken LLVM-GCC build.
Will revert 75770 in the llvm-gcc trunk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75799 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
dfd64ca7d0d832485dcae754b5fa50f912aa703c 15-Jul-2009 David Goodwin <david_goodwin@apple.com> Thumb-2 only support [base_reg + offset_reg] addressing, not [base_reg - offset_reg].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75789 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7ecc850cf19b365a88f30c3f300d3979b960fe8b 15-Jul-2009 David Goodwin <david_goodwin@apple.com> Thumb-2 only support [base_reg + offset_reg] addressing, not [base_reg - offset_reg].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75789 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
8ba03b7ed73b410bde95dbcf528ece3782e84a1f 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Replace large swaths of copy-n-paste code with obvious helper function...
- Which was already present in the module!

- I skipped this xform for Alpha, since it runs an extra pass during assembly
emission, but not when emitting assembly via the DumpAsm flag.

- No functionality change.

--
ddunbar@giles:llvm$ svn diff | grep '^- ' | sort | uniq -c
18 - PM.add(AsmPrinterCtor(ferrs(), *this, true));
18 - assert(AsmPrinterCtor && "AsmPrinter was not linked in");
18 - if (AsmPrinterCtor)
18 - if (DumpAsm) {
18 - }
ddunbar@giles:llvm$ svn diff | grep '^+ ' | sort | uniq -c
18 + addAssemblyEmitter(PM, OptLevel, true, ferrs());
18 + if (DumpAsm)
--


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75782 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
f3f4715ac1de3ae4c89eeb96f23d6cd4876cc323 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Replace large swaths of copy-n-paste code with obvious helper function...
- Which was already present in the module!

- I skipped this xform for Alpha, since it runs an extra pass during assembly
emission, but not when emitting assembly via the DumpAsm flag.

- No functionality change.

--
ddunbar@giles:llvm$ svn diff | grep '^- ' | sort | uniq -c
18 - PM.add(AsmPrinterCtor(ferrs(), *this, true));
18 - assert(AsmPrinterCtor && "AsmPrinter was not linked in");
18 - if (AsmPrinterCtor)
18 - if (DumpAsm) {
18 - }
ddunbar@giles:llvm$ svn diff | grep '^+ ' | sort | uniq -c
18 + addAssemblyEmitter(PM, OptLevel, true, ferrs());
18 + if (DumpAsm)
--


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75782 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
d10106b39dd10904a4126f253609afd470fa063b 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Kill off old (TargetMachine level, not Target level) match quality functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75780 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
6c05796294a7a0693d96c0c87194b9d5ddf55a94 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Kill off old (TargetMachine level, not Target level) match quality functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75780 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
8ea70214b5ffcdc5c3693a082cc1ec3cec6ba98b 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Provide TargetMachine implementations with reference to Target they were created
from.
- This commit is almost entirely propogating the reference through the
TargetMachine subclasses' constructor calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75778 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
03f4bc5d6cf777c8aa559c299ef7f85126872881 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Provide TargetMachine implementations with reference to Target they were created
from.
- This commit is almost entirely propogating the reference through the
TargetMachine subclasses' constructor calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75778 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
6fa4f57aed4e1ff2cb6a85dd08f04b91261814d0 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Register Target's TargetMachine and AsmPrinter in the new registry.
- This abuses TargetMachineRegistry's constructor for now, this will get
cleaned up in time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75762 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
4246790aa84a530b0378d917023584c2c7adb4a9 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Register Target's TargetMachine and AsmPrinter in the new registry.
- This abuses TargetMachineRegistry's constructor for now, this will get
cleaned up in time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75762 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
0eb6699b8f19fc450c7ce61c7ac0638753f92f9c 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add TargetInfo libraries for all targets.
- Intended to match current TargetMachine implementations.

- No facilities for linking these in yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75751 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
argetInfo/ARMTargetInfo.cpp
argetInfo/CMakeLists.txt
argetInfo/Makefile
c984df8602a8b2450cbdb6ff55fd49ba709a391e 15-Jul-2009 Daniel Dunbar <daniel@zuster.org> Add TargetInfo libraries for all targets.
- Intended to match current TargetMachine implementations.

- No facilities for linking these in yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75751 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
argetInfo/ARMTargetInfo.cpp
argetInfo/CMakeLists.txt
argetInfo/Makefile
48fe5b85e51ea6468a56159d905b89bcaa606956 15-Jul-2009 Chris Lattner <sabre@nondot.org> convert arm/darwin stubs to use the mangler to synthesize all the names instead of
doing it with printSuffixedName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b1ccad3b0d291a089aac0e9992d320d65cc27dce 15-Jul-2009 Chris Lattner <sabre@nondot.org> convert arm/darwin stubs to use the mangler to synthesize all the names instead of
doing it with printSuffixedName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75741 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
494cb892adfe81c0cb786693a0490c36d8cf3a7b 15-Jul-2009 Chris Lattner <sabre@nondot.org> fix an arm codegen bug (the same as PR4482 on ppc) where available_externally
symbols were not getting stubs. While I'm at it, add a big testcase for
stub generation to make sure I don't break anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75737 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
4fb63d088bca9fc31e54eb1619e2cb448c3a4b53 15-Jul-2009 Chris Lattner <sabre@nondot.org> fix an arm codegen bug (the same as PR4482 on ppc) where available_externally
symbols were not getting stubs. While I'm at it, add a big testcase for
stub generation to make sure I don't break anything.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75737 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
8735beca681958d0f9544c6231cb27856cbe7bfc 15-Jul-2009 Chris Lattner <sabre@nondot.org> convert [Hidden]GVNonLazyPtrs to compute the global and stub names
with the mangler (like x86 and ppc), instead of going through
printSuffixedName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0a2385455b01186b947148b00c80a89e8a725099 15-Jul-2009 Chris Lattner <sabre@nondot.org> convert [Hidden]GVNonLazyPtrs to compute the global and stub names
with the mangler (like x86 and ppc), instead of going through
printSuffixedName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75736 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9f5b2aa7fba203469386acc413c23dd41a713bc9 15-Jul-2009 Owen Anderson <resistor@mac.com> Move EVER MORE stuff over to LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75703 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
9adc0abad3c3ed40a268ccbcee0c74cb9e1359fe 15-Jul-2009 Owen Anderson <resistor@mac.com> Move EVER MORE stuff over to LLVMContext.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75703 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
9b784f00e4d72b2fa3ec5b270d1439c896e06c1c 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix bad indentation and 80-col violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75686 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
8718bc4497b3f7e6e5dde16845179744d54988bf 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix bad indentation and 80-col violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75686 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
9fe1423dc142764dc56cf65f38317e0fcd0a7fc2 14-Jul-2009 David Goodwin <david_goodwin@apple.com> Check for PRE_INC and POST_INC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75683 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4cb73525a943d69da0f2b0c31c1a1d7f3cdd879d 14-Jul-2009 David Goodwin <david_goodwin@apple.com> Check for PRE_INC and POST_INC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75683 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
302008dbeae03364ffffc1bcf77d2eb28897d98a 14-Jul-2009 David Greene <greened@obbligato.org> Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75670 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
71847813bc419f7a0667468136a07429c6d9f164 14-Jul-2009 David Greene <greened@obbligato.org> Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75670 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
ef8e1badf610088c4998afd4bc3c65383e741169 14-Jul-2009 David Goodwin <david_goodwin@apple.com> hasThumb2() does not mean we are compiling for thumb, must also check isThumb().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75660 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
419c6150877bb35bd3a95a3101e47f6615c8e390 14-Jul-2009 David Goodwin <david_goodwin@apple.com> hasThumb2() does not mean we are compiling for thumb, must also check isThumb().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75660 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
53dadfcae0ea56e86c639a91b33d643a4939a8f8 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Remove an extra space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75658 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3eadf00b46fbb2aa59b8771a8d8bdf1bfd7f9141 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Remove an extra space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75658 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b3cdde6d77eadb722aff894b1d90498ce70babc2 14-Jul-2009 Chris Lattner <sabre@nondot.org> Reapply my previous asmprinter changes now with more testing and two
additional bug fixes:

1. The bug that everyone hit was a problem in the asmprinter where it
would remove $stub but keep the L prefix on a name when emitting the
indirect symbol. This is easy to fix by keeping the name of the stub
and the name of the symbol in a StringMap instead of just keeping a
StringSet and trying to reconstruct it late.

2. There was a problem printing the personality function. The current
logic to print out the personality function from the DWARF information
is a bit of a cesspool right now that duplicates a bunch of other
logic in the asm printer. The short version of it is that it depends
on emitting both the L and _ prefix for symbols (at least on darwin)
and until I can untangle it, it is best to switch the mangler back to
emitting both prefixes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b8158acc23f5f0bf235fb1c6a8182a38ec9b00b2 14-Jul-2009 Chris Lattner <sabre@nondot.org> Reapply my previous asmprinter changes now with more testing and two
additional bug fixes:

1. The bug that everyone hit was a problem in the asmprinter where it
would remove $stub but keep the L prefix on a name when emitting the
indirect symbol. This is easy to fix by keeping the name of the stub
and the name of the symbol in a StringMap instead of just keeping a
StringSet and trying to reconstruct it late.

2. There was a problem printing the personality function. The current
logic to print out the personality function from the DWARF information
is a bit of a cesspool right now that duplicates a bunch of other
logic in the asm printer. The short version of it is that it depends
on emitting both the L and _ prefix for symbols (at least on darwin)
and until I can untangle it, it is best to switch the mangler back to
emitting both prefixes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75646 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
bd448e3ca993226084d7f53445388fcd8e46b996 14-Jul-2009 Edwin Török <edwintorok@gmail.com> llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
humb1RegisterInfo.cpp
c23197a26f34f559ea9797de51e187087c039c42 14-Jul-2009 Torok Edwin <edwintorok@gmail.com> llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
humb1RegisterInfo.cpp
cc06725e0fa56905ae2cd0c601d687a852f93c7c 14-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r75615, which depended on 75610.

--- Reverse-merging r75615 into '.':
U lib/Target/XCore/XCoreAsmPrinter.cpp
U lib/Target/PIC16/PIC16AsmPrinter.cpp
U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
U lib/Target/MSP430/MSP430AsmPrinter.cpp
U lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
U lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
U lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
U lib/Target/MSIL/MSILWriter.cpp
U lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
U lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
192957d376923cefc993c1b5c04127c42f1008ec 14-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r75615, which depended on 75610.

--- Reverse-merging r75615 into '.':
U lib/Target/XCore/XCoreAsmPrinter.cpp
U lib/Target/PIC16/PIC16AsmPrinter.cpp
U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
U lib/Target/MSP430/MSP430AsmPrinter.cpp
U lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
U lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
U lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
U lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
U lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
U lib/Target/MSIL/MSILWriter.cpp
U lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
U lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75637 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
64b9f4289a80f8a9f51f7ad766775277ec41e0c6 14-Jul-2009 Chris Lattner <sabre@nondot.org> Rename getValueName -> getMangledName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b09d2ccc0f23107fc1047694ce266a9cf5e0a3c2 14-Jul-2009 Chris Lattner <sabre@nondot.org> Rename getValueName -> getMangledName.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75615 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
fb1d14783bcb0c6ffb62bf32e2316d98e8e98641 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> 1. In Thumb mode, select tBx instead of ARM variants.
2. BX does not "use" the link register, it defines it.
3. Fix a couple more places in thumb td file that still uses pre-UAL syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75585 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
f6bc4ae4a1a2dbf986099ab7b74106e8d273cbe1 14-Jul-2009 Evan Cheng <evan.cheng@apple.com> 1. In Thumb mode, select tBx instead of ARM variants.
2. BX does not "use" the link register, it defines it.
3. Fix a couple more places in thumb td file that still uses pre-UAL syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75585 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
f354d36027f21554f43b365cd07cf965a7687096 14-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix detection of valid BFC immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75576 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c2ffd286af76f8df71af0de18987cde2b2cb467b 14-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix detection of valid BFC immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75576 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a11dc992517d49419fa563426fe5e0fb86927237 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix an obvious copy-and-paste error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75566 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
e622087e2064a5496ed9be5d9a8796349cf18b75 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix an obvious copy-and-paste error.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75566 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
0473735371cb31e40f98d7b6022b84be5932bcf0 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Revert 75309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75562 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
60206140a19bd88d4c2f6a2198baa7f975e1370a 14-Jul-2009 Bob Wilson <bob.wilson@apple.com> Revert 75309.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75562 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
651117e5e3e4981137364ff0728083ef28f4f660 13-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix FP elimination code to work for Thumb-2 addrmode AddrModeT2_so. This fixes SingleSource/Benchmarks/Stanford/Queens (among others).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75513 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
ea670f1dd8067a9b65f952d0548669045bf0e21f 13-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix FP elimination code to work for Thumb-2 addrmode AddrModeT2_so. This fixes SingleSource/Benchmarks/Stanford/Queens (among others).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75513 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
0c5f44ef85612448fb2eac6744f2ac4a5c55298c 13-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix comment typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d2559bf3f30cc7400483825414489ec0fb36481a 13-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix comment typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75479 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
151026f04f7e7e2dcbd1120e61b1f4222db450f7 12-Jul-2009 Edwin Török <edwintorok@gmail.com> Remove extra \n from LLVM_UNREACHABLE calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75416 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
29fd056d8106c27fb0d9e4602c4d7fbd539219c6 12-Jul-2009 Torok Edwin <edwintorok@gmail.com> Remove extra \n from LLVM_UNREACHABLE calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75416 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
675d56222b6b98d2c22a17aaf69a036e57d5426a 11-Jul-2009 Edwin Török <edwintorok@gmail.com> assert(0) -> LLVM_UNREACHABLE.
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
RMISelLowering.cpp
c25e7581b9b8088910da31702d4ca21c4734c6d7 11-Jul-2009 Torok Edwin <edwintorok@gmail.com> assert(0) -> LLVM_UNREACHABLE.
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
RMISelLowering.cpp
ef2df966e884524bf2c0003e3361052f4520046e 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Don't put IT instruction before conditional branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75361 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
ed338e80f92d6efa961d9f8c29239dde1507e683 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Don't put IT instruction before conditional branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75361 91177308-0d34-0410-b5e6-96231b3b80d8
humb2ITBlockPass.cpp
76aeed376644c2ad0fa4e44217d39b3e3567b323 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Smarter isel of ldrsb / ldrsh. Only make use of these when [r,r] address is feasible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75360 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrThumb.td
EADME-Thumb.txt
2f297df02eac140de4e2f85e56bd79abf883360c 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Smarter isel of ldrsb / ldrsh. Only make use of these when [r,r] address is feasible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75360 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrThumb.td
EADME-Thumb.txt
7bd2ad18193b56a829bbaf05911faca496c19ac1 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
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
EADME-Thumb.txt
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
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
RMBaseRegisterInfo.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
EADME-Thumb.txt
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb2InstrInfo.cpp
b6f656e6ad0719c09f953d79faca7732b89f16aa 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75358 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
dd6f63209cba0003e67470938830de2cb6917336 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75358 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
9231da32b3a1809a75414616082b28284e3579fc 11-Jul-2009 Bob Wilson <bob.wilson@apple.com> Add superclasses of ARM Neon quad registers. The Q2PR class contains pairs of
quad registers and the Q4PR class holds sets of 4 quad registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75309 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
1e44ed88ebb1c381260a0b0777851277a7657587 11-Jul-2009 Bob Wilson <bob.wilson@apple.com> Add superclasses of ARM Neon quad registers. The Q2PR class contains pairs of
quad registers and the Q4PR class holds sets of 4 quad registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75309 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
ce9fbbe7d2492c5343549b0eee3a5a531bd9f2a5 10-Jul-2009 David Goodwin <david_goodwin@apple.com> Predicate VFP instructions on HasVFP2 instead of IsARM. This allows VFP instructions with thumb-2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75254 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
3ca524e336ad0be449c080235a2d7a38516f0ca4 10-Jul-2009 David Goodwin <david_goodwin@apple.com> Predicate VFP instructions on HasVFP2 instead of IsARM. This allows VFP instructions with thumb-2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75254 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrVFP.td
48743562f740ed4b6345b4a01e6d821599b10e19 10-Jul-2009 David Goodwin <david_goodwin@apple.com> t2LDM_RET does not fall-through.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75250 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
b1beca635fcac095c6227c6518a35e165f8f03bc 10-Jul-2009 David Goodwin <david_goodwin@apple.com> t2LDM_RET does not fall-through.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75250 91177308-0d34-0410-b5e6-96231b3b80d8
humb2InstrInfo.cpp
4b28db3bbe1251f05072bc273950527b18ae38bb 10-Jul-2009 Duncan Sands <baldrick@free.fr> Add Thumb2ITBlockPass.cpp to CMakeLists.txt, fixing
the cmake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75246 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
179bef36368ebeddbb5cb754fa1e5859e311855d 10-Jul-2009 Duncan Sands <baldrick@free.fr> Add Thumb2ITBlockPass.cpp to CMakeLists.txt, fixing
the cmake build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75246 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
37a990869879018d1739489098fd983b1d8686c3 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> More info about Thumb1 predication support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75220 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
b6264decdbec4940f66a8850450ab1c31f058b4c 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> More info about Thumb1 predication support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75220 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
986e3b713f1406d19ce77a12886e8ea38bf00e3b 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> We don't need separate thumb1 instructions tADDSi3 etc. for addc and subc. The "normal" version always modify condition register CPSR so we should just use def : pat to match to the same instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75219 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
892837abf35c2c1439af9066a9c2aaa3b3f0e72b 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> We don't need separate thumb1 instructions tADDSi3 etc. for addc and subc. The "normal" version always modify condition register CPSR so we should just use def : pat to match to the same instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75219 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d5b67fab9a5293e74626c34c2967ec4b5cf9283d 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
RM.h
RMInstrThumb.td
RMInstrThumb2.td
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
humb2ITBlockPass.cpp
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
RM.h
RMInstrThumb.td
RMInstrThumb2.td
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
humb2ITBlockPass.cpp
f15238c4648722b59ee418119cf3f5ea425c37aa 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Move isPredicated from .cpp to .h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75217 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
ab331504452a833f27a030f13525b964545d768a 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Move isPredicated from .cpp to .h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75217 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
859f1f8be6f11797632d51462a54022b37974004 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75212 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
b5619f42f4fdf347380d28357549df09b9ca3946 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75212 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.h
a34fca166572ff4c9192e375d74d89808b3caf74 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Remove a bogus assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75206 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
9c06178e355be69e313820d31878022bc882c2db 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Remove a bogus assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75206 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
995f697df68986ea48f8194239c28d3db9c94de5 10-Jul-2009 Bob Wilson <bob.wilson@apple.com> Replace TM.getRegisterInfo() calls by TRI instance variable.
Use getAsmName() method instead of accessing AsmName field directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
97354f5181ee6b7999a468bfc5b62c11e11f6318 10-Jul-2009 Bob Wilson <bob.wilson@apple.com> Replace TM.getRegisterInfo() calls by TRI instance variable.
Use getAsmName() method instead of accessing AsmName field directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75205 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
c675135c7e8c69bc61a95ebedd0741dc8354f649 10-Jul-2009 Bob Wilson <bob.wilson@apple.com> Handle 'a' modifier on inline assembly operands.
This is part of the fix for pr4521.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75201 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9b4b00ad436daeac6f97f77e9b5a3cc67ada150c 10-Jul-2009 Bob Wilson <bob.wilson@apple.com> Handle 'a' modifier on inline assembly operands.
This is part of the fix for pr4521.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75201 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b8d0743fecd1f44323524e60e3aadc835f95755d 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Added Thumb IT instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75198 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smPrinter/ARMAsmPrinter.cpp
e5564748b7d35df5c06fd243d04ea1eb305d3bc3 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Added Thumb IT instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75198 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
smPrinter/ARMAsmPrinter.cpp
e1fce341f4ee887c5e164a32f58802c22d264a03 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Another todo entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75192 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
896fe89f55a1620782eb3d421271059a02d92d1c 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Another todo entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75192 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
4adba7bf2b784076191cf3dc67d0c294d1206707 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Initial support for load / store multiple opt pass Thumb2 support (post-allocation only). It's kind of there, but not quite. I'll return to this later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75190 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
45032f28013aa69d07bf859da9d976947910f059 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Initial support for load / store multiple opt pass Thumb2 support (post-allocation only). It's kind of there, but not quite. I'll return to this later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75190 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
ad877c8a049fe4252488243715fe3339831a6443 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
RMInstrThumb2.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
RMInstrThumb2.td
7bd57f8b46a9a6d981fc22792fd9f6ccd83587ef 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> LDM_RET should be marked mayLoad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75187 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d75223d6c672a0a29beecb42dacf6350e3426b3f 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> LDM_RET should be marked mayLoad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75187 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6bc6720f9668f3f7fbbe3faa21c21231ac54fbbc 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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
e3dad534b10bde98cd888de509c948c5f34f9e0a 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a Thumb readme entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75173 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
6dded67b0d6262964e22163d0ab37c9ee6957c0a 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a Thumb readme entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75173 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
4df2ea7b4872b73cf5426a7b06e2bbfa7e6afd39 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
RMInstrThumb2.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
RMInstrThumb2.td
cceb78316b524c67f47ae59ee1b019f09d077a33 09-Jul-2009 David Goodwin <david_goodwin@apple.com> Handle Thumb-2 addressing modes during FP elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75158 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
8b98b85c64543e7ec479f40e5c2b5a24aa862fed 09-Jul-2009 David Goodwin <david_goodwin@apple.com> Handle Thumb-2 addressing modes during FP elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75158 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
a0167020062bbcfe0558faa29dd705ca6f9a8e2a 09-Jul-2009 Owen Anderson <resistor@mac.com> Thread LLVMContext through MVT and related parts of SDISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75153 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d1474d09cbe5fdeec8ba0d6c6b52f316f3422532 09-Jul-2009 Owen Anderson <resistor@mac.com> Thread LLVMContext through MVT and related parts of SDISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75153 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ac0e7d6669b2fd7a1f6b6a30ddc6ec47af6eb4f3 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Reorg includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75115 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
RMTargetMachine.h
1945b7b5c5da39b89c2a2d3083d02e2aabf3cf98 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Reorg includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75115 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
RMTargetMachine.h
4a8979320ced9b38019f6f2c074f2d3dbe1b189e 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
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb.td
RMInstrThumb2.td
RMMachineFunctionInfo.h
RMTargetAsmInfo.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
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
RMBaseRegisterInfo.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb.td
RMInstrThumb2.td
RMMachineFunctionInfo.h
RMTargetAsmInfo.cpp
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
dabc6c0de0dff276fc3f7002a6102788a2f89cbc 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> - Add some NEON ld / st instruction static encoding.
- Make bits 25-27 for ldrh, etc. explicitly zero. Previously only the JIT uses the encoding information and it's assuming anything not specified to be zero. Making them explicit so the disassembler is happy.
Patch by Sean Callanan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75065 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
dda0f4cb798e5f482247cda4ea9b74977b4601ec 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> - Add some NEON ld / st instruction static encoding.
- Make bits 25-27 for ldrh, etc. explicitly zero. Previously only the JIT uses the encoding information and it's assuming anything not specified to be zero. Making them explicit so the disassembler is happy.
Patch by Sean Callanan.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75065 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
8be2a5bd2b7a7296f150053c0a8d8767a810b78c 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
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
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
RMAddressingModes.h
RMBaseInstrInfo.cpp
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
RMLoadStoreOptimizer.cpp
smPrinter/ARMAsmPrinter.cpp
26cb025878ef21cd1be821246ebc284b59d4434a 08-Jul-2009 Edwin Török <edwintorok@gmail.com> Missed an exit during the conversion.
Will convert assert(0) that don't have abort() to LLVM_UNREACHABLE in a later
commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75045 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3046470919e648ff7c011bda9c094163062c83dc 08-Jul-2009 Torok Edwin <edwintorok@gmail.com> Missed an exit during the conversion.
Will convert assert(0) that don't have abort() to LLVM_UNREACHABLE in a later
commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75045 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4d9756a9843862edb9daddfaa0d8c78ac1c52b32 08-Jul-2009 Edwin Török <edwintorok@gmail.com> Implement changes from Chris's feedback.
Finish converting lib/Target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75043 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
dac237e18209b697a8ba122d0ddd9cad4dfba1f8 08-Jul-2009 Torok Edwin <edwintorok@gmail.com> Implement changes from Chris's feedback.
Finish converting lib/Target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75043 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
f7e1ae349ce59eab9904cc36a88f520524baf585 08-Jul-2009 Bob Wilson <bob.wilson@apple.com> Implement NEON vst1 instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75037 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
2ed334694fb39332eddef21f6bc7af9bb21aa200 08-Jul-2009 Bob Wilson <bob.wilson@apple.com> Implement NEON vst1 instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75037 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrNEON.td
1f0bb9901f04ac2ad87b091504adc54306b4815c 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
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrThumb2.td
RMRegisterInfo.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2RegisterInfo.cpp
humb2RegisterInfo.h
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
RMBaseInstrInfo.h
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMInstrInfo.cpp
RMInstrThumb2.td
RMRegisterInfo.cpp
humb1InstrInfo.cpp
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2RegisterInfo.cpp
humb2RegisterInfo.h
81332c2a6bda16a1f3586fa219fdf4c5d769606e 08-Jul-2009 Xerxes Ranby <xerxes@zafena.se> Fix cmake build.
Added ARMBaseRegisterInfo.cpp to lib/Target/ARM/CMakeLists.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75035 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
cecbc964e1996c39881b3442fc7390e82050f527 08-Jul-2009 Xerxes Ranby <xerxes@zafena.se> Fix cmake build.
Added ARMBaseRegisterInfo.cpp to lib/Target/ARM/CMakeLists.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75035 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
2013b4c6940f16a64c6027821de217fb0e97deef 08-Jul-2009 David Goodwin <david_goodwin@apple.com> Push methods into base class in preparation for sharing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75020 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
db5a71a8e01ed9a0d93a19176df6ea0aea510d7b 08-Jul-2009 David Goodwin <david_goodwin@apple.com> Push methods into base class in preparation for sharing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75020 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
ed592c08e5c1e0b164f606f8e8fb00199e19660c 08-Jul-2009 Bob Wilson <bob.wilson@apple.com> Implement NEON vld1 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
205a5ca6cfabc6cd408634a2fa7f2529956cc2cf 08-Jul-2009 Bob Wilson <bob.wilson@apple.com> Implement NEON vld1 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75019 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrNEON.td
smPrinter/ARMAsmPrinter.cpp
3cb884811f68c27210391441d631146faa74f55e 08-Jul-2009 Edwin Török <edwintorok@gmail.com> Start converting to new error handling API.
cerr+abort -> llvm_report_error
assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75018 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
ab7c09b6b6f4516a631fd6788918c237c83939af 08-Jul-2009 Torok Edwin <edwintorok@gmail.com> Start converting to new error handling API.
cerr+abort -> llvm_report_error
assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75018 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMCodeEmitter.cpp
RMISelLowering.cpp
RMJITInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
humb1RegisterInfo.cpp
humb2RegisterInfo.cpp
21a075673bb458972682b9bb178685eca1db93cf 08-Jul-2009 David Goodwin <david_goodwin@apple.com> Start breaking out common base functionality for register info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75016 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
c140c4803dc3e10e08138670829bc0494986abe9 08-Jul-2009 David Goodwin <david_goodwin@apple.com> Start breaking out common base functionality for register info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75016 91177308-0d34-0410-b5e6-96231b3b80d8
RMBaseRegisterInfo.cpp
RMBaseRegisterInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
41afec29ab583a42c864b213ed1b811e7b39b810 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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
MakeLists.txt
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
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
RMBaseInstrInfo.cpp
RMBaseInstrInfo.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
MakeLists.txt
humb1InstrInfo.cpp
humb1InstrInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
8f5253baafe027bb8939498d9eb1083febc7339a 08-Jul-2009 Nick Lewycky <nicholas@mxc.ca> Remove the vicmp and vfcmp instructions. Because we never had a release with
these instructions, no autoupgrade or backwards compatibility support is
provided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74991 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7f6aa2b162e5daaf7b9ccf05d749597d3d7cf460 08-Jul-2009 Nick Lewycky <nicholas@mxc.ca> Remove the vicmp and vfcmp instructions. Because we never had a release with
these instructions, no autoupgrade or backwards compatibility support is
provided.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74991 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9aa4cd32ed7925de9df616a8ea7de4ff77fa5b00 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a Thumb2 instruction flag to that indicates whether the instruction can be transformed to 16-bit variant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74988 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrInfo.h
34a0fa362dde63cf9adf5917ab2ee2c2b7dd2179 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a Thumb2 instruction flag to that indicates whether the instruction can be transformed to 16-bit variant.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74988 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMInstrFormats.td
RMInstrInfo.h
ec6e592736ba478f7ec001eae1d68a436fec6dd0 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a todo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74976 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
EADME-Thumb2.txt
c9a4153eef056fad1fd81e783d683aa99841003a 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a todo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74976 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
EADME-Thumb2.txt
e5f32ae95c6e84d725c5f53430be0b432c283592 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Also statically set bit 25 for BR_JT instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74974 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0fc0ade0951f8c0e3adb8899c5878d225e010b97 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Also statically set bit 25 for BR_JT instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74974 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
83a32b460a2af4f7f814c337b3ab1ae6a2b897cb 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Statically encode bit 25 to indicate immediate form of data processing instructions. Patch by Sean Callanan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74972 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
bc8a94540a65907472bf6d6e43c8fea864116cf5 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Statically encode bit 25 to indicate immediate form of data processing instructions. Patch by Sean Callanan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74972 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
0313767db7f8c70bf43fbebc44ba69cd907fa1fc 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
2597a07e281ad074f53761ee94596f9e3dde36f1 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add BX and BXr9 encodings. Patch by Sean Callanan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74938 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1c83eb33c3e2f463307fb7e61d5b464833645d86 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add BX and BXr9 encodings. Patch by Sean Callanan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74938 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cd0ae28436ee134eed18e9297ea4ce9abe1cb72f 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
RMInstrThumb2.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
RMInstrThumb2.td
a5626262c4e3ebac0165f68f9cc89615a6cd155c 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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrThumb2.td
451192e123b9429e0f9788e26e4b33db0e3019fd 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74888 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
58541fd62707b6856beee3db9e254b0110607bb1 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74888 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
86ae71d0e423ede6ffd57bc1f627a7c0751a9be3 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> isThumb2 really should mean thumb2 only, not thumb2+.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74871 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
3147fb2cff9ca0d258f8ab20ff23b9c447024df1 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> isThumb2 really should mean thumb2 only, not thumb2+.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74871 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
299ee654a2c92e1909144b23cf470a3be5a91d5d 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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.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
RMCodeEmitter.cpp
RMInstrInfo.td
RMInstrThumb2.td
c8147e1cc967c50f72158cc93ee538a671a85f31 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Added ARM::mls for armv6t2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74866 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
edcbada3d06c5cf57d2dfd737eb925872bc6182b 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Added ARM::mls for armv6t2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74866 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
aabb9a5359cbb0bf9d25bfb917ecb09c086d034b 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the Object Code Emitter class. Original patch by Aaron Gray, I did some
cleanup, removed some #includes and moved Object Code Emitter out-of-line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74813 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMTargetMachine.cpp
RMTargetMachine.h
ac57e6e498abccb117e0d61c2fa0f733845e50cb 06-Jul-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add the Object Code Emitter class. Original patch by Aaron Gray, I did some
cleanup, removed some #includes and moved Object Code Emitter out-of-line.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74813 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMTargetMachine.cpp
RMTargetMachine.h
71c697382e6165ab1b601866a52c8f6628517e42 03-Jul-2009 Tilmann Scheller <tilmann.scheller@googlemail.com> Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call.

With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put
into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack.

The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74764 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6b61cd185eeb90bec93f042535594132ae1f0f41 03-Jul-2009 Tilmann Scheller <tilmann.scheller@googlemail.com> Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call.

With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put
into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack.

The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74764 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0f994ed52b0db0473d50959aa058f97e49b57fde 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
RMISelLowering.cpp
RMInstrThumb2.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
RMISelLowering.cpp
RMInstrThumb2.td
2832edfb483e43d6f57fe1617f77766855f906dc 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
RMInstrThumb2.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
RMInstrThumb2.td
d72edde77d9576ac77449a57255593fa8281ccbb 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
RMInstrThumb2.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
RMInstrThumb2.td
24f87d81329942fe94010c943b0d1c8e45568b4c 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
RMInstrThumb2.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
RMInstrThumb2.td
40995c93cda1e65d6b469aa06587e68e930358ff 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
aca520dbbde3bfd996b6c32c541b58f863d7f5d4 03-Jul-2009 David Goodwin <david_goodwin@apple.com> Checkpoint refactoring of ThumbInstrInfo and ThumbRegisterInfo into Thumb1InstrInfo, Thumb2InstrInfo, Thumb1RegisterInfo and Thumb2RegisterInfo. Move methods from ARMInstrInfo to ARMBaseInstrInfo to prepare for sharing with Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74731 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
MakeLists.txt
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
humbInstrInfo.cpp
humbInstrInfo.h
humbRegisterInfo.cpp
humbRegisterInfo.h
b50ea5c48f8b1ce259e034ca5c16dc14af1a582c 03-Jul-2009 David Goodwin <david_goodwin@apple.com> Checkpoint refactoring of ThumbInstrInfo and ThumbRegisterInfo into Thumb1InstrInfo, Thumb2InstrInfo, Thumb1RegisterInfo and Thumb2RegisterInfo. Move methods from ARMInstrInfo to ARMBaseInstrInfo to prepare for sharing with Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74731 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
MakeLists.txt
humb1InstrInfo.cpp
humb1InstrInfo.h
humb1RegisterInfo.cpp
humb1RegisterInfo.h
humb2InstrInfo.cpp
humb2InstrInfo.h
humb2RegisterInfo.cpp
humb2RegisterInfo.h
humbInstrInfo.cpp
humbInstrInfo.h
humbRegisterInfo.cpp
humbRegisterInfo.h
d097aa0cb5d160031b01d8831904cecbabc5ef81 02-Jul-2009 Douglas Gregor <doug.gregor@gmail.com> CMake build fixes, from Xerxes Ranby

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74720 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
033080cf6a6f6ca94f20c410204405471c19c535 02-Jul-2009 Douglas Gregor <dgregor@apple.com> CMake build fixes, from Xerxes Ranby

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74720 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
a90942ea9e09576655ed4e0536d6ab9cba5da657 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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrFormats.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrFormats.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
89191fef3ae68a9bae70df456abab12389cbcb89 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74693 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0412957764de44f63657360a22ce5445a8c87628 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74693 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b1b2abc0e7b2cc0f103c872ec6fadcb2cb370406 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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.h
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
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.h
b04191ff93c1c090f34f06a3a37b8837135d0eb7 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74683 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
31926a78e345c53d36df5e1380a69878fbfb2612 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74683 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
af3f27e2118954b60e0da2325af1832547f7f0cc 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> Factor out ARM indexed load matching code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74681 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
af4550f8265885bdf99b3b3f129f3e6fd24a41e5 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> Factor out ARM indexed load matching code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74681 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
970a10d2563e597d2a012fe9b083589873700ac2 02-Jul-2009 Bob Wilson <bob.wilson@apple.com> Add a new addressing mode for NEON load/store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74658 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
8b024a5eb5b64b482f7d92aad7a3f0e6cac93f12 02-Jul-2009 Bob Wilson <bob.wilson@apple.com> Add a new addressing mode for NEON load/store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74658 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
267aef56f46ab78167c5d62c93009ad3ba0b3bbd 01-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74650 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
b864e89fe412879823afca6dffb7e700a5bf8210 01-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix a comment typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74650 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
460847893899af98947e63bfefd623564c0e0dd7 01-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix up a comment: besides the >80col lines, the operation for this
addressing mode is encoded in the second operand, not the third.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74641 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
d4d826e17081808fea81509a959a983ed5df1d36 01-Jul-2009 Bob Wilson <bob.wilson@apple.com> Fix up a comment: besides the >80col lines, the operation for this
addressing mode is encoded in the second operand, not the third.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74641 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
045f2635a5664c0659134e6a5f6c4dbda17550f3 01-Jul-2009 Bill Wendling <isanbard@gmail.com> Update comments to make it clear that the function alignment is the Log2 of the
bytes and not bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74624 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b4202b84d7e54efe5e144885c7da63e6cc465f80 01-Jul-2009 Bill Wendling <isanbard@gmail.com> Update comments to make it clear that the function alignment is the Log2 of the
bytes and not bytes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74624 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
6521982510e67c23441d94dd4c4a7167527356cb 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74580 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
2578ba26e72e36dde64be0f52a2788480aad3378 01-Jul-2009 Evan Cheng <evan.cheng@apple.com> Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74580 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
b10d22209eac7e43d917ef2194e7a159b9b1c689 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove unused AsmPrinter OptLevel argument, and propogate.
- This more or less amounts to a revert of r65379. I'm curious to know what
happened that caused this variable to become unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74579 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
5bcc8bd0c60cfe583ee47852950aad9e532c932e 01-Jul-2009 Daniel Dunbar <daniel@zuster.org> Remove unused AsmPrinter OptLevel argument, and propogate.
- This more or less amounts to a revert of r65379. I'm curious to know what
happened that caused this variable to become unused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74579 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
5811e5ccf02d5dce63374048674ba62fff85d35a 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
RMInstrThumb2.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
RMInstrThumb2.td
2af7ed8bb82149223fac41d7fa350035f3083fb9 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
25a8ae3f10965b47ecaa9eda5e997f16fe1d9414 01-Jul-2009 Bill Wendling <isanbard@gmail.com> Add an "alignment" field to the MachineFunction object. It makes more sense to
have the alignment be calculated up front, and have the back-ends obey whatever
alignment is decided upon.

This allows for future work that would allow for precise no-op placement and the
like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74564 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
smPrinter/ARMAsmPrinter.cpp
20c568f366be211323eeaf0e45ef053278ec9ddc 01-Jul-2009 Bill Wendling <isanbard@gmail.com> Add an "alignment" field to the MachineFunction object. It makes more sense to
have the alignment be calculated up front, and have the back-ends obey whatever
alignment is decided upon.

This allows for future work that would allow for precise no-op placement and the
like.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74564 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
smPrinter/ARMAsmPrinter.cpp
bab5da1290d6e8f19a4a291acff93c58ff5966a4 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
RMInstrThumb2.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
RMInstrThumb2.td
13d2f4e87ae6b295ce49d6fba72237b351f59de6 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
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMInstrThumb2.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
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMInstrThumb2.td
f615470f4a76d5812e059cb84ae6589ce7501180 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
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrThumb.td
RMInstrThumb2.td
RMMachineFunctionInfo.h
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
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrThumb.td
RMInstrThumb2.td
RMMachineFunctionInfo.h
503be11a2d9d735109e821344b21348fceed54ce 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
RMInstrFormats.td
RMInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrInfo.h
RMInstrThumb.td
RMInstrThumb2.td
ec52c89440b58a5817d8cbb461b46f10619ac269 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
RMInstrThumb2.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
RMInstrThumb2.td
8bdcbb376685ce24dfb23087ac2a0c9dab8adfa5 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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.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
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
bba01aa595de1de7df8bb731cd11291500d7fc11 29-Jun-2009 Duncan Sands <baldrick@free.fr> Include the new file ThumbRegisterInfo.cpp to CMakeLists.txt
to make sure ThumbRegisterInfo.cpp are compiled and linked in.
Patch by Xerxes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74421 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
c91e68a0c4b92bac36c1b03c734f8795a757e669 29-Jun-2009 Duncan Sands <baldrick@free.fr> Include the new file ThumbRegisterInfo.cpp to CMakeLists.txt
to make sure ThumbRegisterInfo.cpp are compiled and linked in.
Patch by Xerxes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74421 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
532cdc58e657497cde9cfb163b37c08057ad387a 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
RMAddressingModes.h
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
EADME.txt
humbRegisterInfo.cpp
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
RMAddressingModes.h
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
EADME.txt
humbRegisterInfo.cpp
0a90fcd0751d899e47798c73d89d808bb1b41f8a 27-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Simplify a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74385 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
humbInstrInfo.cpp
humbRegisterInfo.cpp
humbRegisterInfo.h
55ad1f22b4554be3a9547fe7a8d84ce05b3d5c72 27-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Simplify a bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74385 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
humbInstrInfo.cpp
humbRegisterInfo.cpp
humbRegisterInfo.h
cbce7920f24c5c773c1d1bcb08d8ae85651c9a26 27-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> ARM refactoring. Step 2: split RegisterInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74384 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMTargetMachine.h
humbInstrInfo.cpp
humbInstrInfo.h
humbRegisterInfo.cpp
humbRegisterInfo.h
a98cbc554ca2cd40426e7c3ff8d1467da32e195d 27-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> ARM refactoring. Step 2: split RegisterInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74384 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMTargetMachine.h
humbInstrInfo.cpp
humbInstrInfo.h
humbRegisterInfo.cpp
humbRegisterInfo.h
36f26f4ad36f3790994c63956165a0d13606291a 27-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Add ThumbInstrInfo.cpp to the CMake makefiles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74382 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
1b573d8b206d5d1a13cbf46b859e35e9fbeb3738 27-Jun-2009 Douglas Gregor <dgregor@apple.com> Add ThumbInstrInfo.cpp to the CMake makefiles

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74382 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
19bb7c77c841d60c1f0c2f52af90ea4c25f4a5f1 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
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMISelDAGToDAG.cpp
RMInstrFormats.td
RMInstrThumb.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
691ed1c8a720c05984f28aa42f63bb13c2fd7817 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
RMInstrThumb2.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
RMInstrThumb2.td
4f8708c3e04498e1f49064aafd2e8988bb75d303 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
RMInstrThumb2.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
RMInstrThumb2.td
65d16eabf2925d39c6109c85c663aaac4e549c6c 26-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Split thumb-related stuff into separate classes.
Step 1: ARMInstructionInfo => {ARM,Thumb}InstructionInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74329 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
humbInstrInfo.cpp
humbInstrInfo.h
d49ea77cbc24776142615fecf75f41e191c765bd 26-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Split thumb-related stuff into separate classes.
Step 1: ARMInstructionInfo => {ARM,Thumb}InstructionInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74329 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
humbInstrInfo.cpp
humbInstrInfo.h
7e2af1b050283ccf7b690530ac725ad27aef1219 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Thumb-2 has CLZ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74322 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
24062ac5be1a33d1ef76d399613b7d48a684116e 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Thumb-2 has CLZ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74322 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3536d178c2188c96ebc8b5b720f952b69f8cb26f 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
RMInstrThumb2.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
RMInstrThumb2.td
e883fc4de8b1a7f06208cec052c8dee5e647a299 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
RMInstrThumb2.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
RMInstrThumb2.td
2dbffd44a6d2bdc31f6f24a44e98c3dbaca3bea6 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
RMInstrThumb2.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
RMInstrThumb2.td
3e9a99ed18768f5a65046148d32d5aa2640f3b0b 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Simplify predicate CarryDefIsUsed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74277 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2b51d51bc3fc2b9b093f1c940dc6e5570bf0033a 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Simplify predicate CarryDefIsUsed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74277 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
880595f3cd8cce2fdb532c8b3f8facf5a747fde7 26-Jun-2009 Devang Patel <dpatel@apple.com> Let's ignore MDStrings also!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0f05d22a31bf76a1e066592a567217b73fcc4d7d 26-Jun-2009 Devang Patel <dpatel@apple.com> Let's ignore MDStrings also!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74255 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9d4e200bf7e8e4e51ee56e71d5fec4551d45d605 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a note about commuting conditional move.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74241 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
151b9afdee10995add2f28790194570e7735f03c 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a note about commuting conditional move.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74241 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
1362add0c1239083388eb2b148e7c4fd68b2f781 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> These are done / no longer applicable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74239 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
b604b2c470aed22a5c583c05b783e61883433a84 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> These are done / no longer applicable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74239 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
bdd679a0936a6ccda1620e108dc260556bd2f6a0 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
138f60ebbebc275e8bee2f5d916d9e6148c5bf4f 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> tst is also commutable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74236 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
e864b74e959c3d1135e02bbb0fc13fbea04601c3 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> tst is also commutable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74236 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
9b4d26fe826a4b8624471b98ce09b84fb7b2813f 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
dcc219682d5930b689dc349436f455165cd8fdb0 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
RMInstrThumb2.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
RMInstrThumb2.td
8768bff8f38323e7fca82917cb9f94648423d706 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Add Def/Use of CPSR for Thumb-1 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74219 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c9ee1189c52930812a987932874667f1e04d6715 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Add Def/Use of CPSR for Thumb-1 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74219 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
230576806bf90b61d34bf0ca530fedb36c4a4d6e 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Unbreak mingw build. Patch by Viktor Kutuzov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
9e03cbefc5b3b8772a18d9bd25593ce62137ac85 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Unbreak mingw build. Patch by Viktor Kutuzov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74212 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d4e2f051f0273b359564516d372459ba2602f4da 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
RMInstrInfo.td
RMInstrThumb2.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
RMInstrInfo.td
RMInstrThumb2.td
375a65d58f015db38ce2a8f3a32ec073ad8e43ea 25-Jun-2009 David Goodwin <david_goodwin@apple.com> Test commit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74185 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
9a36bdbaf135322683f947bc8e20ce4400dc8822 25-Jun-2009 David Goodwin <david_goodwin@apple.com> Test commit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74185 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
eab41ba93e711a0a20a069a83f050cab66b1e6e8 25-Jun-2009 Bob Wilson <bob.wilson@apple.com> Revert 74164. We'll want to use this method later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74176 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
e481f127497b20d3abe625ca4c086f85bf8b126f 25-Jun-2009 Bob Wilson <bob.wilson@apple.com> Revert 74164. We'll want to use this method later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74176 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
ab46543c1bcaa1234e186059a23c6beba77323be 25-Jun-2009 Bob Wilson <bob.wilson@apple.com> Remove unused hasV6T2Ops method. We already have a separate feature to
identify Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74164 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
c9028e69f11246a051c3de1457cd89d46e82ca60 25-Jun-2009 Bob Wilson <bob.wilson@apple.com> Remove unused hasV6T2Ops method. We already have a separate feature to
identify Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74164 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
f9208f860861a4bebea88de275cb4678e0bd43ad 25-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Add missing dependencies to the CMake build system.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74161 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
4b73893d82866fc6889e550bedda0e4d76ad930a 25-Jun-2009 Douglas Gregor <dgregor@apple.com> Add missing dependencies to the CMake build system.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74161 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
3d92dfddb11d077a5e1bf3b9bb1b680533a23af5 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
RMInstrFormats.td
RMInstrThumb2.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
RMInstrFormats.td
RMInstrThumb2.td
10e82e3ff5f86e6c5a3a4ffc94b0104a28ea2cbc 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
RMInstrThumb2.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
RMInstrThumb2.td
ae2ed1ffa3ffb7f3dabaaedc2dd76e7da075c1d9 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> Some reorg and additional comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74152 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7dcf4a826ccdf01749b31b55af15ec0ba3b4079a 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> Some reorg and additional comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74152 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
f667ab41ed67fa6ed6e3be92a8720820f134f895 25-Jun-2009 Devang Patel <dpatel@apple.com> No need to code gen MDNodes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74150 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e4c0c0fab8caadd8159f6bdd6fa03e66d4b4af9c 25-Jun-2009 Devang Patel <dpatel@apple.com> No need to code gen MDNodes



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74150 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
41799700ca318d0eea5b2911588b4ef957b8fd51 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
RMInstrThumb.td
RMInstrThumb2.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
RMInstrThumb.td
RMInstrThumb2.td
ba83d7c950a813b2d87b386397e7e086a014acd9 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74138 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
023dd3fb0b2ea3ffd26b672829e4806a9b892b81 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> 80 col violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74138 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e1225cc5cd22b797c702bcdf4663c6a7bad707b9 24-Jun-2009 Chris Lattner <sabre@nondot.org> sink dwarf finalization out of each target into AsmPrinter::doFinalization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1f522feabf25134249bc7894e04f5b89fa071b7f 24-Jun-2009 Chris Lattner <sabre@nondot.org> sink dwarf finalization out of each target into AsmPrinter::doFinalization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74097 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
db191f09eb4c5cc1e8b38a377896750cc6361e83 24-Jun-2009 Chris Lattner <sabre@nondot.org> eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0a7befa8bd56621f51eaf9196417b866962bf7b1 24-Jun-2009 Chris Lattner <sabre@nondot.org> eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74096 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d2e271bb2000bc391c4dd6becb6961f7669ae56a 24-Jun-2009 Nick Lewycky <nicholas@mxc.ca> Unbreak build on Linux by removing Darwinism.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74046 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b825aaa0289206a63f7e6ce7b5ca7c2d6a2c063e 24-Jun-2009 Nick Lewycky <nicholas@mxc.ca> Unbreak build on Linux by removing Darwinism.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74046 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
66e8fae69ce44ccd486f5ba55894365700e5fa0f 24-Jun-2009 Dan Gohman <gohman@apple.com> Revert this accidental commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74042 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
fd6325cbb23935a9c05b96e9bbfa978565029f2a 24-Jun-2009 Dan Gohman <gohman@apple.com> Revert this accidental commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74042 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
984c78acc6fbeccf2ce9f74b66980327e6f50041 24-Jun-2009 Dan Gohman <gohman@apple.com> Move the special cases for constants out of getUnknown and into
createSCEV. Also, recognize UndefValue in createSCEV.

Change getIntegerSCEV's comment to avoid mentioning FP types,
and re-implement it in terms of getConstant instead of getUnknown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6bbcba18db6d1f4bc0f0157df41cc02627bc4aa9 24-Jun-2009 Dan Gohman <gohman@apple.com> Move the special cases for constants out of getUnknown and into
createSCEV. Also, recognize UndefValue in createSCEV.

Change getIntegerSCEV's comment to avoid mentioning FP types,
and re-implement it in terms of getConstant instead of getUnknown.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74041 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ebbc1c43ec79857e75eb3e77cb7aff682ac5f35e 24-Jun-2009 Bob Wilson <bob.wilson@apple.com> Provide InitializeAllTargets and InitializeNativeTarget functions in the
C bindings. Change all the backend "Initialize" functions to have C linkage.
Change the "llvm/Config/Targets.def" header to use C-style comments to avoid
compile warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74026 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
a96751fc8ff1cc9a225ffbba73de53e2b9e1ae35 24-Jun-2009 Bob Wilson <bob.wilson@apple.com> Provide InitializeAllTargets and InitializeNativeTarget functions in the
C bindings. Change all the backend "Initialize" functions to have C linkage.
Change the "llvm/Config/Targets.def" header to use C-style comments to avoid
compile warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74026 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
f09f548b55c4b3108c1932ff1f026bedf245abb1 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
RMInstrThumb2.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
RMInstrThumb2.td
f7f986d3a839acd1b022c84707af85679c231c74 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
RMInstrThumb2.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
RMInstrThumb2.td
b219c69117c7ce88227bbf3e09ade8b39335f77e 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73986 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e870af483799beab9ec95adf89047a37e97b301a 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73986 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6fc534c8801077027c1c8337b9faefb75ca43bfb 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add IsThumb1Only to most 16-bit thumb instructions since we want to isel 32-bit instructions when they are available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73985 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
09c39fcf83952bbe0a56b950f0d90ce4eac773d0 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add IsThumb1Only to most 16-bit thumb instructions since we want to isel 32-bit instructions when they are available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73985 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
2aa7b9f36d68060d41c748e4950b6e76f2a69ea9 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
RMISelDAGToDAG.cpp
RMInstrThumb2.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
RMISelDAGToDAG.cpp
RMInstrThumb2.td
27c3243fd9981a6e67fa6a46dcdb382214633b99 23-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Eliminate object-relinking support from CMake. Fixes PR 4429 and
cleans up the CMake-based build system a bit. Started by a patch from
Xerxes RÃ¥nby.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
7e9e36a23e07dfb0d7ceda3e76450073c0534f35 23-Jun-2009 Douglas Gregor <dgregor@apple.com> Eliminate object-relinking support from CMake. Fixes PR 4429 and
cleans up the CMake-based build system a bit. Started by a patch from
Xerxes RÃ¥nby.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73969 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
3620db86afd453bf60106e0fc31c5c24736383bf 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
RMInstrThumb2.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
RMInstrThumb2.td
3617371c673a860250a1936b9428babad9a68bef 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
RMAddressingModes.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMAddressingModes.h
RMInstrFormats.td
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
a1366cd674889b0aea4c9388ee285d1f3d591f91 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Minor reorg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73948 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e07715cfba5528dfa368b25d484602ca2b0e1892 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Minor reorg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73948 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
42e6ce94dab7c255ba25ccd30cb89cb2e3cc3d3b 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
RMInstrThumb2.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
RMInstrThumb2.td
e60fee02ce7c1ee34faeefde46229b4168c2fd7f 23-Jun-2009 Bob Wilson <bob.wilson@apple.com> Add support for ARM's Advanced SIMD (NEON) instruction set.
This is still a work in progress but most of the NEON instruction set
is supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73919 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrNEON.td
RMRegisterInfo.td
smPrinter/ARMAsmPrinter.cpp
EADME.txt
5bafff36c798608a189c517d37527e4a38863071 23-Jun-2009 Bob Wilson <bob.wilson@apple.com> Add support for ARM's Advanced SIMD (NEON) instruction set.
This is still a work in progress but most of the NEON instruction set
is supported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73919 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrFormats.td
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrNEON.td
RMRegisterInfo.td
smPrinter/ARMAsmPrinter.cpp
EADME.txt
74590a0a7f719a8374872bc555b03a9143f65443 23-Jun-2009 Bob Wilson <bob.wilson@apple.com> Add explicit types for shift count constants. This is in preparation for
another change that makes the types ambiguous (at least as far as tablegen
is concerned).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73909 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
1c76d0ee5cda2119c679bab49520dd9cd435ded5 23-Jun-2009 Bob Wilson <bob.wilson@apple.com> Add explicit types for shift count constants. This is in preparation for
another change that makes the types ambiguous (at least as far as tablegen
is concerned).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73909 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
801d50befbb28a7151ce1d200e67636fe8268ba0 22-Jun-2009 Bob Wilson <bob.wilson@apple.com> Use thumb2 for ARM architectures V6T2 and later. Fix a bug in checking
for "thumb" and add a check for V6T2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73905 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
9170ab6685fcd820c6274e761b8c3a71f25ae074 22-Jun-2009 Bob Wilson <bob.wilson@apple.com> Use thumb2 for ARM architectures V6T2 and later. Fix a bug in checking
for "thumb" and add a check for V6T2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73905 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
243b37c26911d4ea493101d3d9a460db7579bd05 22-Jun-2009 Bob Wilson <bob.wilson@apple.com> For Darwin on ARMv6 and newer, make register r9 available for use as a
caller-saved register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73901 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.cpp
RMRegisterInfo.td
RMSubtarget.cpp
54fc124d72512d65d62565cabcd85c7b07496513 22-Jun-2009 Bob Wilson <bob.wilson@apple.com> For Darwin on ARMv6 and newer, make register r9 available for use as a
caller-saved register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73901 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.cpp
RMRegisterInfo.td
RMSubtarget.cpp
74bba87fe677622edba81ae3231d16071854619e 22-Jun-2009 Evan Cheng <evan.cheng@apple.com> hasFP should return true if frame address is taken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73893 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
8dcbbdd00ebb4beb8eeb822791df326eee5de827 22-Jun-2009 Evan Cheng <evan.cheng@apple.com> hasFP should return true if frame address is taken.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73893 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
3c567d63e688faf9f70111311e1c1acd93465b76 22-Jun-2009 Bob Wilson <bob.wilson@apple.com> Fix llvm-gcc build for armv6t2 and later architectures. The hasV6T2Ops
predicate does not check if Thumb mode is enabled, and when in ARM mode
there are still some checks for constant-pool use that need to run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73887 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e64e3cf9adb18c9c6711e69e975d098a513ee8f8 22-Jun-2009 Bob Wilson <bob.wilson@apple.com> Fix llvm-gcc build for armv6t2 and later architectures. The hasV6T2Ops
predicate does not check if Thumb mode is enabled, and when in ARM mode
there are still some checks for constant-pool use that need to run.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73887 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
0e6763cfe1afd830c1cd2adbaf99557bdabf6c54 20-Jun-2009 Devang Patel <dpatel@apple.com> Remove unused field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73815 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e9fe6c7729c0637acadd7564ae8d14c5c9300f89 20-Jun-2009 Devang Patel <dpatel@apple.com> Remove unused field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73815 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
bd9ea5513cb6be8c2c365605414bdfcafee969be 20-Jun-2009 Evan Cheng <evan.cheng@apple.com> Enable arm pre-allocation load / store multiple optimization pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73791 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
ae69a2a12bd0af3fa81957f7896d1a54ad69dbb2 20-Jun-2009 Evan Cheng <evan.cheng@apple.com> Enable arm pre-allocation load / store multiple optimization pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73791 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
1a45484151060a9c0190e5d1674709eab72cbd14 19-Jun-2009 Devang Patel <dpatel@apple.com> Move up dwarf writer initialization in common AsmPrinter class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73784 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
14a55d952cf238fff42da53a75f39cf06dab184b 19-Jun-2009 Devang Patel <dpatel@apple.com> Move up dwarf writer initialization in common AsmPrinter class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73784 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
58f4ce8c91489e13606982c68ec7e6329d91d039 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73761 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b1019480b6806c38432ad3357ae7d756573c0835 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73761 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
16b15c33f9b0d2ce9b0fd301031efc10fecb47b7 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Should be using Bcc (average) latency to determine if-conversion threshold, not BL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73759 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
7a42b08be8836149ea4e3f95ddcc42e198561df3 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Should be using Bcc (average) latency to determine if-conversion threshold, not BL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73759 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e00db516add6190879718cee2dc7f822cc9bcafb 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Transfer dead markers when a ldrd is changed into a ldm or a pair of ldr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73749 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
974fe5d69187bdf33b0e111ff72e965431df4191 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Transfer dead markers when a ldrd is changed into a ldm or a pair of ldr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73749 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
88e78d20071803092fbe0fa7ef085690784bc8f0 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Latency information for ARM v6. It's rough and not yet hooked up. Right now we are only using branch latency to determine if-conversion limits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73747 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMSchedule.td
RMScheduleV6.td
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
8557c2bcb8002169d890eb8485e9a1d7219e4343 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Latency information for ARM v6. It's rough and not yet hooked up. Right now we are only using branch latency to determine if-conversion limits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73747 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMISelLowering.cpp
RMInstrInfo.td
RMSchedule.td
RMScheduleV6.td
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
2e051ed7b5b9dab4ee28fb67af641e6df9024bc6 19-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Mark a few Thumb instructions commutable; just happened to spot this
while experimenting. I'm reasonably sure this is correct, but please
tell me if these instructions have some strange property which makes this
change unsafe.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73746 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
6b7bb42c365e9b11eda2df67aa5da6aad7632356 19-Jun-2009 Eli Friedman <eli.friedman@gmail.com> Mark a few Thumb instructions commutable; just happened to spot this
while experimenting. I'm reasonably sure this is correct, but please
tell me if these instructions have some strange property which makes this
change unsafe.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73746 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
ca072176f432533f61e4f25165643799f235a362 19-Jun-2009 Chris Lattner <sabre@nondot.org> merge the common darwin settings from the X86/PPC/ARM targets
into DarwinTargetAsmInfo.cpp. The remaining differences should
be evaluated. It seems strange that x86/arm has .zerofill but ppc
doesn't, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73742 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
4e0f25b603c96ce43474441e99252c5cd88c2e2e 19-Jun-2009 Chris Lattner <sabre@nondot.org> merge the common darwin settings from the X86/PPC/ARM targets
into DarwinTargetAsmInfo.cpp. The remaining differences should
be evaluated. It seems strange that x86/arm has .zerofill but ppc
doesn't, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73742 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
690b02cc2be75f878ab189295690484f25e98b26 19-Jun-2009 Chris Lattner <sabre@nondot.org> move mangler quote handling from asm printers to TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73738 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
a93ca92379129e87e0130609ac78422fcf6dd21e 19-Jun-2009 Chris Lattner <sabre@nondot.org> move mangler quote handling from asm printers to TargetAsmInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73738 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
ecbf73b8ff55100f416aabbb19000b7e5f647b5a 19-Jun-2009 Chris Lattner <sabre@nondot.org> simplify macro debug info directive handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73736 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
b839c3f577e03467bce8904eb2a02b124ec19ec8 19-Jun-2009 Chris Lattner <sabre@nondot.org> simplify macro debug info directive handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73736 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
9ecae170da642c925fd00f795c9808f2b59640fd 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Remove UseThumbBacktraces. Just check if subtarget is darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73734 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMRegisterInfo.cpp
RMRegisterInfo.td
RMSubtarget.cpp
RMSubtarget.h
cd828618b8c6ec58df94aec0f5546f009f2fd0d5 19-Jun-2009 Evan Cheng <evan.cheng@apple.com> Remove UseThumbBacktraces. Just check if subtarget is darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73734 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMRegisterInfo.cpp
RMRegisterInfo.td
RMSubtarget.cpp
RMSubtarget.h
ccca6f7493b4a8db815cc2746ea50152ddc97c25 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> On Darwin, ams printer should output a second label before a jump table so the linker knows it's a new atom. But this is only needed if the jump table is put in a separate section from the function body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73720 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
b13bafe5c12dd908b55c559c93adaeb1627ed096 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> On Darwin, ams printer should output a second label before a jump table so the linker knows it's a new atom. But this is only needed if the jump table is put in a separate section from the function body.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73720 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
a3cc1a05c52f029d479ae8379725d199ac2162d5 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> - Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
- More fixes to get ARM load / store double word working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73671 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
f9f1da17f8bd6ffb2df62ce3cb933f0ee63f8da4 18-Jun-2009 Evan Cheng <evan.cheng@apple.com> - Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
- More fixes to get ARM load / store double word working.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73671 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
d7afe4f50ebbf088a87d620301106f599317b511 18-Jun-2009 Bob Wilson <bob.wilson@apple.com> ARM unified syntax is not specific to ELF; use it for Darwin, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73665 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ff6de365583858f228d07165f5fa7675880e40f4 18-Jun-2009 Bob Wilson <bob.wilson@apple.com> ARM unified syntax is not specific to ELF; use it for Darwin, too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73665 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8b20dabd9924809997e2e10d9acfbffcf8c9c62c 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
RMInstrThumb2.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
RMInstrThumb2.td
9a2d230f869e8365581358a03a83f028da6f5ef1 18-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Thumb2 instructions are enabled only in unified assembler mode.
Emit switch directive for it. I have no idea whether this is
requirement for Darwin or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73660 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d61eca533081580d56fabee38f86507d8019ca75 18-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Thumb2 instructions are enabled only in unified assembler mode.
Emit switch directive for it. I have no idea whether this is
requirement for Darwin or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73660 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ac869fc112b661f59a05ad427f7c4b81e10c7aed 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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
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
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb2.td
smPrinter/ARMAsmPrinter.cpp
1dc5ff4afef80793dca08f72ae4a54703e9d21b5 16-Jun-2009 Douglas Gregor <doug.gregor@gmail.com> Introduce new headers whose inclusion forces linking and
initialization of all targets (InitializeAllTargets.h) or assembler
printers (InitializeAllAsmPrinters.h). This is a step toward the
elimination of relinked object files, so that we can build normal
archives.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73543 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
1555a23335400143f2b54a66aedc4b5cbbb79f8d 16-Jun-2009 Douglas Gregor <dgregor@apple.com> Introduce new headers whose inclusion forces linking and
initialization of all targets (InitializeAllTargets.h) or assembler
printers (InitializeAllAsmPrinters.h). This is a step toward the
elimination of relinked object files, so that we can build normal
archives.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73543 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
smPrinter/ARMAsmPrinter.cpp
1395c2ca582e562e06227a76f07f0c47cf2447ea 16-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Address review comments: add 3 ARM calling conventions.
Dispatch C calling conv. to one of these conventions based on
target triple and subtarget features.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73530 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
385f5a99ecc7fee48a7539bc63d3e1d3b5089c0d 16-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Address review comments: add 3 ARM calling conventions.
Dispatch C calling conv. to one of these conventions based on
target triple and subtarget features.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73530 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
c96184ada49f4f8329506634d267a5ddd70a5d41 16-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> GNU as refuses to assemble "pop {}" instruction. Do not emit such
(this is the case when we have thumb vararg function with single
callee-saved register, which is handled separately).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73529 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
29327953097693a0376eaca021046d99c01f9f89 16-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> GNU as refuses to assemble "pop {}" instruction. Do not emit such
(this is the case when we have thumb vararg function with single
callee-saved register, which is handled separately).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73529 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
f94f1a9d7526306d3e8dc933c3e367701dd05776 16-Jun-2009 Evan Cheng <evan.cheng@apple.com> On Darwin, frame pointer r7 is never available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73434 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
88cc7c419401b32b15e7af4038c67e2a81aac55a 16-Jun-2009 Evan Cheng <evan.cheng@apple.com> On Darwin, frame pointer r7 is never available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73434 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
cba026939bcd05dd9ca7b0c9bf44e3ab9c1b09f7 15-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Rename methods for the sake of consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSubtarget.h
bb6296234238aab74a531b382d92342269bea902 15-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Rename methods for the sake of consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73428 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMSubtarget.h
7a8393000a5c54eb17f74eeeb0bf43c9ee0a98a0 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73422 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
675860758ec8926f9803840615366931aca7f8d8 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73422 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
f746f6a9438bcbf50dd887139eef949f729a6d6e 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Do not form ldrd / strd if the two dests / srcs are the same. Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73413 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
d780f357941fc587d36d141bab3d78d6ff972dd4 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Do not form ldrd / strd if the two dests / srcs are the same. Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73413 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
2108cdf3c64fa7c1db1ca06f96513e6010f66f7d 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Silence a warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73406 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
7f044287388843d1c094a3c0b8beef47ea403ef6 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Silence a warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73406 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
41169551d59e9aee3d9dcd043013d65ee6e33759 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Part 1.
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.

Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0

If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.

- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.

This is work in progress, not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73381 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
358dec51804ee52e47ea3a47c9248086e458ad7c 15-Jun-2009 Evan Cheng <evan.cheng@apple.com> Part 1.
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.

Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0

If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.

- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.

This is work in progress, not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73381 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
54353c9810ad1b79cf9dc865277f16a750abc079 13-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a ARM specific pre-allocation pass that re-schedule loads / stores from
consecutive addresses togther. This makes it easier for the post-allocation pass
to form ldm / stm.

This is step 1. We are still missing a lot of ldm / stm opportunities because
of register allocation are not done in the desired order. More enhancements
coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73291 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
RMTargetMachine.h
e7d6df73530a98a5cc5f69ddfd17073b464caa57 13-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a ARM specific pre-allocation pass that re-schedule loads / stores from
consecutive addresses togther. This makes it easier for the post-allocation pass
to form ldm / stm.

This is step 1. We are still missing a lot of ldm / stm opportunities because
of register allocation are not done in the desired order. More enhancements
coming.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73291 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMLoadStoreOptimizer.cpp
RMTargetMachine.cpp
RMTargetMachine.h
d97d714f5b5046ea448e7688705db449c8b54536 12-Jun-2009 Evan Cheng <evan.cheng@apple.com> Mark some pattern-less instructions as neverHasSideEffects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73252 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
cd799b99cb4a4d7e8f7de59fd9c936812193c9b7 12-Jun-2009 Evan Cheng <evan.cheng@apple.com> Mark some pattern-less instructions as neverHasSideEffects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73252 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
c918cc8d280ed65c802265ab2f464649f954d1a5 09-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73098 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
2e7ccfce98b925d07788fdd08cccc9ddb3d7004b 09-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73098 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
1bcd02013b55f0f3756a9fc3bf0b5cc61c19b83b 09-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Revert hunk commited by accident

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73097 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
dada95b5b3acbce56440124c242673f30f596f92 09-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Revert hunk commited by accident

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73097 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1171332df0084b39e1b0a84bca73cdc3fcc2c9dc 09-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> The attached patches implement most of the ARM AAPCS-VFP hard float
ABI. The missing piece is support for putting "homogeneous aggregates"
into registers.

Patch by Sandeep Patel!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73095 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMRegisterInfo.td
RMSubtarget.cpp
0eebf653a7b2978e7761f8d068b6fbec22aea0f6 09-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> The attached patches implement most of the ARM AAPCS-VFP hard float
ABI. The missing piece is support for putting "homogeneous aggregates"
into registers.

Patch by Sandeep Patel!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73095 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMRegisterInfo.td
RMSubtarget.cpp
48000e9d644024893c2054ea70429ddd82ea6b79 08-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Separate V6 from V6T2 since the latter has some extra nice instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73085 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
fbbf1eeccf0cf469f0d8962b1341c8ba22a9dadb 08-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Separate V6 from V6T2 since the latter has some extra nice instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73085 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.h
9f2fe507257080a9cb8c63a5daba93ff850e4b1d 08-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Add helper for checking of Thumb1 mode

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73080 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
a7b0ded2a26003d91db6c58d6ad945a39f70585c 08-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Add helper for checking of Thumb1 mode

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73080 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.h
54eb122908fc4476bdf45267d552dac1685a43ee 06-Jun-2009 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72969 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
2392efef1bd2599231ab659dd6ba4233bf5df94c 06-Jun-2009 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72969 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
72d2b91bbd0544502b34eb6c2ce9c2ce354932db 05-Jun-2009 Evan Cheng <evan.cheng@apple.com> Changing allocation ordering from r3 ... r0 back to r0 ... r3. The order change no longer make sense after the coalescing changes we have made since then.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72955 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMRegisterInfo.td
925492279ae7d93180ebdd689c87cd58522e68f5 05-Jun-2009 Evan Cheng <evan.cheng@apple.com> Changing allocation ordering from r3 ... r0 back to r0 ... r3. The order change no longer make sense after the coalescing changes we have made since then.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72955 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
RMRegisterInfo.td
256a2cb0cac9e5b1fdb3152243f62e4217beda06 05-Jun-2009 Evan Cheng <evan.cheng@apple.com> When merging multiple load / store instructions. Use the DebugLoc of the first one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72952 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
87d59e49e9008767896c4c8c80efdc172f1cbd18 05-Jun-2009 Evan Cheng <evan.cheng@apple.com> When merging multiple load / store instructions. Use the DebugLoc of the first one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72952 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
5e7d703117e916329e79f371c74460e7b12c67d7 05-Jun-2009 Evan Cheng <evan.cheng@apple.com> Code clean up: return vector by reference rather than by value. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72950 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
5ba71887f918a9da82140210494608df020dcbd5 05-Jun-2009 Evan Cheng <evan.cheng@apple.com> Code clean up: return vector by reference rather than by value. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72950 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
27c2daf02027f431d63995f947294e71b9ba384b 05-Jun-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72948 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
c965ee223c6077250525048106726e12b59072ac 05-Jun-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72948 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
5cfbcfafcdc536efed5108f56fd5c4ade008b465 04-Jun-2009 Evan Cheng <evan.cheng@apple.com> Re-apply 72756 with fixes. One of those was introduced by we changed MachineInstrBuilder::addReg() interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72826 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
1488326156741063fa7a23e1638c13e81d167e22 04-Jun-2009 Evan Cheng <evan.cheng@apple.com> Re-apply 72756 with fixes. One of those was introduced by we changed MachineInstrBuilder::addReg() interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72826 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
30551696e8b15251d9b159ffab330a5e14a099b8 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> Temporarily revert 72756 for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72757 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
70fd60bd57250799672378fa2f7c5e804cb3d98d 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> Temporarily revert 72756 for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72757 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
68772026f92143a74a2c9a1ea8dbdf5e27facb45 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fold preceding / trailing base inc / dec into the single load / store as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72756 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
9d5fb981b0ebc00e068b9bcb4df7388a8ea94b71 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fold preceding / trailing base inc / dec into the single load / store as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72756 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
e7540d6486731a8c0336ff794f5bbce21e386a64 01-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Implement review feedback. Make thumb2 'normal' subtarget feature

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72698 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
70459bef9ccd73b3a2a44fdd62f2509861112745 01-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Implement review feedback. Make thumb2 'normal' subtarget feature

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72698 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
8e2537be2325a9a04eb61220329581f0f6805e79 01-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix new CodeEmitter stuff to follow LLVM codying style. Patch by Aaron Gray

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72697 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
434dd4fd94f5f248492c675e4285e7d67342d4c4 01-Jun-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix new CodeEmitter stuff to follow LLVM codying style. Patch by Aaron Gray

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72697 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
845290803be4879599bb9a9ec8617d7ad17be326 01-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not emit "generic" CPU string. This fixes PR4291.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72696 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d260c248abd57763aaeeadcab4155655a25d9e97 01-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Do not emit "generic" CPU string. This fixes PR4291.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72696 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1ea31ff434f7966f3d8b2c158b4f20950e94e80d 30-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> First patch in the direction of splitting MachineCodeEmitter in two subclasses:
JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
a3f99f90338d89354384ca25f53ca4450a1a9d18 30-May-2009 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> First patch in the direction of splitting MachineCodeEmitter in two subclasses:
JITCodeEmitter and ObjectCodeEmitter. No functional changes yet. Patch by Aaron Gray



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72631 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
c19467424889a76b42eb17134180e42ff528c55b 30-May-2009 Bill Wendling <isanbard@gmail.com> Untabification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72604 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
51b16f473759c1546acbf308a5d3f3e7bf3ea23c 30-May-2009 Bill Wendling <isanbard@gmail.com> Untabification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72604 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
f2e14756aa488fb1b09eb78ffe0055db6581dd5f 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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
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
RM.td
RMInstrInfo.td
RMInstrThumb2.td
RMSubtarget.cpp
RMSubtarget.h
1c718b89ab6c367c2ad96c750af197ef769edcff 25-May-2009 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72395 91177308-0d34-0410-b5e6-96231b3b80d8
RMBuildAttrs.h
0c85aabfdcfa966c0c348242bad9a7c5fa2f8a14 25-May-2009 Chris Lattner <sabre@nondot.org> fix typo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72395 91177308-0d34-0410-b5e6-96231b3b80d8
RMBuildAttrs.h
1bf0f08cf82ea6414cec0a8d043765cb4be3b122 23-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Add ARMv7 architecture, Cortex processors and different FPU modes handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72337 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
6d7d2aa38a247426e2ccf53e3c6ad0315c9a4d8c 23-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Add ARMv7 architecture, Cortex processors and different FPU modes handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72337 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMSubtarget.cpp
RMSubtarget.h
a229f0b618bc12edf071c9cd647792b92921b0ea 23-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Emit ARM Build Attributes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72336 91177308-0d34-0410-b5e6-96231b3b80d8
RMBuildAttrs.h
smPrinter/ARMAsmPrinter.cpp
88ce667003a33e008d9ecc6811584681787e8150 23-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Emit ARM Build Attributes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72336 91177308-0d34-0410-b5e6-96231b3b80d8
RMBuildAttrs.h
smPrinter/ARMAsmPrinter.cpp
7357d8f48490c42cf6237c3a8f982a36258248db 23-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Propagate CPU string out of SubtargetFeatures

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72335 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
41a024385f1220eadc48b48cb4c044a5fbc1b361 23-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Propagate CPU string out of SubtargetFeatures

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72335 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
7518879697bee64c8ce35c3f41e781f5858285be 22-May-2009 Bob Wilson <bob.wilson@apple.com> Only 64-bit targets support TImode libcalls. Disable the TImode shift libcalls
for ARM. This fixes rdar://6908807.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72269 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2f95461ee2edf896ef4a45dff40b9f20bcb31de3 22-May-2009 Bob Wilson <bob.wilson@apple.com> Only 64-bit targets support TImode libcalls. Disable the TImode shift libcalls
for ARM. This fixes rdar://6908807.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72269 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
896bfc33b96d8c39731c49e60f1311588866926f 20-May-2009 Bob Wilson <bob.wilson@apple.com> Minor formatting fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72172 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
261f2a2337990bc7cc3d9e20d3338de54b26c74c 20-May-2009 Bob Wilson <bob.wilson@apple.com> Minor formatting fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72172 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
bc2f9e7df85c7799c9547f5c5b7a8e9ccf4b236f 19-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4227: Handle large immediate values in inline assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72138 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
6aa219a18c59a9bc0b1eeb6eece09cfabaaefabe 19-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4227: Handle large immediate values in inline assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72138 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3b2f1927e7e8d03cbc5d0f2b1115815d94218838 19-May-2009 Bob Wilson <bob.wilson@apple.com> Follow up on new support for memory operands in ARM inline assembly.
This fixes pr4233.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72115 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
86c212e8945410c34455619a58b15a9e02ec8e0d 19-May-2009 Bob Wilson <bob.wilson@apple.com> Follow up on new support for memory operands in ARM inline assembly.
This fixes pr4233.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72115 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
fff795c3acbb0b71459ad9aa98f69681f60cda4e 19-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4058 and pr4059. Do not split i64 or double arguments between r3 and
the stack. Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72106 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
04746eae49f1cc28e787b67256a37bf91481bb90 19-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4058 and pr4059. Do not split i64 or double arguments between r3 and
the stack. Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72106 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
6c982bbaee6f1e404b918283b57baa256f38686a 19-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4091: Add support for "m" constraint in ARM inline assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72105 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
smPrinter/ARMAsmPrinter.cpp
224c244f56025c10e70e4204daceadfb3cdd2c06 19-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4091: Add support for "m" constraint in ARM inline assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72105 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
smPrinter/ARMAsmPrinter.cpp
6c05eb4c467ec827ca4604fbbf7442e1769664f2 18-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4202: Disable CodePlacementOpt for ARM. The ARMConstantIslandPass has
to run last because it needs to know the exact size and position of every
basic block. Currently CodePlacementOpt is set up to run last. It might be
worthwhile to investigate reordering these passes, but for now, let's just
make it work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72037 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e6abdffe06d293b68c498251b5dc9f5dba78dece 18-May-2009 Bob Wilson <bob.wilson@apple.com> Fix pr4202: Disable CodePlacementOpt for ARM. The ARMConstantIslandPass has
to run last because it needs to know the exact size and position of every
basic block. Currently CodePlacementOpt is set up to run last. It might be
worthwhile to investigate reordering these passes, but for now, let's just
make it work.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72037 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4a9025e422ed25ab99710c550b00e7f141b9febf 14-May-2009 Jim Grosbach <grosbach@apple.com> Update the names of the exception handling sjlj instrinsics to
llvm.eh.sjlj.* for better clarity as to their purpose and scope. Add
a description of llvm.eh.sjlj.setjmp to ExceptionHandling.html.
(llvm.eh.sjlj.longjmp documentation coming when that implementation is
added).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71758 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.td
f95701286664df01a5683a71c9a02c056fed0aa7 14-May-2009 Jim Grosbach <grosbach@apple.com> Update the names of the exception handling sjlj instrinsics to
llvm.eh.sjlj.* for better clarity as to their purpose and scope. Add
a description of llvm.eh.sjlj.setjmp to ExceptionHandling.html.
(llvm.eh.sjlj.longjmp documentation coming when that implementation is
added).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71758 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.td
d4895b6f4393d30b3e1decd4a2ea87753e0a5030 14-May-2009 Jim Grosbach <grosbach@apple.com> Spelling correction s/builting/builtin/ and remove trailing whitespace in a few places

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71735 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
6aa7197fb5aa478a5c813d41a11689bb6d8f7abc 14-May-2009 Jim Grosbach <grosbach@apple.com> Spelling correction s/builting/builtin/ and remove trailing whitespace in a few places

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71735 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
79566823f83e7dc1719c5212404acf8995c1c4a0 13-May-2009 Evan Cheng <evan.cheng@apple.com> Run code placement optimization for targets that want it (arm and x86 for now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71726 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6ebf7bc7405ee79d27d50b70f0c1a474cbea820d 13-May-2009 Evan Cheng <evan.cheng@apple.com> Run code placement optimization for targets that want it (arm and x86 for now).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71726 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2b739762c5444433753e4d3a141ff20f40636611 13-May-2009 Bill Wendling <isanbard@gmail.com> Change MachineInstrBuilder::addReg() to take a flag instead of a list of
booleans. This gives a better indication of what the "addReg()" is
doing. Remembering what all of those booleans mean isn't easy, especially if you
aren't spending all of your time in that code.

I took Jakob's suggestion and made it illegal to pass in "true" for the
flag. This should hopefully prevent any unintended misuse of this (by reverting
to the old way of using addReg()).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71722 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
587daedce2d6c2b2d380b6a5843a6f8b6cfc79e4 13-May-2009 Bill Wendling <isanbard@gmail.com> Change MachineInstrBuilder::addReg() to take a flag instead of a list of
booleans. This gives a better indication of what the "addReg()" is
doing. Remembering what all of those booleans mean isn't easy, especially if you
aren't spending all of your time in that code.

I took Jakob's suggestion and made it illegal to pass in "true" for the
flag. This should hopefully prevent any unintended misuse of this (by reverting
to the old way of using addReg()).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71722 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
c10915b85165887e1886179338c7d14925f95c52 13-May-2009 Jim Grosbach <grosbach@apple.com> Add support for GCC compatible builtin setjmp and longjmp intrinsics. This is
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but
rather used by the front-end as target hooks for exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71610 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.td
0e0da734bbdfa1d3f55cd04db31d83b97e4556f7 13-May-2009 Jim Grosbach <grosbach@apple.com> Add support for GCC compatible builtin setjmp and longjmp intrinsics. This is
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but
rather used by the front-end as target hooks for exception handling.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71610 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.td
bd8b68ef67b4335d5fbab67af45b7d2ad9be9a3b 13-May-2009 Jim Grosbach <grosbach@apple.com> correct register class for tADDspi to GPR since the register will always be SP

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71602 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c93f96187459b1f09b328e3cf6eade173909ce53 13-May-2009 Jim Grosbach <grosbach@apple.com> correct register class for tADDspi to GPR since the register will always be SP

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71602 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
d6985d51e8edb7b609071e3fc1bfdb6ec302be67 12-May-2009 Bob Wilson <bob.wilson@apple.com> Fix up a few minor typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71563 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
39bf051ec2865cd715c41473d2a9fc34ff252534 12-May-2009 Bob Wilson <bob.wilson@apple.com> Fix up a few minor typos in comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71563 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ec92b49890412c2de9c0eca5a3d1492b596d8922 12-May-2009 Bob Wilson <bob.wilson@apple.com> Fix 80-col violations and remove trailing whitespace. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71562 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
8494526a2396fd9cde027ab6ae11dd28b54ac90e 12-May-2009 Bob Wilson <bob.wilson@apple.com> Fix 80-col violations and remove trailing whitespace. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71562 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ec4f97dd91023f63e05e94a333cdd2d4c57efedf 09-May-2009 Duncan Sands <baldrick@free.fr> Rename PaddedSize to AllocSize, in the hope that this
will make it more obvious what it represents, and stop
it being confused with the StoreSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
smPrinter/ARMAsmPrinter.cpp
777d2306b36816a53bc1ae1244c0dc7d998ae691 09-May-2009 Duncan Sands <baldrick@free.fr> Rename PaddedSize to AllocSize, in the hope that this
will make it more obvious what it represents, and stop
it being confused with the StoreSize.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71349 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
smPrinter/ARMAsmPrinter.cpp
98a366d547772010e94609e4584489b3e5ce0043 30-Apr-2009 Bill Wendling <isanbard@gmail.com> Instead of passing in an unsigned value for the optimization level, use an enum,
which better identifies what the optimization is doing. And is more flexible for
future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
5ed22ac54c2530a1d0d140d259f881f3b2040e56 30-Apr-2009 Bill Wendling <isanbard@gmail.com> Instead of passing in an unsigned value for the optimization level, use an enum,
which better identifies what the optimization is doing. And is more flexible for
future uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70440 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
be8cc2a3dedeb7685f07e68cdc4b9502eb97eb2b 29-Apr-2009 Bill Wendling <isanbard@gmail.com> Second attempt:

Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
58ed5d27258df9688ac2694cf5e3d31f7dbdeef6 29-Apr-2009 Bill Wendling <isanbard@gmail.com> Second attempt:

Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70343 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
c69d56f1154342a57c9bdd4c17a10333e3520127 28-Apr-2009 Bill Wendling <isanbard@gmail.com> r70270 isn't ready yet. Back this out. Sorry for the noise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
f4d0c73cc3d9ae305b162f336dc14fbe7972e2e8 28-Apr-2009 Bill Wendling <isanbard@gmail.com> r70270 isn't ready yet. Back this out. Sorry for the noise.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70275 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
2e9d5f912a9841d3685ba0241abe1131943fed29 28-Apr-2009 Bill Wendling <isanbard@gmail.com> Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
11a01bfa097cfe006de022154709b545ee125523 28-Apr-2009 Bill Wendling <isanbard@gmail.com> Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.

Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70270 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
8091524d98ca648c195224fab599f1c6afdd880a 25-Apr-2009 Bob Wilson <bob.wilson@apple.com> Change LowerCallResult method so that CCValAssign::BCvt can be used with
f64 types. This is not used for anything yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70006 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b5eefaae2badd23836f67b2e3b33ac6c892e57ff 25-Apr-2009 Bob Wilson <bob.wilson@apple.com> Change LowerCallResult method so that CCValAssign::BCvt can be used with
f64 types. This is not used for anything yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70006 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d55bd51f311fb00c639da6161584b06cf7cb5e27 24-Apr-2009 Bob Wilson <bob.wilson@apple.com> Adjust a comment to reflect what the code does. Splitting a 64-bit argument
between registers and the stack may be required with the APCS ABI, but it
isn't tied to using a particular version of the ARM architecture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69978 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
35f652a919369ea801dd10f8fb6c1c99ba7620eb 24-Apr-2009 Bob Wilson <bob.wilson@apple.com> Adjust a comment to reflect what the code does. Splitting a 64-bit argument
between registers and the stack may be required with the APCS ABI, but it
isn't tied to using a particular version of the ARM architecture.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69978 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4d59e1d666d3187aff11c9b11fe8a9eccade3f26 24-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix up some problems with getCopyToReg and getCopyFromReg nodes being
chained and "flagged" together. I also made a few changes to handle the
chain and flag values more consistently. I found these problems by
inspection so I'm not aware of anything that breaks because of them
(thus no testcase).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69977 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
99194c9d87ec8d0cdba4b668969f9eda092accc8 24-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix up some problems with getCopyToReg and getCopyFromReg nodes being
chained and "flagged" together. I also made a few changes to handle the
chain and flag values more consistently. I found these problems by
inspection so I'm not aware of anything that breaks because of them
(thus no testcase).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69977 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1c2c462d0f993e3575888d5825b9c25348e6e4e8 24-Apr-2009 Bob Wilson <bob.wilson@apple.com> Remove unnecessary references to f32 types. After specifying that f32
should be bit-converted to i32, it is sufficient to list only i32 in
subsequent definitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69973 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
db994cc3a132e6c9d544dc0c163d0749b169023e 24-Apr-2009 Bob Wilson <bob.wilson@apple.com> Remove unnecessary references to f32 types. After specifying that f32
should be bit-converted to i32, it is sufficient to list only i32 in
subsequent definitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69973 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
998e125a87d49f28c714d8223a37746850401057 20-Apr-2009 Bob Wilson <bob.wilson@apple.com> Move duplicated AddLiveIn function from X86 and ARM backends to be a method
in the MachineFunction class, renaming it to addLiveIn for consistency with
the same method in MachineBasicBlock. Thanks for Anton for suggesting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b6737aa5c91184d77e9569d5fe829674a358b90d 20-Apr-2009 Bob Wilson <bob.wilson@apple.com> Move duplicated AddLiveIn function from X86 and ARM backends to be a method
in the MachineFunction class, renaming it to addLiveIn for consistency with
the same method in MachineBasicBlock. Thanks for Anton for suggesting this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69615 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e3fa9ef936068ab395e9c68062cfcae2d0321208 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Move the AddLiveIn function definition closer to its uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69382 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6c8ca7ebbd7aa97ce4ef26ec2fe9b9b30bfcb47d 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Move the AddLiveIn function definition closer to its uses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69382 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e65586b37b141cd3ef1515b840d6397ecda12396 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Rearrange code to reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9bd06cf878a03ac3b7d4aa9324b3c9c800f2896c 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Rearrange code to reduce indentation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dee46d7f6d61ca628725b54c2d24154ebe70ed96 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Clean up formatting, remove trailing whitespace, fix comment typos and
punctuation. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69378 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
7cd865e7fa66c2d2ea8ad92f0cc5839bd204d50b 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Clean up formatting, remove trailing whitespace, fix comment typos and
punctuation. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69378 91177308-0d34-0410-b5e6-96231b3b80d8
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
1f595bb42950088ccb8246e6b065a96027b46ec6 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Use CallConvLower.h and TableGen descriptions of the calling conventions
for ARM. Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69371 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
MakeLists.txt
akefile
fd4511769b8f5170ef89d39b7a3c3f6a1d5d305b 17-Apr-2009 Bob Wilson <bob.wilson@apple.com> Use CallConvLower.h and TableGen descriptions of the calling conventions
for ARM. Patch by Sandeep Patel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69371 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCallingConv.td
RMISelLowering.cpp
RMISelLowering.h
MakeLists.txt
akefile
2c7dab18648f3d0d6e9373de31065ec3c896c224 08-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix PR3795: Apply Dan's suggested fix for
ARMTargetLowering::isLegalAddressingMode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68619 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e69efe6fd7ef36ef7b0b72bc311c17367cfbdf23 08-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix PR3795: Apply Dan's suggested fix for
ARMTargetLowering::isLegalAddressingMode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68619 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
30eae3c02244e18747f9f0dca6946d86d0ccb7f5 07-Apr-2009 Jim Grosbach <grosbach@apple.com> PR2985 / <rdar://problem/6584986>

When compiling in Thumb mode, only the low (R0-R7) registers are available
for most instructions. Breaking the low registers into a new register class
handles this. Uses of R12, SP, etc, are handled explicitly where needed
with copies inserted to move results into low registers where the rest of
the code generator can deal with them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68545 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMInstrThumb.td
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
0e4e974119676cf4c46b4fd0b6a29e85c3be562e 07-Apr-2009 Jim Grosbach <grosbach@apple.com> PR2985 / <rdar://problem/6584986>

When compiling in Thumb mode, only the low (R0-R7) registers are available
for most instructions. Breaking the low registers into a new register class
handles this. Uses of R12, SP, etc, are handled explicitly where needed
with copies inserted to move results into low registers where the rest of
the code generator can deal with them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68545 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMInstrThumb.td
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
8f3434647d3d39b49475239e3be1b8afb06415cf 06-Apr-2009 Bob Wilson <bob.wilson@apple.com> Handle 'a' modifier in ARM inline assembly.
Patch by Richard Pennington.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
5260c4c74326dd6228eaff73d1e634e228ee9f4f 06-Apr-2009 Bob Wilson <bob.wilson@apple.com> Handle 'a' modifier in ARM inline assembly.
Patch by Richard Pennington.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68464 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
eec4b2d73061ae87d0a4334a22d9f2a588736071 03-Apr-2009 Bob Wilson <bob.wilson@apple.com> Wrap some lines to fix indentation problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68405 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
c3020a8123aeff760cd7bb0bd6167879dd7be404 03-Apr-2009 Bob Wilson <bob.wilson@apple.com> Wrap some lines to fix indentation problems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68405 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
1b46a680151ef85ba13bd9df01f995be8c46964e 03-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68404 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
ab588a132ffea11835b45631aec173569c97f6da 03-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68404 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
bf6396bed0597238110aad5b680fd18a4f8769fa 01-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix PR3862: Recognize some ARM-specific constraints for immediates in inline
assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68218 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
221511dcd269d1f619d0004aa7163e9136cfa086 01-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix PR3862: Recognize some ARM-specific constraints for immediates in inline
assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68218 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d83712ad678ae453f3342762c78142f851d3a2d3 30-Mar-2009 Bob Wilson <bob.wilson@apple.com> Fix comment to match function name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68050 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
8fc67d44d18770ca1ff018e3c6ba36c12fa0685d 30-Mar-2009 Bob Wilson <bob.wilson@apple.com> Fix comment to match function name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68050 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
0ede14f5c0d9ff8bd30b467367eabad881fa6898 28-Mar-2009 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67874 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
7ea5276d451c424d65d4a4d1fe296bba1eb25c73 28-Mar-2009 Jim Grosbach <grosbach@apple.com> remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67874 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
9d7b5309c267048114f1438ec0366923c99ca34d 26-Mar-2009 Evan Cheng <evan.cheng@apple.com> tADDhirr is a thumb instruction. Do not allow this code to be reached in non-thumb mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67765 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d9f92ba189b88aac3d6c837ac80de08ce12010f6 26-Mar-2009 Evan Cheng <evan.cheng@apple.com> tADDhirr is a thumb instruction. Do not allow this code to be reached in non-thumb mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67765 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
42bf74be1402df7409efbea089310d4c276fde37 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> CodeGen still defaults to non-verbose asm, but llc now overrides it and default to verbose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67668 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
42ceb47150b2d423f9668c7b128b90927ac22cb0 25-Mar-2009 Evan Cheng <evan.cheng@apple.com> CodeGen still defaults to non-verbose asm, but llc now overrides it and default to verbose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67668 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
f1c0ae9de5365a578fbdfebe4625fb281b0be592 24-Mar-2009 Evan Cheng <evan.cheng@apple.com> Do not emit comments unless -asm-verbose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67580 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
11db8142e9de9bec53cf8dda1a2ac5eb85796805 24-Mar-2009 Evan Cheng <evan.cheng@apple.com> Do not emit comments unless -asm-verbose.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67580 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
2a14c521cab397531862415378b67fb3ac00d053 21-Mar-2009 Bob Wilson <bob.wilson@apple.com> Fix a few more indentation problems and an 80-column violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67416 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
45f01d9b95edc80d99c4434af28ab2e447bd75f8 21-Mar-2009 Bob Wilson <bob.wilson@apple.com> Fix a few more indentation problems and an 80-column violation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67416 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2dc4f54324a65665aed78840bc9d6d5ea5d6e7d1 20-Mar-2009 Bob Wilson <bob.wilson@apple.com> No functional changes. Fix indentation and whitespace only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67412 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0eb45b4752dd98edf1188ef0fe08c647e85d685a 20-Mar-2009 Bob Wilson <bob.wilson@apple.com> No functional changes. Fix indentation and whitespace only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67412 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1606e8e4cd937e6de6681f686c266cf61722d972 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues.

1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants.
2. MachineConstantPool alignment field is also a log2 value.
3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values.
4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries.
5. Asm printer uses expensive data structure multimap to track constant pool entries by sections.
6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic.


Solutions:
1. ConstantPoolSDNode alignment field is changed to keep non-log2 value.
2. MachineConstantPool alignment field is also changed to keep non-log2 value.
3. Functions that create ConstantPool nodes are passing in non-log2 alignments.
4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT.
5. Asm printer uses cheaper data structure to group constant pool entries.
6. Asm printer compute entry offsets after grouping is done.
7. Change JIT code to compute entry offsets on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66875 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
68c1868c4bdc04cd319ea92662aa5aaccf6ac378 13-Mar-2009 Evan Cheng <evan.cheng@apple.com> Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues.

1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants.
2. MachineConstantPool alignment field is also a log2 value.
3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values.
4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries.
5. Asm printer uses expensive data structure multimap to track constant pool entries by sections.
6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic.


Solutions:
1. ConstantPoolSDNode alignment field is changed to keep non-log2 value.
2. MachineConstantPool alignment field is also changed to keep non-log2 value.
3. Functions that create ConstantPool nodes are passing in non-log2 alignments.
4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT.
5. Asm printer uses cheaper data structure to group constant pool entries.
6. Asm printer compute entry offsets after grouping is done.
7. Change JIT code to compute entry offsets on the fly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66875 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
d1980a5acd8509ea34ee2dec5e13de5dbe16af2d 12-Mar-2009 Chris Lattner <sabre@nondot.org> Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))"
related transformations out of target-specific dag combine into the
ARM backend. These were added by Evan in r37685 with no testcases
and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).

Add some simple X86-specific (for now) DAG combines that turn things
like cond ? 8 : 0 -> (zext(cond) << 3). This happens frequently
with the recently added cp constant select optimization, but is a
very general xform. For example, we now compile the second example
in const-select.ll to:

_test:
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
seta %al
movzbl %al, %eax
movl 4(%esp), %ecx
movsbl (%ecx,%eax,4), %eax
ret

instead of:

_test:
movl 4(%esp), %eax
leal 4(%eax), %ecx
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
cmovbe %eax, %ecx
movsbl (%ecx), %eax
ret

This passes multisource and dejagnu.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66779 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e4577dcdb3554eb8306dff4731eda1fd695eee4b 12-Mar-2009 Chris Lattner <sabre@nondot.org> Move 3 "(add (select cc, 0, c), x) -> (select cc, x, (add, x, c))"
related transformations out of target-specific dag combine into the
ARM backend. These were added by Evan in r37685 with no testcases
and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).

Add some simple X86-specific (for now) DAG combines that turn things
like cond ? 8 : 0 -> (zext(cond) << 3). This happens frequently
with the recently added cp constant select optimization, but is a
very general xform. For example, we now compile the second example
in const-select.ll to:

_test:
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
seta %al
movzbl %al, %eax
movl 4(%esp), %ecx
movsbl (%ecx,%eax,4), %eax
ret

instead of:

_test:
movl 4(%esp), %eax
leal 4(%eax), %ecx
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
cmovbe %eax, %ecx
movsbl (%ecx), %eax
ret

This passes multisource and dejagnu.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66779 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4dc2b39bf89d7c87868008ef8a0f807e0419aca6 11-Mar-2009 Duncan Sands <baldrick@free.fr> It makes no sense to have a ODR version of common
linkage, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66690 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
b95df796a8a89e5817148cf229fb0152bff9d105 11-Mar-2009 Duncan Sands <baldrick@free.fr> It makes no sense to have a ODR version of common
linkage, so remove it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66690 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
eda2ec35a14df50590f4b0b15f4b85be8d4ed5a1 11-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3785, a valgrind error on test/CodeGen/ARM/pr3502.ll



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66660 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
13b25fce1fc6de85fbd6d185f8765685e57d9eae 11-Mar-2009 Chris Lattner <sabre@nondot.org> fix PR3785, a valgrind error on test/CodeGen/ARM/pr3502.ll



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66660 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
8c6b991635ff589fbe4b8db013bcc1d2ef57a0e0 09-Mar-2009 Evan Cheng <evan.cheng@apple.com> ARM target now also recognize triplets like thumbv6-apple-darwin and set thumb mode and arch subversion. Eventually thumb triplets will go way and replaced with function notes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66435 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMTargetMachine.cpp
a5de2fc079f65072277595a7a6e763762081a124 09-Mar-2009 Evan Cheng <evan.cheng@apple.com> ARM target now also recognize triplets like thumbv6-apple-darwin and set thumb mode and arch subversion. Eventually thumb triplets will go way and replaced with function notes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66435 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMTargetMachine.cpp
6501153fc036741a90c616083014b0f8499678fb 09-Mar-2009 Evan Cheng <evan.cheng@apple.com> ARM isLegalAddressImmediate should check if type is a simple type now that optimizer can create values of funky scalar types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66429 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b882875fb6e003d7915f1d5e40741408d0f408b3 09-Mar-2009 Evan Cheng <evan.cheng@apple.com> ARM isLegalAddressImmediate should check if type is a simple type now that optimizer can create values of funky scalar types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66429 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4b1747430a2d67702958b95d6776396734f184a0 08-Mar-2009 Evan Cheng <evan.cheng@apple.com> Recognize triplets starting with armv5-, armv6- etc. And set the ARM arch version accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66365 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
ac1f779b964db12a88ec961867227a61dcc84e12 08-Mar-2009 Evan Cheng <evan.cheng@apple.com> Recognize triplets starting with armv5-, armv6- etc. And set the ARM arch version accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66365 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
667d4b8de6dea70195ff12ef39a4deebffa2f5c7 07-Mar-2009 Duncan Sands <baldrick@free.fr> Introduce new linkage types linkonce_odr, weak_odr, common_odr
and extern_weak_odr. These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global. In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time. This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function. If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body. The
code generators on the other hand map weak and weak_odr linkage
to the same thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66339 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
19d161f714b83cd850fe489aa3fdaa3d3744157b 07-Mar-2009 Duncan Sands <baldrick@free.fr> Introduce new linkage types linkonce_odr, weak_odr, common_odr
and extern_weak_odr. These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global. In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time. This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function. If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body. The
code generators on the other hand map weak and weak_odr linkage
to the same thing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66339 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
0f8b53f19d29013ab18f3d444cea1e6305405611 03-Mar-2009 Dan Gohman <gohman@apple.com> Fix a bunch of Doxygen syntax issues. Escape special characters,
and put @file directives on their own comment line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8387bb3116c16ebf4fd05c5aaa770e3eb243fc61 03-Mar-2009 Dan Gohman <gohman@apple.com> Fix a bunch of Doxygen syntax issues. Escape special characters,
and put @file directives on their own comment line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65920 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
57f0db833dc30404f1f5d28b23df326e520698ec 24-Feb-2009 Bill Wendling <isanbard@gmail.com> Overhaul my earlier submission due to feedback. It's a large patch, but most of
them are generic changes.

- Use the "fast" flag that's already being passed into the asm printers instead
of shoving it into the DwarfWriter.

- Instead of calling "MI->getParent()->getParent()" for every MI, set the
machine function when calling "runOnMachineFunction" in the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
4f40531823c2b995149ff3a1b721171ad6942363 24-Feb-2009 Bill Wendling <isanbard@gmail.com> Overhaul my earlier submission due to feedback. It's a large patch, but most of
them are generic changes.

- Use the "fast" flag that's already being passed into the asm printers instead
of shoving it into the DwarfWriter.

- Instead of calling "MI->getParent()->getParent()" for every MI, set the
machine function when calling "runOnMachineFunction" in the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
ef4cfc749a61d0d0252196c957697436ba7ec068 23-Feb-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info through prologue/epilogue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65298 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c036181790b81f9efd806e8b7f37be6af4628a4a 23-Feb-2009 Bill Wendling <isanbard@gmail.com> Propagate debug loc info through prologue/epilogue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65298 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
97357614b5957cc167c261d3be54713802715d9a 18-Feb-2009 Dan Gohman <gohman@apple.com> Factor out the code to add a MachineOperand to a MachineInstrBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64891 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
c909bbb96eafd7bfaf25f6003533c8013526a818 18-Feb-2009 Dan Gohman <gohman@apple.com> Factor out the code to add a MachineOperand to a MachineInstrBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64891 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
caa0c2caddcfb56de09e016c4c153d0609ffcf6e 18-Feb-2009 Evan Cheng <evan.cheng@apple.com> GV with null value initializer shouldn't go to BSS if it's meant for a mergeable strings section. Currently it only checks for Darwin. Someone else please check if it should apply to other targets as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cf84b146984fd7d184efd6548ee91994454ee82d 18-Feb-2009 Evan Cheng <evan.cheng@apple.com> GV with null value initializer shouldn't go to BSS if it's meant for a mergeable strings section. Currently it only checks for Darwin. Someone else please check if it should apply to other targets as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64877 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
8a43d98644e4c847cdef88c9658a4d821cc72473 13-Feb-2009 Dale Johannesen <dalej@apple.com> and one more file



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64430 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
36fa7305436a97fd011d3092edc0a8dea4a152a7 13-Feb-2009 Dale Johannesen <dalej@apple.com> and one more file



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64430 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
b67284057ee130114055309eabe0bcd1af13777d 13-Feb-2009 Dale Johannesen <dalej@apple.com> Remove refs to non-DebugLoc versions of BuildMI from ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64429 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.h
e8a10c4ffd228e06a5f6955f3cb9b15e07afe729 13-Feb-2009 Dale Johannesen <dalej@apple.com> Remove refs to non-DebugLoc versions of BuildMI from ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64429 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.h
21b5541814d57d0a31f353948e4e933dbb1af6a4 13-Feb-2009 Dale Johannesen <dalej@apple.com> Eliminate a couple of non-DebugLoc BuildMI variants.
Modify callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64409 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
77cce4dd56feafc2e97407f17827384fdd018a14 13-Feb-2009 Dale Johannesen <dalej@apple.com> Eliminate a couple of non-DebugLoc BuildMI variants.
Modify callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64409 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
8c4d1b2bcfa63d064a7bcbd9cd23ebe3b282f853 12-Feb-2009 Chris Lattner <sabre@nondot.org> fix PR3538 for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64384 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a1bd6f0aed4c2491ad29b965dbb9c8b54bce4054 12-Feb-2009 Chris Lattner <sabre@nondot.org> fix PR3538 for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64384 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d1c321a89ab999b9bb602b0f398ecd4c2022262c 12-Feb-2009 Bill Wendling <isanbard@gmail.com> Move debug loc info along when the spiller creates new instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64342 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
5b8a97b83826d1f4bc64c7b26cca787ac857cc60 12-Feb-2009 Bill Wendling <isanbard@gmail.com> Move debug loc info along when the spiller creates new instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64342 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
dc54d317e7a381ef8e4aca80d54ad1466bb85dda 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nasty
suprise to some callers, e.g. register coalescer. For now, add an parameter
that tells AnalyzeBranch whether it's safe to modify the mbb. A better
solution is out there, but I don't have time to deal with it right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64124 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
eac316468ad31a7bf286528ff9970c5794ba8539 09-Feb-2009 Evan Cheng <evan.cheng@apple.com> Turns out AnalyzeBranch can modify the mbb being analyzed. This is a nasty
suprise to some callers, e.g. register coalescer. For now, add an parameter
that tells AnalyzeBranch whether it's safe to modify the mbb. A better
solution is out there, but I don't have time to deal with it right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64124 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
1fdbc1dd4e9cb42c79a30e8dc308c322e923cc52 07-Feb-2009 Dan Gohman <gohman@apple.com> Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowing
ScheduleDAG's TLI member to use const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64018 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
96d60921d8568680bad2788b80a163fecb1dbdbe 07-Feb-2009 Dan Gohman <gohman@apple.com> Constify TargetInstrInfo::EmitInstrWithCustomInserter, allowing
ScheduleDAG's TLI member to use const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64018 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b300d2aa3ef08b5074449e2c05804717f488f4e4 07-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of the last non-DebugLoc versions of getNode!

Many targets build placeholder nodes for special operands, e.g.
GlobalBaseReg on X86 and PPC for the PIC base. There's no
sensible way to associate debug info with these. I've left
them built with getNode calls with explicit DebugLoc::getUnknownLoc operands.
I'm not too happy about this but don't see a good improvement;
I considered adding a getPseudoOperand or something, but it
seems to me that'll just make it harder to read.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63992 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
24dd9a56e50b4c931ae96a93e67c4ed85e65d989 07-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of the last non-DebugLoc versions of getNode!

Many targets build placeholder nodes for special operands, e.g.
GlobalBaseReg on X86 and PPC for the PIC base. There's no
sensible way to associate debug info with these. I've left
them built with getNode calls with explicit DebugLoc::getUnknownLoc operands.
I'm not too happy about this but don't see a good improvement;
I considered adding a getPseudoOperand or something, but it
seems to me that'll just make it harder to read.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63992 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e8d7230f480654cdb8ff1c3d0a38e1e9ab0bd55f 07-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc getNode variants. Use
getCALLSEQ_{END,START} to permit passing no DebugLoc
there. UNDEF doesn't logically have DebugLoc; add
getUNDEF to encapsulate this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63978 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9bfc017ed383685dbc2f7db5b7f79763057effea 07-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc getNode variants. Use
getCALLSEQ_{END,START} to permit passing no DebugLoc
there. UNDEF doesn't logically have DebugLoc; add
getUNDEF to encapsulate this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63978 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
de06470330260f5937e7ca558f5f5b3e171f2ee5 06-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc versions of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63969 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
175fdefc4fe809d3d58c98a8172e63696e0e79e0 06-Feb-2009 Dale Johannesen <dalej@apple.com> Remove more non-DebugLoc versions of getNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63969 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f5f5dce897269885754fc79adeb809194da52942 06-Feb-2009 Dale Johannesen <dalej@apple.com> Eliminate remaining non-DebugLoc version of getTargetNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63951 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5d398a378ab7be40fc3ea01e846f33b3dc83e265 06-Feb-2009 Dale Johannesen <dalej@apple.com> Eliminate remaining non-DebugLoc version of getTargetNode.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63951 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
770bcc7b15adbc978800db70dbb1c3c22913b52c 06-Feb-2009 Evan Cheng <evan.cheng@apple.com> Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63938 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
afca4630b4689e3fd3997682add43f86a6e67a5c 06-Feb-2009 Evan Cheng <evan.cheng@apple.com> Move getPointerRegClass from TargetInstrInfo to TargetRegisterInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63938 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
f90b2a7742ddeddc448586cc050818a664419e74 06-Feb-2009 Dale Johannesen <dalej@apple.com> get rid of some non-DebugLoc getTargetNode variants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63909 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b556ed0ac5ed6d7514adaaeafaefec51840d6458 06-Feb-2009 Dale Johannesen <dalej@apple.com> get rid of some non-DebugLoc getTargetNode variants.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63909 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
ed2eee63a6858312ed17582d8cb85a6856d8eb34 06-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of one more non-DebugLoc getNode and
its corresponding getTargetNode. Lots of
caller changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63904 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
913ba76a560da1419879168a4a61e0739d636b18 06-Feb-2009 Dale Johannesen <dalej@apple.com> Get rid of one more non-DebugLoc getNode and
its corresponding getTargetNode. Lots of
caller changes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63904 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b3379fbc604cc9e11b8b7fcd1ecb09a40a886697 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> A few more isAsCheapAsAMove.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63852 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bd0ca9c95cb9915cb59bbf507d00169cc42258a5 05-Feb-2009 Evan Cheng <evan.cheng@apple.com> A few more isAsCheapAsAMove.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63852 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a05dca4f9e051fad19fe9b5f6cce2715c1e5d505 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc forms of CopyToReg and CopyFromReg.
Adjust callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63789 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b03cc3f88f4585859ea7031f5c5bbecb64202f96 05-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc forms of CopyToReg and CopyFromReg.
Adjust callers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63789 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
33c960f523f2308482d5b2816af46a7ec90a6d3d 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc versions of getLoad and getStore.
Adjust the many callers of those versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63767 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ea99692c6c7dac4b4280286323c548c778de9993 04-Feb-2009 Dale Johannesen <dalej@apple.com> Remove non-DebugLoc versions of getLoad and getStore.
Adjust the many callers of those versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63767 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0f502f6f44f2756f5cb7b17d8f1d8eae000d51b4 03-Feb-2009 Dale Johannesen <dalej@apple.com> Add some DL propagation to places that didn't
have it yet. More coming.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
7f2abf4d0113aca037317ea1d1674ee00f3b1f84 03-Feb-2009 Dale Johannesen <dalej@apple.com> Add some DL propagation to places that didn't
have it yet. More coming.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
9bc96a57206cbebaa9b0ba9979f949eb10c1592c 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Create DebugLoc information in FastISel. Several temporary methods were
created. Specifically, those BuildMIs which use
"DebugLoc::getUnknownLoc()". I'll remove them soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63584 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
5aa0ddb0f8b15d4d0f3e6385908593e977360812 03-Feb-2009 Bill Wendling <isanbard@gmail.com> Create DebugLoc information in FastISel. Several temporary methods were
created. Specifically, those BuildMIs which use
"DebugLoc::getUnknownLoc()". I'll remove them soon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63584 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
7d2ad624fa749a6d3edac0d94e9c107989c16304 31-Jan-2009 Dale Johannesen <dalej@apple.com> Make LowerCallTo and LowerArguments take a DebugLoc
argument. Adjust all callers and overloaded versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63444 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ca6237b16a68ff5256d47b79908cc3a3a4b61889 31-Jan-2009 Dale Johannesen <dalej@apple.com> Make LowerCallTo and LowerArguments take a DebugLoc
argument. Adjust all callers and overloaded versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63444 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1465d61bdd36cfd6021036a527895f0dd358e97d 28-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getAnalysisToUpdate to getAnalysisIfAvailable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4e0d6a7d48464188a1a25b544a6355326d3fd3bf 28-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getAnalysisToUpdate to getAnalysisIfAvailable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63198 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d1e7d9a88b5f4fa5e9a85affc4599c650c591ffb 28-Jan-2009 Evan Cheng <evan.cheng@apple.com> Suppress a compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63161 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1036173a7c9f1ebed9d2c21126e24df2eb83e09c 28-Jan-2009 Evan Cheng <evan.cheng@apple.com> Suppress a compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63161 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
4469c53cfc60e011d26f88594f7a690895f7f526 26-Jan-2009 Chris Lattner <sabre@nondot.org> silence a warning when assertions are disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62976 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b195d3489b7324ea93999cd24437ff6360aae244 26-Jan-2009 lattner <lattner@91177308-0d34-0410-b5e6-96231b3b80d8> silence a warning when assertions are disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62976 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
04ee5a1d9267e5e6fab8f088095fcb83c3c5cbd1 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62600 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
f97496a054876b3bb9c0acf424379eb2f48377ce 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62600 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
bdfc582edfccb948b563677e2d82fee5f0ba96f6 16-Jan-2009 Evan Cheng <evan.cheng@apple.com> ARMCompilationCallback should not save / restore vfp registers if vfp is not available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62299 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
643484ec3ec819eccc87f9bf4ec3ab7ee7fce7cc 16-Jan-2009 Evan Cheng <evan.cheng@apple.com> ARMCompilationCallback should not save / restore vfp registers if vfp is not available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62299 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
bb46f52027416598a662dc1c58f48d9d56b1a65b 15-Jan-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the private linkage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
a168fc98dedfc8cac01c34f84b699fe5f48ad76d 15-Jan-2009 Rafael Espindola <rafael.espindola@gmail.com> Add the private linkage.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
79ce276083ced01256a0eb7d80731e4948ca6e87 15-Jan-2009 Dan Gohman <gohman@apple.com> Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph
and into the ScheduleDAGInstrs class, so that they don't get
destructed and re-constructed for each block. This fixes a
compile-time hot spot in the post-pass scheduler.

To help facilitate this, tidy and do some minor reorganization
in the scheduler constructor functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62275 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
96eb47aa1be2f07003241a148e7b7db87bfa9104 15-Jan-2009 Dan Gohman <gohman@apple.com> Move a few containers out of ScheduleDAGInstrs::BuildSchedGraph
and into the ScheduleDAGInstrs class, so that they don't get
destructed and re-constructed for each block. This fixes a
compile-time hot spot in the post-pass scheduler.

To help facilitate this, tidy and do some minor reorganization
in the scheduler constructor functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62275 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
73e0914848662404cf2aa18eb049ff5aae543388 15-Jan-2009 Dan Gohman <gohman@apple.com> Const-qualify getPreIndexedAddressParts and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62259 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b9e1026824b2153acd295edf5cd715bf31b5c226 15-Jan-2009 Dan Gohman <gohman@apple.com> Const-qualify getPreIndexedAddressParts and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62259 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ceb4d1aecb9deffe59b3dcdc9a783ffde8477be9 12-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getABITypeSize to getTypePaddedSize, as
suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
smPrinter/ARMAsmPrinter.cpp
d68f13bf716faa496767a21140fab558adddc19a 12-Jan-2009 Duncan Sands <baldrick@free.fr> Rename getABITypeSize to getTypePaddedSize, as
suggested by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62099 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
smPrinter/ARMAsmPrinter.cpp
9b8f542e2746b28721b3ec603c3aaaa10ea708fc 09-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> Removed trailing whitespace from Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
e025bcca322301af5c4a5178b1a64080cb900ec1 09-Jan-2009 Misha Brukman <brukman+llvm@gmail.com> Removed trailing whitespace from Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61991 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/Makefile
eb3fc289141ad44883acbb91e839ab1b9a0f2025 09-Jan-2009 Devang Patel <dpatel@apple.com> Convert DwarfWriter into a pass.
Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
aa1e84356d47c78a270b0ebceb434a401e59a5b5 09-Jan-2009 Devang Patel <dpatel@apple.com> Convert DwarfWriter into a pass.
Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61955 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
d68a07650cdb2e18f18f362ba533459aa10e01b6 05-Jan-2009 Dan Gohman <gohman@apple.com> Tidy up #includes, deleting a bunch of unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61715 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMConstantPoolValue.h
c24a3f87f866e96b2a9ad691c78113651eaa77d1 05-Jan-2009 Dan Gohman <gohman@apple.com> Tidy up #includes, deleting a bunch of unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61715 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMConstantPoolValue.h
38b6fd67a6c4151ff56414cc3be5092bd7a2ddd8 11-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix a 80 col. violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60901 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
7416593009a045231c7f2689b4e863d65f502ec0 11-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix a 80 col. violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60901 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
e5ad88e97fea74dd55675fa3ded89f01fb18f363 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Preliminary ARM debug support based on patch by Mikael of FlexyCore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60851 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMRegisterInfo.cpp
smPrinter/ARMAsmPrinter.cpp
e4428082555be131bde68c424beeb6643ebf88a2 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Preliminary ARM debug support based on patch by Mikael of FlexyCore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60851 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMRegisterInfo.cpp
smPrinter/ARMAsmPrinter.cpp
5788d1a169db3346a612a13113348d2709bdd15b 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60828 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
6e561c71f74571ff2a448e7e07cb74047edef776 10-Dec-2008 Evan Cheng <evan.cheng@apple.com> Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60828 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
c3ccc1aaaf8a58a70d68d947e3b769b727d4e64f 06-Dec-2008 Evan Cheng <evan.cheng@apple.com> Clean up some ARM GV asm printing out; minor fixes to match what gcc does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60621 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
43f73c6bd106fc8b6f63cb6908d0b1aec615631b 06-Dec-2008 Evan Cheng <evan.cheng@apple.com> Clean up some ARM GV asm printing out; minor fixes to match what gcc does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60621 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
smPrinter/ARMAsmPrinter.cpp
ae94e594164b193236002516970aeec4c4574768 05-Dec-2008 Evan Cheng <evan.cheng@apple.com> Re-did 60519. It turns out Darwin's handling of hidden visibility symbols are a bit more complicate than I expected. Both declarations and weak definitions still need a stub indirection. However, the stubs are in data section and they contain the addresses of the actual symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60571 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
a65854f8c54ecbf787262221338a7cffd8e3e771 05-Dec-2008 Evan Cheng <evan.cheng@apple.com> Re-did 60519. It turns out Darwin's handling of hidden visibility symbols are a bit more complicate than I expected. Both declarations and weak definitions still need a stub indirection. However, the stubs are in data section and they contain the addresses of the actual symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60571 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
smPrinter/ARMAsmPrinter.cpp
a8103dad4e84e031c5845e18268655cc0bfbdb8d 04-Dec-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r60519. It was causing a bootstrap failure:

/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT barrier.lo -MD -MP -MF .deps/barrier.Tpo -c ../../../llvm-gcc.src/libgomp/barrier.c -fno-common -DPIC -o .libs/barrier.o
checking for sys/file.h... /var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:non-relocatable subtraction expression, "_gomp_tls_key" minus "L1$pb"
/var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:symbol: "_gomp_tls_key" can't be undefined in a subtraction expression
make[4]: *** [barrier.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT alloc.lo -MD -MP -MF .deps/alloc.Tpo -c ../../../llvm-gcc.src/libgomp/alloc.c -o alloc.o >/dev/null 2>&1
yes
checking for sys/param.h... make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-target-libgomp] Error 2
make[1]: *** Waiting for unfinished jobs....



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60527 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fa13d340473e77fdedb726ff855c1da207db0d20 04-Dec-2008 Bill Wendling <isanbard@gmail.com> Temporarily revert r60519. It was causing a bootstrap failure:

/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT barrier.lo -MD -MP -MF .deps/barrier.Tpo -c ../../../llvm-gcc.src/libgomp/barrier.c -fno-common -DPIC -o .libs/barrier.o
checking for sys/file.h... /var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:non-relocatable subtraction expression, "_gomp_tls_key" minus "L1$pb"
/var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:symbol: "_gomp_tls_key" can't be undefined in a subtraction expression
make[4]: *** [barrier.lo] Error 1
make[4]: *** Waiting for unfinished jobs....
/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT alloc.lo -MD -MP -MF .deps/alloc.Tpo -c ../../../llvm-gcc.src/libgomp/alloc.c -o alloc.o >/dev/null 2>&1
yes
checking for sys/param.h... make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-target-libgomp] Error 2
make[1]: *** Waiting for unfinished jobs....



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60527 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
eb83dfde66b4614fe48a572ea2ee1d7b91bcbc19 04-Dec-2008 Evan Cheng <evan.cheng@apple.com> Visibility hidden GVs do not require extra load of symbol address from the GOT or non-lazy-ptr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60519 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3fe20f9fdf2fd756d7ea7186f1b21a67c5cc8bbc 04-Dec-2008 Evan Cheng <evan.cheng@apple.com> Visibility hidden GVs do not require extra load of symbol address from the GOT or non-lazy-ptr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60519 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c54baa2d43730f1804acfb4f4e738fba72f966bd 03-Dec-2008 Dan Gohman <gohman@apple.com> Split foldMemoryOperand into public non-virtual and protected virtual
parts, and add target-independent code to add/preserve
MachineMemOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60488 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
edc83d6ec19f32ce2a3ea11109674d5370815d8c 03-Dec-2008 Dan Gohman <gohman@apple.com> Split foldMemoryOperand into public non-virtual and protected virtual
parts, and add target-independent code to add/preserve
MachineMemOperands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60488 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
15511cf1660cfd6bb8b8e8fca2db9450f50430ee 03-Dec-2008 Dan Gohman <gohman@apple.com> Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60487 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
5574cc7ede8b35672892ed36be37cd81555857ff 03-Dec-2008 Dan Gohman <gohman@apple.com> Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60487 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
f033b5a393c1f0af68a2e93ef73bf0a3d788ae6e 03-Dec-2008 Dan Gohman <gohman@apple.com> Update a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5c49fdeed5dce037668a62d7a2665be39857f2e4 03-Dec-2008 Dan Gohman <gohman@apple.com> Update a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
952b839ce9bc0c6d605d8b202c9cd76f7f05a77d 03-Dec-2008 Rafael Espindola <rafael.espindola@gmail.com> Fix bug 3140.
Print a single parameter .file directive if we have an ELF target.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60480 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
5cf2e553e3a6376051ae18f4eccd605a5703b8cd 03-Dec-2008 Rafael Espindola <rafael.espindola@gmail.com> Fix bug 3140.
Print a single parameter .file directive if we have an ELF target.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60480 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
41474baac839da410302950305722cb0e026a094 03-Dec-2008 Dan Gohman <gohman@apple.com> Add a sanity-check to tablegen to catch the case where isSimpleLoad
is set but mayLoad is not set. Fix all the problems this turned up.

Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60459 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
bc1714f32f95112cab85906a3a8c4057546b84d6 03-Dec-2008 Dan Gohman <gohman@apple.com> Add a sanity-check to tablegen to catch the case where isSimpleLoad
is set but mayLoad is not set. Fix all the problems this turned up.

Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60459 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c70f3295438488e1e34eb212d1f8ec55bbf43935 03-Dec-2008 Dan Gohman <gohman@apple.com> Fix a missing #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60458 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
8d6ca9bfb5580426590f6628b83279de503a3238 03-Dec-2008 Dan Gohman <gohman@apple.com> Fix a missing #include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60458 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
aaffa05d0a652dd3eae76a941d02d6b0469fa821 01-Dec-2008 Duncan Sands <baldrick@free.fr> There are no longer any places that require a
MERGE_VALUES node with only one operand, so get
rid of special code that only existed to handle
that possibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60349 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
42d7bb80eff3a86ca5790d950c399d294b6f9b0e 01-Dec-2008 Duncan Sands <baldrick@free.fr> There are no longer any places that require a
MERGE_VALUES node with only one operand, so get
rid of special code that only existed to handle
that possibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60349 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1607f05cb7d77d01ce521a30232faa389dbed4e2 01-Dec-2008 Duncan Sands <baldrick@free.fr> Change the interface to the type legalization method
ReplaceNodeResults: rather than returning a node which
must have the same number of results as the original
node (which means mucking around with MERGE_VALUES,
and which is also easy to get wrong since SelectionDAG
folding may mean you don't get the node you expect),
return the results in a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60348 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
7d9834be329543d61f747af9b48be539492d8974 01-Dec-2008 Duncan Sands <baldrick@free.fr> Change the interface to the type legalization method
ReplaceNodeResults: rather than returning a node which
must have the same number of results as the original
node (which means mucking around with MERGE_VALUES,
and which is also easy to get wrong since SelectionDAG
folding may mean you don't get the node you expect),
return the results in a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60348 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
027fdbe3ba6762b9867c6f891d64f76b7d6a4557 24-Nov-2008 Evan Cheng <evan.cheng@apple.com> Move target independent td files from lib/Target/ to include/llvm/Target so they can be distributed along with the header files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59953 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
301aaf5364b0e64e779165ec12b217c546a1506e 24-Nov-2008 Evan Cheng <evan.cheng@apple.com> Move target independent td files from lib/Target/ to include/llvm/Target so they can be distributed along with the header files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59953 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
7751ad92daeea5a3502fbc266ae814baec5c03e6 22-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Make a convenient helper for printing offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59872 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/Makefile
440f23db20a6c802d407e4f92a541648aaa6d492 22-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Make a convenient helper for printing offsets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59872 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
smPrinter/Makefile
97c573d5de4f729f9b3a5db59c6daa3a6fc7efe4 20-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix a thinko. MO is getOperand(i-1) so we don't have to adjust e.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59696 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
63143d7c25ec5d55a87eee12518f849f8e9c6856 20-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix a thinko. MO is getOperand(i-1) so we don't have to adjust e.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59696 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
e3066abfcf3b34ef6ff84e851d08f6db35908ac9 20-Nov-2008 Evan Cheng <evan.cheng@apple.com> Eliminate a compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59678 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
0f6a5612ac72664b641b39ffd17ae3df07ef432a 20-Nov-2008 Evan Cheng <evan.cheng@apple.com> Eliminate a compile time warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59678 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
cbad42cfd1cc93a41ff26ea2e8895bfbc09f54f2 18-Nov-2008 Dan Gohman <gohman@apple.com> Add more const qualifiers. This fixes build breakage from r59540.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59542 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
90feee242584d367473331a187a50bb8490d201b 18-Nov-2008 Dan Gohman <gohman@apple.com> Add more const qualifiers. This fixes build breakage from r59540.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59542 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
92adc19be95347225f713db8cc1b5e22ac08bb5e 15-Nov-2008 Oscar Fuentes <ofv@wanadoo.es> Adds extern "C" ints to the .cpp files that use RegisterTarget, as
well as 2 files that use "Registrator"s. These are to be used by the
MSVC builds, as the Win32 linker does not include libs that are
otherwise unreferenced, even if global constructors in the lib have
side-effects.

Patch by Scott Graham!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59378 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
4f01235c75be6b458dfc43440854c99fdfd83513 15-Nov-2008 Oscar Fuentes <ofv@wanadoo.es> Adds extern "C" ints to the .cpp files that use RegisterTarget, as
well as 2 files that use "Registrator"s. These are to be used by the
MSVC builds, as the Win32 linker does not include libs that are
otherwise unreferenced, even if global constructors in the lib have
side-effects.

Patch by Scott Graham!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59378 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
7e2cc91d2dfae04014d817efe7f3f071ce97f452 15-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix fuitos encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59344 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
bd05c5ff3268bfc5533ec6f8a04ff7ff89a4eabc 15-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix fuitos encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59344 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
a956255ebf51a48b8528b520eafcdfb5f1049a28 14-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix MOVrx, MOVsrl_flag, and MOVsra_flag encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59314 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
7f240d2720ad13acf5da2a8219f1848c02ff4c26 14-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix MOVrx, MOVsrl_flag, and MOVsra_flag encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59314 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
ffa6d962a7d75500269ce5d2012b58249fee3d6d 14-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle the rest of pseudo instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59275 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
9d2c9231ced48ab86dd4707431be7405deeff3bc 14-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle the rest of pseudo instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59275 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
28f312949e27e6e218ba25d8ca07ed58a96a4bd1 14-Nov-2008 Evan Cheng <evan.cheng@apple.com> Lazy compilation callback save / restore VFP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59274 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
649de51e103995ae3efa6ff4aab7c0a7e480bc56 14-Nov-2008 Evan Cheng <evan.cheng@apple.com> Lazy compilation callback save / restore VFP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59274 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
35b0bfd06dd5ce8f679a497b3fbfae43667f8727 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Don't forget to emit stubs for function GV's emitted in CONSTPOOL_ENTRY's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59258 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
0593d64a589a05a2ae3355eb0e4c5ce507bafcbb 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Don't forget to emit stubs for function GV's emitted in CONSTPOOL_ENTRY's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59258 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
3c902e81fae4eaee88729dc7fd97eb78d9cb8650 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> fsub{d|s} encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59234 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
b4d2a3672cef33a0b03c3e994a237d7cf008d1f6 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> fsub{d|s} encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59234 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
67fd91f3df132844a7ad8bcc70de118e0a534d9e 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Missed a break statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59231 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
3d89598f1f77b6592f04671cc5d356eb285b746f 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Missed a break statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59231 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
148cad8b308c0f8fdb37b368f2c911861dd2421a 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix pre- and post-indexed load / store encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59230 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
81794bb21ef0b38886835eed1995d495e47be42a 13-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix pre- and post-indexed load / store encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59230 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
cb5798285aa3a3cd93448beda6264152c761e8e3 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove the incorrect assertion. We don't have enough information before relocation to set U bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59170 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
ba3d8bcb52d332b1af1283585e0d01d636bc2899 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove the incorrect assertion. We don't have enough information before relocation to set U bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59170 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
607f1b41a26f6b083399a480ed8547236931db76 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Address mode immediate offset has already been divided by 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59117 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
517b3e868e9ad48ac2905dbb52d731962abcbca9 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Address mode immediate offset has already been divided by 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59117 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
3f4924efffdb4bb7af408356df86bd8cb83ab89a 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix a VFP binary arithmetic instruction encoding bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59116 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
db60806dfc019724a37f8a5d2e997ea38d205f8f 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix a VFP binary arithmetic instruction encoding bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59116 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
706329143d0cbe83684275417c514725aab773e9 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix address mode 3 immediate offset mode encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59109 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.h
9eba91165910dcb37d5751bf43b2e90b83a381d1 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix address mode 3 immediate offset mode encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59109 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.h
3c4a4ffa3dba5e3c7a0900d0bafe28d7095f3ada 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Consolidate formats; fix FCMPED etc. encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59107 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
RMInstrVFP.td
11838a81de997021b6b914cd725eb4d65c3183e5 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Consolidate formats; fix FCMPED etc. encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59107 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
RMInstrVFP.td
80a119842da2ce2786ea476037001ab5b6c67046 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix VFP conversion instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59104 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
7427338c3da0cf35ecd0ea845ea41e3939eab608 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix VFP conversion instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59104 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
d06d48d2b593958a4822ef6f7f3f6b51d177124c 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix encoding of single-precision VFP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59102 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
RMRegisterInfo.cpp
RMRegisterInfo.h
8a0454bb13f2db05517e70aae31e0f15f5d252fe 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix encoding of single-precision VFP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59102 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrVFP.td
RMRegisterInfo.cpp
RMRegisterInfo.h
580c0dfaed1caaf241dfb8c02c11f89d6431ee50 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> VFP fld / fst immediate field is multiplied by 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59100 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMRelocations.h
668d0df68e2c40e4f4073535afcc5ec210d7d200 12-Nov-2008 Evan Cheng <evan.cheng@apple.com> VFP fld / fst immediate field is multiplied by 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59100 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMRelocations.h
0a0ab1387a3923769990e91cce8e098366c4a920 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix FMDRR encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59088 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
828ccdc0ffc967ba75d96e1f3c55230047c5a13c 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix FMDRR encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59088 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
cb5201f3b2d7147471d33cb2ddd94c5e011055e2 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle floating point constpool_entry's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59087 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
9e280e07770715ab3814954a5ad7d88bc0a3f9d8 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle floating point constpool_entry's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59087 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
cd8e66a1efdb31f0514270387207fb8c63bae4ed 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode VFP load / store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59084 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
bb786b31491ed3cf69247d29cd2d42afa75dc54a 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode VFP load / store instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59084 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
78be83d7c2a5b94e635b0227924a489b8d8937e8 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode VFP conversion instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59074 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
9d3cc18099051234d17dedbd15dfd486b89b9a25 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode VFP conversion instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59074 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
96581d3633edf702b14a60472a1ec5354f327c18 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode VFP arithmetic instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59016 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
c63e15ebf517f96d2ac3a6b969791bf3f9130964 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode VFP arithmetic instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59016 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrVFP.td
588920b9a5f7004e330e3597872908b4d57e9355 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Correct PIC function stub codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59006 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
RMJITInfo.h
5120b9fa2d6559eb94dab3079ff346926c73940f 11-Nov-2008 Evan Cheng <evan.cheng@apple.com> Correct PIC function stub codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59006 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
RMJITInfo.h
9ed2f80910160bbf8051d91cd74c82d4619885b4 10-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename isGVNonLazyPtr to isIndirectSym to reflect how it will be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58949 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
8af22c446b6eefa8dddd2412c7d779feb4c7bf0a 10-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename isGVNonLazyPtr to isIndirectSym to reflect how it will be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58949 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
0b45c9957fb7ad47e653fb43d455f6727170dad0 09-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Temporary revert my last commit: it seems it's triggering some subtle bug in backend
and breaks llvm-gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
a0880c082b31450617b7089c362ffaaf9b490a8d 09-Nov-2008 asl <asl@91177308-0d34-0410-b5e6-96231b3b80d8> Temporary revert my last commit: it seems it's triggering some subtle bug in backend
and breaks llvm-gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58926 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0f569535676325a94981881eba6f8c7e61630992 08-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Factor out offset printing code into generic AsmPrinter.
FIXME: it seems, that most of targets don't support
offsets wrt CPI/GlobalAddress', was it intentional?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
dbe42758a93dd74acd64dc5c88f7fc0708740143 08-Nov-2008 Anton Korobeynikov <asl@math.spbu.ru> Factor out offset printing code into generic AsmPrinter.
FIXME: it seems, that most of targets don't support
offsets wrt CPI/GlobalAddress', was it intentional?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58917 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
ae166410b992e7eb8652aba1c9010c043a8f6016 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Moved InvalidateInstructionCache to ARMJITInfo::emitFunctionStub which knows size of stub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58899 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
886dafe6e0958d8da971a539954ae4c050c783da 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Moved InvalidateInstructionCache to ARMJITInfo::emitFunctionStub which knows size of stub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58899 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
ce4a70bd7608861e104b04265a0c71e5df8ecefe 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58897 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
2c3267a14d9e81b7507ef2d9d7ea8b3bc5f7efe0 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58897 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
3cc8223a3c062daee763d6db272415a76de38a78 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Tell ARMJITInfo if codegen relocation is PIC. It changes how function stubs are generated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58896 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.h
RMTargetMachine.cpp
ba96b1a43da968e21c217ed05a65cfbe2a845f47 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Tell ARMJITInfo if codegen relocation is PIC. It changes how function stubs are generated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58896 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.h
RMTargetMachine.cpp
103325179a65686d7e7dea3527d3a802b12e081e 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix relocation for calls to external symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58893 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5c454e984a39c417eae57989e54e5c44f2d85557 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix relocation for calls to external symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58893 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
05c356e65aca522244da68d7232c719cb8e45775 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Skip over two-address use operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58883 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
2929cc0f51dd998bc00547377f00386758dc962f 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Skip over two-address use operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58883 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
e96a490d7a0e224961d37f60f85e8556a64ed2b1 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle ARM machine constantpool entry with non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58882 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
2d011f9f433116e91c2d98e8f3c32bb9608ce666 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle ARM machine constantpool entry with non-lazy ptr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58882 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
f1bbb9577a42cf7dc3079412f1dd7683e3a03665 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Use ARMFunctionInfo to track number of constpool entries and jumptables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58877 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMJITInfo.h
RMMachineFunctionInfo.h
d3c573ad2b4e96d426e7bfa60092bf9c2596fc56 08-Nov-2008 Evan Cheng <evan.cheng@apple.com> Use ARMFunctionInfo to track number of constpool entries and jumptables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58877 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMJITInfo.h
RMMachineFunctionInfo.h
413a89f3187581ee94d01cafe167f1deff16493d 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> More code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58872 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
8600421afe774e20c147d9505e3ddc0c1fc04a99 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> More code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58872 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
437c1738ef0ca451b710c31c87166f6abfd04ec7 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Get PIC jump table working.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58869 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
260ae19f81f574a4ec2c4cc648a63bd4278e4615 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Get PIC jump table working.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58869 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
e5f4de42b5d26f60cec6fab0482eaf579246b218 07-Nov-2008 Dan Gohman <gohman@apple.com> Flush the raw_ostream after emitting the assembly for a function.
This is a temporary fix for the -print-emitted-asm option, where
errs() is used as the stream, in the case where other code is
using stderr without using errs()' buffer. Hopefully soon we'll
fix errs() to be non-buffered instead. Patch by Preston Gurd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58859 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
eb94abd06c83b66823049ca0a4ca43a981f81fc6 07-Nov-2008 Dan Gohman <gohman@apple.com> Flush the raw_ostream after emitting the assembly for a function.
This is a temporary fix for the -print-emitted-asm option, where
errs() is used as the stream, in the case where other code is
using stderr without using errs()' buffer. Hopefully soon we'll
fix errs() to be non-buffered instead. Patch by Preston Gurd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58859 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
4df60f5491ff35c8a48c2cf14e18a33c9793b3bb 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Jump table JIT support. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58836 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
0f63ae111d5a509911fc61246c1acc62f8c58f18 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Jump table JIT support. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58836 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
8b59db3f2c72a642251d4f86ea61f5d27e8919a6 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode misc arithmetic instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58828 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
c2121a25f17c99f2f1b0235bf425842962535ae6 07-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode misc arithmetic instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58828 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
97f48c39fd158ad1a701002e2d6798c4b4ae4ab8 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode extend instructions; more clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58818 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
37afa438c83f6c25ae29ba269b67240def64fc68 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode extend instructions; more clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58818 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
12c3a533c50fe3c7475c1ff7c1bb4b26e36dc6c3 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> - Improve naming consistency: Branch -> BrFrm, BranchMisc -> BrMiscFrm.
- Consolidate instruction formats.
- Other clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58808 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
f8e8b6224f80c48736ae4387901bd5f84c2781d5 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> - Improve naming consistency: Branch -> BrFrm, BranchMisc -> BrMiscFrm.
- Consolidate instruction formats.
- Other clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58808 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
d87293ce78ae7568477374cd83b22c84214316fb 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove opcode from instruction TS flags; add MOVCC support; fix addrmode3 encoding bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58800 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
RMInstrVFP.td
be9982437e064b956575c7e9fb32465309b08cb2 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove opcode from instruction TS flags; add MOVCC support; fix addrmode3 encoding bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58800 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
RMInstrVFP.td
eb4f52eb6287919fe2bdca62364046af800cd15d 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle smul<x><y>, smulw<y>, smla<x><y>, smlaw<y>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58793 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
38396beca395eae0a5fe0b0f86c9bfcffb272287 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle smul<x><y>, smulw<y>, smla<x><y>, smlaw<y>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58793 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
9092213a5e50d4991f900d2df009d27bddfd9941 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix so_imm encoding bug; add support for MOVi2pieces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58790 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
7cd4acb355755ff9c52e60095fa7444fff7269af 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix so_imm encoding bug; add support for MOVi2pieces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58790 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.td
smPrinter/ARMAsmPrinter.cpp
fbc9d412efdfa1ed30ff4d2baedc775a5f59c638 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix encoding of multiple instructions with 3 src operands; also handle smmul, smmla, and smmls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58789 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
ee80fb79279be7c84e6f8a3f06403200386a6ef5 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Fix encoding of multiple instructions with 3 src operands; also handle smmul, smmla, and smmls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58789 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
83b5cf02721cb0f755fde9bd454172bceb356532 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode pic load / store instructions; fix some encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58780 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
c41fb3151784f7fccb4731ef594c4ea3dc685d5f 06-Nov-2008 Evan Cheng <evan.cheng@apple.com> Encode pic load / store instructions; fix some encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58780 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
edda31c412d524531ee6cd3f2d21c2ef85b6afb0 05-Nov-2008 Evan Cheng <evan.cheng@apple.com> Restructure ARM code emitter to use instruction formats instead of addressing modes to determine how to encode instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58764 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
86a926a425286e882a7f3902a525527f17bb127f 05-Nov-2008 Evan Cheng <evan.cheng@apple.com> Restructure ARM code emitter to use instruction formats instead of addressing modes to determine how to encode instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58764 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
8be6bbe5bfd50945ac6c5542e0f54a0924a5db8d 05-Nov-2008 Dan Gohman <gohman@apple.com> Eliminate the ISel priority queue, which used the topological order for a
priority function. Instead, just iterate over the AllNodes list, which is
already in topological order. This eliminates a fair amount of bookkeeping,
and speeds up the isel phase by about 15% on many testcases.

The impact on most targets is that AddToISelQueue calls can be simply removed.

In the x86 target, there are two additional notable changes.

The rule-bending AND+SHIFT optimization in MatchAddress that creates new
pre-isel nodes during isel is now a little more verbose, but more robust.
Instead of either creating an invalid DAG or creating an invalid topological
sort, as it has historically done, it can now just insert the new nodes into
the node list at a position where they will be consistent with the topological
ordering.

Also, the address-matching code has logic that checked to see if a node was
"already selected". However, when a node is selected, it has all its uses
taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
further visits from MatchAddress. This code is now removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58748 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
cc3df850908f44717e40c3c94e62943c7eae25e1 05-Nov-2008 Dan Gohman <gohman@apple.com> Eliminate the ISel priority queue, which used the topological order for a
priority function. Instead, just iterate over the AllNodes list, which is
already in topological order. This eliminates a fair amount of bookkeeping,
and speeds up the isel phase by about 15% on many testcases.

The impact on most targets is that AddToISelQueue calls can be simply removed.

In the x86 target, there are two additional notable changes.

The rule-bending AND+SHIFT optimization in MatchAddress that creates new
pre-isel nodes during isel is now a little more verbose, but more robust.
Instead of either creating an invalid DAG or creating an invalid topological
sort, as it has historically done, it can now just insert the new nodes into
the node list at a position where they will be consistent with the topological
ordering.

Also, the address-matching code has logic that checked to see if a node was
"already selected". However, when a node is selected, it has all its uses
taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
further visits from MatchAddress. This code is now removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58748 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3eb22e835f253ffd42a050caffa48eb08bdfc8d8 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Actually ARM / Mac OS X does have UINTTOFP_I64_F{64|32} libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58725 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
861c499fad5407535746fb8c4f101609fdfea1c6 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Actually ARM / Mac OS X does have UINTTOFP_I64_F{64|32} libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58725 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c7c77297e28189c3c3bccd6e261a84970704b760 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Custom lower bit_convert i64 -> f64 into FMDRR. This is now happening with legalizetypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58714 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8b37a95ffb1c263f34ea1fe9e0b9846593f96b41 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Custom lower bit_convert i64 -> f64 into FMDRR. This is now happening with legalizetypes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58714 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
142c15e05283aaa4f95ce64a7f6246e4b766eb8e 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Debug output tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58708 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
50a30ea5b2d17a5d574721f4355c0d044aa8b68a 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Debug output tweak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58708 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
e7fe6724452fc6db75be1957df79bb92f5635b28 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> LDM_RET restores pc, do not set 's' bit which would restore CPSR from SPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58707 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
8ec1b802681dc92db5b8195b84dac32d4422ebdf 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> LDM_RET restores pc, do not set 's' bit which would restore CPSR from SPSR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58707 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
b0b53491ef32b85bd90c8590faeb8a3fb4b17a95 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> For some targets, it's not possible to place GVs in the same memory buffer as the MachineCodeEmitter allocated memory. Code and data has different read / write / execution privilege requirements.

This is a short term workaround. The current solution is for the JIT memory manager to manage code and data memory separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58688 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.h
4a8e3b4f4e6efae315b04d6930e82baa84e746ab 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> For some targets, it's not possible to place GVs in the same memory buffer as the MachineCodeEmitter allocated memory. Code and data has different read / write / execution privilege requirements.

This is a short term workaround. The current solution is for the JIT memory manager to manage code and data memory separately.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58688 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.h
e953b89b0d7ef8ecb681dab3bea0db81e41c3cf9 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Stylistic change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58683 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
dfee8858c8305e342b68fa63133b5535851a97a1 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Stylistic change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58683 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
25e04788bfddc54dde7bed65302146b46089a166 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle ARM machine constantpool entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58671 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
5a033a6c9c08d06f316e42b111cc79756c672733 04-Nov-2008 Evan Cheng <evan.cheng@apple.com> Handle ARM machine constantpool entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58671 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantPoolValue.cpp
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
49987360ade8d506782835222f5f00dfc5ef9ec6 03-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove a dead switch statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58644 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3cb57c7261a0b4d94a04417b05c754502a3e7a91 03-Nov-2008 Evan Cheng <evan.cheng@apple.com> Remove a dead switch statement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58644 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
afaf12036d0432dd3265436c94a66183b21c2115 03-Nov-2008 Evan Cheng <evan.cheng@apple.com> Minor code restructuring. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58643 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
4a83c42c7ec7a236a0a837ae7e6a13378a82db4a 03-Nov-2008 Evan Cheng <evan.cheng@apple.com> Minor code restructuring. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58643 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
0a4b9dc9b127c3fae6069f85a7858db5a06ff3a8 03-Nov-2008 Jim Grosbach <grosbach@apple.com> Add binary encoding support for multiply instructions. Some blanks left to fill in, but the basics are there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58626 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
1feed0434ec93100876edf72897700148b74d054 03-Nov-2008 Jim Grosbach <grosbach@apple.com> Add binary encoding support for multiply instructions. Some blanks left to fill in, but the basics are there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58626 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
8f092252d3fe75064abe330e0e6f75e213f4ac06 03-Nov-2008 Dan Gohman <gohman@apple.com> Refactor various TargetAsmInfo subclasses' TargetMachine members away
adding a TargetMachine member to the base TargetAsmInfo class instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58624 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
a004d7b4de6421de04481229540e5397d25e05ab 03-Nov-2008 Dan Gohman <gohman@apple.com> Refactor various TargetAsmInfo subclasses' TargetMachine members away
adding a TargetMachine member to the base TargetAsmInfo class instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58624 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
2583b2a713c2f1cd491805a03b6bf2e95dd2fdee 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58533 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.h
851decbd76290843dd062739d067f327993a9e24 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58533 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.h
938b9d8ef78e83926437f8a331dd1e7645e28e4e 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Use better data structure for ConstPoolId2AddrMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58532 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.h
b562f8b205bad45d278863af6644e87c054e6bc0 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Use better data structure for ConstPoolId2AddrMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58532 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.h
ba44df60d66363ce7490e81b18a35231c3f4c04a 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Actually make debug output understandable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58529 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
2410feaf2f4c50656c58dac673301e20fb3b6cbb 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Actually make debug output understandable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58529 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
c072966838afdd2ac61d59354447ff51b6cf8940 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Forgot this in last commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0d28b38fa07c7274d73e2a8fa4ea8e7211b3347e 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Forgot this in last commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58527 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
eb4ed4b266b6f590febe9832016f97c9614a99f1 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Encode PICADD; some code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58526 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d6dcbe2281bb989bf4b96f4783b5163d68802c87 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> Encode PICADD; some code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58526 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
e53a5af96652567847508a3131863a9a186ada9b 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> I think we got non-machine specific constpool entries covered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58474 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
c2cd2abfd243cfd4124cbbc16303b8053d6ff524 31-Oct-2008 Evan Cheng <evan.cheng@apple.com> I think we got non-machine specific constpool entries covered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58474 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
65f244261cbe75e2bc525c3d66c3438384e8129c 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> ARM JIT should observe -relocation-model command line option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58433 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
b8b40d6123441802da20d163bdd192b1de58063b 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> ARM JIT should observe -relocation-model command line option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58433 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
0f282439be688babbbf6d54151ddf9a7ebbf3637 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> Correct way to handle CONSTPOOL_ENTRY instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58409 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
f07a9b69d1c91187d73667b46aa423d4325ccf04 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> Correct way to handle CONSTPOOL_ENTRY instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58409 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
5be59eace58e5a92bb851c4885f9cea7236ac30f 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add debugging support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58408 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
f3aaeed00d5ff37bd445fb956f7a817004afb49d 30-Oct-2008 Evan Cheng <evan.cheng@apple.com> Add debugging support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58408 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
bc6d876adf01b368c6bdd5984d9dac32589d356e 28-Oct-2008 Jim Grosbach <grosbach@apple.com> Support for constant islands in the ARM JIT.

Since the ARM constant pool handling supercedes the standard LLVM constant
pool entirely, the JIT emitter does not allocate space for the constants,
nor initialize the memory. The constant pool is considered part of the
instruction stream.

Likewise, when resolving relocations into the constant pool, a hook into
the target back end is used to resolve from the constant ID# to the
address where the constant is stored.

For now, the support in the ARM emitter is limited to 32-bit integer. Future
patches will expand this to the full range of constants necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58338 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.h
cd40d8954058f9dbfd9192fd0d5f8e0f8d00fa10 28-Oct-2008 Jim Grosbach <grosbach@apple.com> Support for constant islands in the ARM JIT.

Since the ARM constant pool handling supercedes the standard LLVM constant
pool entirely, the JIT emitter does not allocate space for the constants,
nor initialize the memory. The constant pool is considered part of the
instruction stream.

Likewise, when resolving relocations into the constant pool, a hook into
the target back end is used to resolve from the constant ID# to the
address where the constant is stored.

For now, the support in the ARM emitter is limited to 32-bit integer. Future
patches will expand this to the full range of constants necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58338 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.h
8ad4c00c00233acb8a3395098e2b575cc34de46b 27-Oct-2008 David Greene <greened@obbligato.org> Have TableGen emit setSubgraphColor calls under control of a -gen-debug
flag. Then in a debugger developers can set breakpoints at these calls
to see waht is about to be selected and what the resulting subgraph
looks like. This really helps when debugging instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58278 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
932618bbd74a0732de8687d0f5a25be8145e90b7 27-Oct-2008 David Greene <greened@obbligato.org> Have TableGen emit setSubgraphColor calls under control of a -gen-debug
flag. Then in a debugger developers can set breakpoints at these calls
to see waht is about to be selected and what the resulting subgraph
looks like. This really helps when debugging instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58278 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
28df32b559c358edfa9ae875eb25a6f086306c13 25-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: lib/Target/ARM/AsmPrinter/CMakeLists.txt added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58133 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
7ba56bf365096798e62a803cf3ebb23948e3357d 25-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: lib/Target/ARM/AsmPrinter/CMakeLists.txt added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58133 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/CMakeLists.txt
c64bdf6aa5160471dfda49a78d4a0e08bc07ac0d 23-Oct-2008 Jim Grosbach <grosbach@apple.com> remove extraneous #ifdef's

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58006 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
ea6e03699e9e0cbe6aaf537ac7f4dee443ee42d0 23-Oct-2008 Jim Grosbach <grosbach@apple.com> remove extraneous #ifdef's

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58006 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
5c5b6dfd0e1525305674560dd5d995e5f7eff2e5 22-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Turned some libraries into partially linked objects. Corrected
names of LLVMCore and ARMCodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57943 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
9cc6f1df959dc2aa17ac70309503fcd3832b5cb9 22-Oct-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Turned some libraries into partially linked objects. Corrected
names of LLVMCore and ARMCodeGen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57943 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
a9ab95b38b0aec44e26a3b36a6b37498dc2acdde 21-Oct-2008 Jim Grosbach <grosbach@apple.com> use pre-UAL mnemonics for push/pop for compilaton callback function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57911 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
8eab1c8c9852bb78231148ac4fb2d93b975f4ccd 21-Oct-2008 Jim Grosbach <grosbach@apple.com> use pre-UAL mnemonics for push/pop for compilaton callback function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57911 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
932a32d2512353478d16c4101582adff404a55a5 20-Oct-2008 Jim Grosbach <grosbach@apple.com> Update the stub and callback code to handle lazy compilation. The stub
is re-written by the callback to branch directly to the compiled code
in future invocations.

Added back in range-based memory permission functions for the updating of
the stub on Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57846 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
c599a35bba7259e9b71aad881f5fc877ee34dc3d 20-Oct-2008 Jim Grosbach <grosbach@apple.com> Update the stub and callback code to handle lazy compilation. The stub
is re-written by the callback to branch directly to the compiled code
in future invocations.

Added back in range-based memory permission functions for the updating of
the stub on Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57846 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
8e8b8a223c2b0e69f44c0639f846260c8011668f 16-Oct-2008 Dan Gohman <gohman@apple.com> Const-ify several TargetInstrInfo methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57622 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
46b948ea872c1d1853fc5be4af44794ef3ae7f63 16-Oct-2008 Dan Gohman <gohman@apple.com> Const-ify several TargetInstrInfo methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57622 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
0329466b6b4927f4e6f5d144891fef06a027fec5 14-Oct-2008 Evan Cheng <evan.cheng@apple.com> Rename LoadX to LoadExt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57526 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
08c171a5541b033a603674fa0179259714d985a3 14-Oct-2008 Evan Cheng <evan.cheng@apple.com> Rename LoadX to LoadExt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57526 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2642196a6570e95e1491ee0120f67baa5c3ea351 14-Oct-2008 Jim Grosbach <grosbach@apple.com> Update ARM Insn encoding to get endian-ness to match the documentation (31-0 left to right)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57524 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
88c246fae5a4e41ad79241baff24e450c672f7cf 14-Oct-2008 Jim Grosbach <grosbach@apple.com> Update ARM Insn encoding to get endian-ness to match the documentation (31-0 left to right)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57524 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
b8cab9227a0f6ffbdaae33e3c64268e265008a6a 14-Oct-2008 Dan Gohman <gohman@apple.com> Fix command-line option printing to print two spaces where needed,
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57521 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
669b9bf656d0bdb22bee268c4dec5eb3b3add6d0 14-Oct-2008 Dan Gohman <gohman@apple.com> Fix command-line option printing to print two spaces where needed,
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57521 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
e563bbc312f8b11ecfe12b8187176f667df1dff3 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change CALLSEQ_BEGIN and CALLSEQ_END to take TargetConstant's as
parameters instead of raw Constants. This prevents the constants from
being selected by the isel pass, fixing PR2735.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57385 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
fe5d4021d0884e4cb94a7bb688fa0b02950ee29c 12-Oct-2008 Chris Lattner <sabre@nondot.org> Change CALLSEQ_BEGIN and CALLSEQ_END to take TargetConstant's as
parameters instead of raw Constants. This prevents the constants from
being selected by the isel pass, fixing PR2735.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57385 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
309c80adb5ece9c2bcc5fe871a440f9d91e12ef8 08-Oct-2008 Jim Grosbach <grosbach@apple.com> Comment to be explicit that the enumeration values for CondCodes matter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57295 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
f81385d68efb6d00d52ad945c6650976cebf392b 08-Oct-2008 Jim Grosbach <grosbach@apple.com> Comment to be explicit that the enumeration values for CondCodes matter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57295 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
76e9661b6c46e211c1e0d5215b92d3bd219e9cff 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Unconditional branch instruction encoding fix. Needs to use ABI, not AXI, to get the proper opcode bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57262 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
57a2588bcc546677c1666f44e59b638da3d5fb3f 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Unconditional branch instruction encoding fix. Needs to use ABI, not AXI, to get the proper opcode bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57262 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cbc47b89340c8ab995453f2b18ff237c1303e89d 07-Oct-2008 Jim Grosbach <grosbach@apple.com> need ARM.h for ARMCC definition

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57261 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
94a552c8de30d7c5f6aba15b13699490c17b6b7e 07-Oct-2008 Jim Grosbach <grosbach@apple.com> need ARM.h for ARMCC definition

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57261 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
3341262de27dad5e1f983fe072a749356a8f3c78 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Encode the conditional execution predicate when JITing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57258 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.h
320c148375723e6e2f850f5e9909da26391a0119 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Encode the conditional execution predicate when JITing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57258 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.h
9e729a2de59593b03ddf8a0acb1128ad060548e3 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Clarify naming and correct conditional so that CMP and CMN instructions get the Rn operand encoded properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57252 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
29c4b0044b6f70e476a669866eb494b50cb229d5 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Clarify naming and correct conditional so that CMP and CMN instructions get the Rn operand encoded properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57252 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
17a415a4f2d2609544b0bbb83691b568ddb5acd8 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Fix Opcode values of CMP and CMN

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57251 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7abbd4d0ec4f1e536323191b78adaab1923a28ee 07-Oct-2008 Jim Grosbach <grosbach@apple.com> Fix Opcode values of CMP and CMN

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57251 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6381a1334afa211fea8ec76ca7b22d26aee940dd 05-Oct-2008 Anton Korobeynikov <asl@math.spbu.ru> Fix weird think-o and unbreak build on all gcc-3.4.x-based platforms (e.g. mingw)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57106 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
45d1b62fd1bb0de6e47439a198aecce3e782ca9c 05-Oct-2008 Anton Korobeynikov <asl@math.spbu.ru> Fix weird think-o and unbreak build on all gcc-3.4.x-based platforms (e.g. mingw)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57106 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
da8ac5fd9130b70b61be61e4819faa8d842d708f 03-Oct-2008 Dan Gohman <gohman@apple.com> Avoid creating two TargetLowering objects for each target.
Instead, just create one, and make sure everything that needs
it can access it. Previously most of the SelectionDAGISel
subclasses all had their own TargetLowering object, which was
redundant with the TargetLowering object in the TargetMachine
subclasses, except on Sparc, where SparcTargetMachine
didn't have a TargetLowering object. Change Sparc to work
more like the other targets here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57016 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f2b2957318f841e3a74dba30df70d359675f2915 03-Oct-2008 Dan Gohman <gohman@apple.com> Avoid creating two TargetLowering objects for each target.
Instead, just create one, and make sure everything that needs
it can access it. Previously most of the SelectionDAGISel
subclasses all had their own TargetLowering object, which was
redundant with the TargetLowering object in the TargetMachine
subclasses, except on Sparc, where SparcTargetMachine
didn't have a TargetLowering object. Change Sparc to work
more like the other targets here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57016 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
48b828fdb467655fa630fed41e49e2a481fb6dab 03-Oct-2008 Jim Grosbach <grosbach@apple.com> Indexing off by one resulted in errant encoding of source register for
reg->reg moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57011 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
893b878b975ac42b3ffd7bb4518fbabb42c6e304 03-Oct-2008 Jim Grosbach <grosbach@apple.com> Indexing off by one resulted in errant encoding of source register for
reg->reg moves.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57011 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
016d34cc4caa5eac50378c652a5301fb1fbd48b3 03-Oct-2008 Jim Grosbach <grosbach@apple.com> NeedStub/DoesntNeedStub logic was reversed, leading to not using a stub
for global relocations that do need them (libc calls, for example).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57010 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
980dd3b54ea88868526af1846a435fe2bf141ada 03-Oct-2008 Jim Grosbach <grosbach@apple.com> NeedStub/DoesntNeedStub logic was reversed, leading to not using a stub
for global relocations that do need them (libc calls, for example).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57010 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d735b8019b0f297d7c14b55adcd887af24d8e602 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
smPrinter/ARMAsmPrinter.cpp
b9f4fa7b400836808bc3beab96482418f418f246 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
smPrinter/ARMAsmPrinter.cpp
efd30ba7980fc6a1f1577f5f586692db5a920eaa 01-Oct-2008 Jim Grosbach <grosbach@apple.com> Fix typo s/ther/there/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56924 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
b98d7197d674a5435545acc691236f46eb2ee97b 01-Oct-2008 Jim Grosbach <grosbach@apple.com> Fix typo s/ther/there/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56924 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
5df3186f598163258fabf3448d9372843804d1ab 29-Sep-2008 Duncan Sands <baldrick@free.fr> Rename isWeakForLinker to mayBeOverridden. Use it
instead of hasWeakLinkage in a bunch of optimization
passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56782 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
eb3f45fbeb3d009f9861f3c4ff82931b8aefe239 29-Sep-2008 Duncan Sands <baldrick@free.fr> Rename isWeakForLinker to mayBeOverridden. Use it
instead of hasWeakLinkage in a bunch of optimization
passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56782 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
184793fc8a9cf6ecc9147468bbcc068f472b8517 27-Sep-2008 Evan Cheng <evan.cheng@apple.com> Re-apply 56683 with fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56748 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
33633670b6587af91b91b2b63f2481fc6b16aba4 27-Sep-2008 Evan Cheng <evan.cheng@apple.com> Re-apply 56683 with fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56748 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
d5d8191b202c0f96f33c826c93d9796451ff7fca 27-Sep-2008 Bill Wendling <isanbard@gmail.com> Temporarily reverting r56683. This is causing a failure during the build of llvm-gcc:

/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o
Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311.
../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
{standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression
{standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56703 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
f29e2a5ab195a822593a92820338bdf63a85be1c 27-Sep-2008 Bill Wendling <isanbard@gmail.com> Temporarily reverting r56683. This is causing a failure during the build of llvm-gcc:

/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o
Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311.
../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
{standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
{standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression
{standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56703 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
36a55023c1daae86afedf6e6672c0adad7bbe5ea 26-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56683 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
e96a7f565ddcd8855d6cbcecf3f65ea08a65e558 26-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56683 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
86098bd6a63d2cdf0c9be9ef3151bd2728281fd7 26-Sep-2008 Dale Johannesen <dalej@apple.com> Add "inreg" field to CallSDNode (doesn't increase
its size). Adjust various lowering functions to
pass this info through from CallInst. Use it to
implement sseregparm returns on X86. Remove
X86_ssecall calling convention.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56677 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
67cc9b67faa7d6a72d916b52c22e7a33a44097db 26-Sep-2008 Dale Johannesen <dalej@apple.com> Add "inreg" field to CallSDNode (doesn't increase
its size). Adjust various lowering functions to
pass this info through from CallInst. Use it to
implement sseregparm returns on X86. Remove
X86_ssecall calling convention.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56677 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e1ad087fcbb51ed66e450d010f849b5792b4b6fc 26-Sep-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Builds all targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56641 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
da2a8a1309f7303008175e1d1ac7d4276c4454ec 26-Sep-2008 Oscar Fuentes <ofv@wanadoo.es> CMake: Builds all targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56641 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
32b952a2a60d1091e0e17bb6ce788cd1d41e6f8b 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Reapply 56585:56589 with proper fix for some gcc versions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56621 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
3829e8a0e4d29e43d934b78935c3e067db8ff195 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Reapply 56585:56589 with proper fix for some gcc versions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56621 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
688535e005f370a98e82c10be7346eb981b3dfc7 25-Sep-2008 Evan Cheng <evan.cheng@apple.com> Temporarily backing out 56585:56589 to unbreak the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56607 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
e0f2083a849c0c57991b115cc6895b10272c888c 25-Sep-2008 Evan Cheng <evan.cheng@apple.com> Temporarily backing out 56585:56589 to unbreak the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56607 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
621cdf0057e74453f8b3420c4c95cacf01faa993 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of virtual inheritance for ARM TAI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56587 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
ec2c6e1e97124a5f15c4b1abba707cb87c0db916 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of virtual inheritance for ARM TAI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56587 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
00181a33d87d0c7676547d979b2faa1c08c91732 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of ReadOnlySection duplicate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56582 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
4d43322fbff8d1233d86ba8c2af291352c3aca99 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of ReadOnlySection duplicate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56582 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
6481873dc042d33c974399a7761a72524d1fe957 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of now unused {Four,Eight,Sixteen}ByteConstantSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56580 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
bce7851fd6cdd2997666cb7b210448d52fd6e2eb 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of now unused {Four,Eight,Sixteen}ByteConstantSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56580 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
36133dd324a0583979cb9e219306726428270096 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* stuff for TLS sections

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56577 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
9a213e410c1f2639bfa8c363300a5ef409a38838 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* stuff for TLS sections

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56577 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
315690ec2a99e1c0867853955f81d99f548178be 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* DataSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56575 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
cca60fa0d98abdf7dbe69a4ef15c539d80f6e9bf 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Get rid of duplicate char*/Section* DataSection

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56575 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
c25e1ea5e9aa54952b6736a9579e25a5c2d8139f 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
1a9edae76b2e7cf15c5f7c36928b3701ac2ef47b 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56573 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0c8e80607bc3296a4775f05c02f0d11df8e5cb04 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Drop obsolete hook and change all usage to new interface

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
cf87a3dd015c7e2acfc0b4feff48fc7fc2a16f01 25-Sep-2008 Anton Korobeynikov <asl@math.spbu.ru> Drop obsolete hook and change all usage to new interface

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56572 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0ba2bcfcc3149a25d08aa8aa00fb6c34a4e25bdd 23-Sep-2008 Dan Gohman <gohman@apple.com> Fix these enums' starting values to reflect the way that
instruction opcodes are now numbered. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56497 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
868636ebd973e968cc698b48704420ec24a431fd 23-Sep-2008 Dan Gohman <gohman@apple.com> Fix these enums' starting values to reflect the way that
instruction opcodes are now numbered. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56497 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
0bb41608e94adfe9884bc188457c4f6ae47ea43c 22-Sep-2008 Dale Johannesen <dalej@apple.com> Make log, log2, log10, exp, exp2 use Expand by
default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56471 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b02a1c07cb1e1b9cdae3bf1ddb0578c779b9c8ff 22-Sep-2008 Dale Johannesen <dalej@apple.com> Make log, log2, log10, exp, exp2 use Expand by
default.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56471 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
057d0c35358841aba449d203622416431163cb83 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Duh. Default to ARMCC::AL (always).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56301 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
e4c813ccdf946b232816949926386aa6bbcdfa0e 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Duh. Default to ARMCC::AL (always).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56301 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
6d63a728586d56eb3e881905beb9db27f520f5d3 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56300 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
e6c6162e11557ac485caa2749f0c952e6d052bf4 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56300 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
3f7eb8eba083677d38cc8c96f00a945399421aaf 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56299 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
0edb69d3fb4b1a30c2bccb76b34e12d6e9eaa675 18-Sep-2008 Evan Cheng <evan.cheng@apple.com> Cosmetic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56299 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7fd7ca4e7f775a75f648f03d956c3068c71b991d 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix addrmode1 instruction encodings; fix bx_ret encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56277 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
469bc76e282e1a2f2b646ee1686e9d39337d0223 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix addrmode1 instruction encodings; fix bx_ret encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56277 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.td
29c57c34efcb6b8ba64e3279cdb68937c113552a 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> Specify instruction encoding using range list to avoid endianess issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56276 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
18e5d103729374160b2da14415a401c17bbcde6e 17-Sep-2008 Evan Cheng <evan.cheng@apple.com> Specify instruction encoding using range list to avoid endianess issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56276 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
056292fd738924f3f7703725d8f630983794b5a5 16-Sep-2008 Bill Wendling <isanbard@gmail.com> Reverting r56249. On further investigation, this functionality isn't needed.

Apologies for the thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56251 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fef06056071dcd275f5ec539713a0dfcc33db436 16-Sep-2008 Bill Wendling <isanbard@gmail.com> Reverting r56249. On further investigation, this functionality isn't needed.

Apologies for the thrashing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56251 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9468a9b6beed640eca64274c8dcc5aed3b94450b 16-Sep-2008 Bill Wendling <isanbard@gmail.com> - Change "ExternalSymbolSDNode" to "SymbolSDNode".
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol

These changes pave the way to allowing SymbolSDNodes with non-external linkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56249 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bdad5cfcd10bce155a51f3658a57ed3866903c5b 16-Sep-2008 Bill Wendling <isanbard@gmail.com> - Change "ExternalSymbolSDNode" to "SymbolSDNode".
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol

These changes pave the way to allowing SymbolSDNodes with non-external linkage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56249 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
014278e6a11fa0767853b831e5bf51b95bf541c5 13-Sep-2008 Dan Gohman <gohman@apple.com> Remove isImm(), isReg(), and friends, in favor of
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56189 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
7f7f365665a22e1b4397d0924f24b929607f9690 13-Sep-2008 Dan Gohman <gohman@apple.com> Remove isImm(), isReg(), and friends, in favor of
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56189 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
2aa0e649bfc0157ea08a1ba8f8c9e905ddb581b1 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix random abort.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56184 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
453bbc3a0040eb095c89c4e5c055d7333eb865f3 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Fix random abort.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56184 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
095cc29f321382e1f7d295e262a28197f92c5491 13-Sep-2008 Dan Gohman <gohman@apple.com> Define CallSDNode, an SDNode subclass for use with ISD::CALL.
Currently it just holds the calling convention and flags
for isVarArgs and isTailCall.

And it has several utility methods, which eliminate magic
5+2*i and similar index computations in several places.

CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
nodes that are not CSE'd gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56183 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
705e3f774254a03ef28a27c1d15903547a0e9d4c 13-Sep-2008 Dan Gohman <gohman@apple.com> Define CallSDNode, an SDNode subclass for use with ISD::CALL.
Currently it just holds the calling convention and flags
for isVarArgs and isTailCall.

And it has several utility methods, which eliminate magic
5+2*i and similar index computations in several places.

CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
nodes that are not CSE'd gracefully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56183 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e7de7e3574245fe4cdee3ea895c3aeabca04db63 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56182 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
00330db76463b811bc5908306a1c7248a1eeaf2b 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56182 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
be3034c28893617d31e9ce7ed9ad2e128e92877b 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Rely on instruction format to determine so_reg operand for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56181 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
cbefa59743c85da7ff0df234c49e44f9a951e195 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Rely on instruction format to determine so_reg operand for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56181 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
05fc9664018f867b2184589e8a04cc8f056cfa16 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Revert 56176. All those instruction formats are still needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56180 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
4c7e67abd5ca98e7bde0683982c935319477c50f 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Revert 56176. All those instruction formats are still needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56180 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
55375a44f97dfb4b396d5fdc1f60f967e1553d8e 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Accidentially flipped the condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56179 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
9ae284ff82ab1dc2eabf53e29b97cdf525f99814 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Accidentially flipped the condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56179 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
42d5ee062a4ff8ba63586e091ca68558ac143ed3 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add debug dumps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56178 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
efb9181429f459e5e04f1d79533bcdc3dbac2582 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add debug dumps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56178 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
a964b7dffe89d22569e96f5801886ef347d01b0a 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Eliminate unnecessary instruction formats.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56176 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
3eb25b3e793196ac12d225fd3fe37c5dc1365a2f 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Eliminate unnecessary instruction formats.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56176 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
RMInstrInfo.h
RMInstrInfo.td
49a9f2958dadbb1fcdc707ec003a61e9ceef8a4e 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Addrmode 1 S bit can be dynamically set. Look for CPSR def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56172 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
378c3a98dc3cc70f8562e5221d41ef23c38d87f2 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Addrmode 1 S bit can be dynamically set. Look for CPSR def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56172 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrFormats.td
5f1db7bf31eec999a55845f91778143b8b3e0aec 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Rewrite address mode 1 code emission routines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56171 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.h
00dc31b291ddde446299bf4b50011fb56758f211 13-Sep-2008 Evan Cheng <evan.cheng@apple.com> Rewrite address mode 1 code emission routines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56171 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMInstrInfo.h
f5aeb1a8e4cf272c7348376d185ef8d8267653e0 12-Sep-2008 Dan Gohman <gohman@apple.com> Rename ConstantSDNode::getValue to getZExtValue, for consistency
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56159 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
faeb4a35197737b3674fcfc34fd6e84220aa437b 12-Sep-2008 Dan Gohman <gohman@apple.com> Rename ConstantSDNode::getValue to getZExtValue, for consistency
with ConstantInt. This led to fixing a bug in TargetLowering.cpp
using getValue instead of getAPIntValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56159 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
e5d20f947a002519832005c40c6c60962616a476 11-Sep-2008 Jim Grosbach <grosbach@apple.com> udpate header comment: s/VP/VFP/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56126 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
31b3e6813e0ae7444a5c1d0de3d609e3865eca32 11-Sep-2008 Jim Grosbach <grosbach@apple.com> udpate header comment: s/VP/VFP/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56126 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
b2dfb89e0e7f1ee3e4fe4a3a1b3af148f0aec34f 09-Sep-2008 Dale Johannesen <dalej@apple.com> Fix logic for not emitting no-dead-strip for some
objects in llvm.used (thanks Anton). Makes visible
the magic 'l' prefix for symbols on Darwin which are
to be passed through the assembler, then removed at
linktime (previously all references to this had been
hidden in the ObjC FE code, oh well).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55973 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
2d34f9f9db93f596ea731c546d833ab5d6bb5735 09-Sep-2008 Dale Johannesen <dalej@apple.com> Fix logic for not emitting no-dead-strip for some
objects in llvm.used (thanks Anton). Makes visible
the magic 'l' prefix for symbols on Darwin which are
to be passed through the assembler, then removed at
linktime (previously all references to this had been
hidden in the ObjC FE code, oh well).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55973 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
8106b0a995512a847d3d9fb18cbb575c4d3913f2 08-Sep-2008 Dan Gohman <gohman@apple.com> Delete an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55915 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9e087ba2eca95563e56adb7c5fbf5b09d2afd497 08-Sep-2008 Dan Gohman <gohman@apple.com> Delete an unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55915 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ae73dc1448d25b02cabc7c64c86c64371453dda8 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
26f8c27c34b44f7d87de74d1de2128c1a02855bf 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
7794f2a3a7778bdbc9bdd861db1fe914450e0470 04-Sep-2008 Dale Johannesen <dalej@apple.com> Add intrinsics for log, log2, log10, exp, exp2.
No functional change (and no FE change to generate them).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55753 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
92b33088469bee2ea489b79574d26cd3847220ac 04-Sep-2008 Dale Johannesen <dalej@apple.com> Add intrinsics for log, log2, log10, exp, exp2.
No functional change (and no FE change to generate them).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55753 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
95ce1178e40d232cbf8d134030c3dcc8474c704d 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add Mac OS X compatible JIT callback routine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55625 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
5d582a69ee011cf14e31b5d27b0401db0102ce89 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> Add Mac OS X compatible JIT callback routine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55625 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
7602e11c3298ca740deb04a246c70560f1743dbd 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> Revamp ARM JIT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55624 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
efc43652ace14e19983914ef145d205e1fd45e00 02-Sep-2008 Evan Cheng <evan.cheng@apple.com> Revamp ARM JIT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55624 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
3aac788365086260b4f8318c5563db54cd2d97fb 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Control flow instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55601 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
10a9eb8212f68cf86bb53471070bbb9cc2c2b422 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Control flow instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55601 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
3c2ee4939b250963fa06483b4c082b279279f4e7 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> ldm / stm instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55599 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
d36b01cdc722ea8cd327995358a89a0f19802464 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> ldm / stm instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55599 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
5d2c1cf74d2f4794883af4e90bee320a344fa9e3 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> AXI2 and AXI3 instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55598 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
ae7b1d79526c501b622ee1f07273d1ca26d37c8f 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> AXI2 and AXI3 instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55598 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
4bbd5f8a9c39f8274219367895bcfc5d296573d7 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Reorganize instruction formats again; AXI1 encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55597 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
c5409a8a6317d547dadcdfa5dee7b42442d41d7f 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Reorganize instruction formats again; AXI1 encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55597 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
840917be2c58ba54d9a70204d08933f7ed107d67 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> addrmode3 instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55596 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
ac92c3f3cc6f3bdcecf8cf162af7113bd3203ceb 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> addrmode3 instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55596 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
0d14fc8cd5cee0b8527192c6820452e96d329e05 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Reorganize some instruction format definitions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55594 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
2e62b660eaa8d11d577b9843cb39a2b8db9cea78 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Reorganize some instruction format definitions. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55594 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
93912739c9afec2482ea3c824ba0e40ab9bdfc03 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Rest of addrmode2 instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55593 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
1a7c1ccaa5bdaf148a5344acd09d1e72c9995691 01-Sep-2008 Evan Cheng <evan.cheng@apple.com> Rest of addrmode2 instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55593 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
17222df0ecf8b0fbcf17b050dd18174ca845fbe6 31-Aug-2008 Evan Cheng <evan.cheng@apple.com> Addr2 word / byte load encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55591 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
da02002bbe2fbeb701f14caf6c3cdb5628c291b2 31-Aug-2008 Evan Cheng <evan.cheng@apple.com> Addr2 word / byte load encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55591 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
b7880ac470c8d83580e9327ecb2ce8efc40ca091 31-Aug-2008 Evan Cheng <evan.cheng@apple.com> Addr1 instructions opcodes are encoded in bits 21-24; encode S bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55590 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
af8f12871bcdc7eb292b3d363b9c6a3fb7c1440d 31-Aug-2008 Evan Cheng <evan.cheng@apple.com> Addr1 instructions opcodes are encoded in bits 21-24; encode S bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55590 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
ba705f62b1f78f4854e2640c7a5626a05417c646 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> TableGen'ing instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55533 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
ae8400bc730bd3f84a53affec72c269c76cdd549 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> TableGen'ing instruction encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55533 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
612b79edc92b305bc23a23fc5ef4066ca728921f 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> addrmode1 (data processing) instruction encoding: bits 5-6 are 0, bits 7-10 encode the opcode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55531 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
d075035cc4dab18a33fc75282a7b8bcd2c3323ff 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> addrmode1 (data processing) instruction encoding: bits 5-6 are 0, bits 7-10 encode the opcode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55531 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
3924f78a9637bcdacefaea2660095e1201661687 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> MVN is addrmode1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55530 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
40d6453fa5b5a806fd60636395a0f06555eb32ea 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> MVN is addrmode1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55530 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
130966411f83469b1d9b93df831a2f2146bd400f 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> More refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55528 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
34a46e1e09fadd67db9262f355af697c29a14cbc 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> More refactoring.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55528 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrThumb.td
37f25d989a3054b4742f6c92af94a312c26ffb2b 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> Refactor ARM instruction format definitions into a separate file. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55518 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
7b0249b93a3ca2fe31c9cf95360816a61ab9b517 29-Aug-2008 Evan Cheng <evan.cheng@apple.com> Refactor ARM instruction format definitions into a separate file. No functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55518 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrFormats.td
RMInstrInfo.td
ba36cb5242eb02b12b277f82b9efe497f7da4d7f 28-Aug-2008 Gabor Greif <ggreif@gmail.com> erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55504 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
1c80d116c6a34e02059593964233f2e641bdbc5b 28-Aug-2008 Gabor Greif <ggreif@gmail.com> erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55504 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
99a6cb92d173c142073416c81efe6d3daeb80b49 27-Aug-2008 Gabor Greif <ggreif@gmail.com> disallow direct access to SDValue::ResNo, provide a getter instead

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55394 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
46bf54702f3d06e26fcc6520ad347540696f263d 27-Aug-2008 Gabor Greif <ggreif@gmail.com> disallow direct access to SDValue::ResNo, provide a getter instead

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55394 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
940f83e772ca2007d62faffc83094bd7e8da6401 26-Aug-2008 Owen Anderson <resistor@mac.com> Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy requested
was inserted or not. This allows bitcast in fast isel to properly handle the case
where an appropriate reg-to-reg copy is not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55375 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
9fa72d9078dbead41d24462d0588135804999171 26-Aug-2008 Owen Anderson <resistor@mac.com> Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy requested
was inserted or not. This allows bitcast in fast isel to properly handle the case
where an appropriate reg-to-reg copy is not available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55375 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
944fac71e082cc2664cc71b4d3f6c72bab7143fb 24-Aug-2008 Chris Lattner <sabre@nondot.org> Switch the asmprinter (.ll) and all the stuff it requires over to
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).

Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".


A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.

This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
1fefaacfde9c8c1e88d97758b0b3a6aa587698c8 24-Aug-2008 Chris Lattner <sabre@nondot.org> Switch the asmprinter (.ll) and all the stuff it requires over to
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).

Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".


A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.

This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.cpp
RMConstantPoolValue.h
f350b277f32d7d47f86c0e54f4aec4d470500618 23-Aug-2008 Dan Gohman <gohman@apple.com> Move the point at which FastISel taps into the SelectionDAGISel
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.

Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.

To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
14a6644251df9ccb261bb4e3ab386b738df36633 23-Aug-2008 Dan Gohman <gohman@apple.com> Move the point at which FastISel taps into the SelectionDAGISel
process up to a higher level. This allows FastISel to leverage
more of SelectionDAGISel's infastructure, such as updating Machine
PHI nodes.

Also, implement transitioning from SDISel back to FastISel in
the middle of a block, so it's now possible to go back and
forth. This allows FastISel to hand individual CallInsts and other
complicated things off to SDISel to handle, while handling the rest
of the block itself.

To help support this, reorganize the SelectionDAG class so that it
is allocated once and reused throughout a function, instead of
being completely reallocated for each block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55219 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
ad3460c3c968e33c5b9a07104b9fe5a5c27ff55b 21-Aug-2008 Dan Gohman <gohman@apple.com> Simplify SelectRoot's interface, and factor out some common code
from all targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55124 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bd3f882ed9e9d043aef38f43e97b680d93100d9c 21-Aug-2008 Dan Gohman <gohman@apple.com> Simplify SelectRoot's interface, and factor out some common code
from all targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55124 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
cb3718832375a581c5ea23f15918f3ea447a446c 21-Aug-2008 Owen Anderson <resistor@mac.com> Use raw_ostream throughout the AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
847b99b2df4534498b514c439324e7c60de5c3b7 21-Aug-2008 Owen Anderson <resistor@mac.com> Use raw_ostream throughout the AsmPrinter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55092 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
6aa38987302a5c272900607b201aa95a0e1eafd3 18-Aug-2008 Evan Cheng <evan.cheng@apple.com> ARM asm printer can't handle dwarf info yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54913 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
426a19c7f371d125ec57a38d4954e4d4d4f78372 18-Aug-2008 Evan Cheng <evan.cheng@apple.com> ARM asm printer can't handle dwarf info yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54913 91177308-0d34-0410-b5e6-96231b3b80d8
smPrinter/ARMAsmPrinter.cpp
0bd89712c03c59ea43ce37763685e7f7c0bdd977 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Move ARM to pluggable asmprinter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54889 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/Makefile
akefile
74b114b4beb1498b6a031f55863c56e0fce433ee 17-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Move ARM to pluggable asmprinter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54889 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetMachine.cpp
RMTargetMachine.h
smPrinter/ARMAsmPrinter.cpp
smPrinter/Makefile
akefile
44eb65cf58e3ab9b5621ce72256d1621a18aeed7 15-Aug-2008 Owen Anderson <resistor@mac.com> Convert uses of std::vector in TargetInstrInfo to SmallVector. This change had to be propoagated down into all the targets and up into all clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54802 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
d131b5b3c78084f3b452b97a678c16e815f0a0d8 15-Aug-2008 Owen Anderson <resistor@mac.com> Convert uses of std::vector in TargetInstrInfo to SmallVector. This change had to be propoagated down into all the targets and up into all clients of this API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54802 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
1a6c683315bd88dea19b97a8752c0b8cc43e4285 12-Aug-2008 Jim Grosbach <grosbach@apple.com> Whitespace cleanup. Test commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54695 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
465fffc4bccda54a99ac2c852bf5915e6e30759c 12-Aug-2008 Jim Grosbach <grosbach@apple.com> Whitespace cleanup. Test commit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54695 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
f5b6a47bb57fb5ffc734416d4d5d993e1a06273b 08-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Handle visibility printing with all generality. Remove bunch of duplicate code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
78d69aa0e6ad2d32243e3b4e8ff28d6e4572313d 08-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Handle visibility printing with all generality. Remove bunch of duplicate code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
42ccc21ce7ae392d9a5c2958786190943fe9aae0 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> Undo most of r54519.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54534 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
eb774e1028fdf0bfc475431229b1b7e3c2471765 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> Undo most of r54519.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54534 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
711b6dce246c87b5d830966bed823d0e7aa15300 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> It's not legal to output a GV in a coalesced section if it's used in an ARM PIC relative constantpool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54519 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f1012ce19140bc114c4bad429824ff150e623f38 08-Aug-2008 Evan Cheng <evan.cheng@apple.com> It's not legal to output a GV in a coalesced section if it's used in an ARM PIC relative constantpool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54519 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0f3cc657387d44cd7c56e4ddea896a50ab9106b8 07-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Switch ARM to new section handling stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54458 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
3cc6efa84bf118b262343b5f15754a4f5d3a6dd2 07-Aug-2008 Anton Korobeynikov <asl@math.spbu.ru> Switch ARM to new section handling stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54458 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
475871a144eb604ddaf37503397ba0941442e5fb 27-Jul-2008 Dan Gohman <gohman@apple.com> Rename SDOperand to SDValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
8181bd1f95ae9994edb390dd9acd0b7b12375219 27-Jul-2008 Dan Gohman <gohman@apple.com> Rename SDOperand to SDValue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54128 91177308-0d34-0410-b5e6-96231b3b80d8
RMAddressingModes.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
d1b3da621bf5134d304d02177a2c6ff912b0d18e 25-Jul-2008 Evan Cheng <evan.cheng@apple.com> Teach ARM isLegalAddressingMode to handle unknown type without crashing. This fixes pr2589.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54004 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ad7295eddc6feed1df1cc531a9d513b07acda954 25-Jul-2008 Evan Cheng <evan.cheng@apple.com> Teach ARM isLegalAddressingMode to handle unknown type without crashing. This fixes pr2589.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54004 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e8be6c63915e0389f1eef6b53c64300d13b2ce99 17-Jul-2008 Dan Gohman <gohman@apple.com> Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bd68c79fb898ebb9b42140fb39bab3baf3cb8f4e 17-Jul-2008 Dan Gohman <gohman@apple.com> Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
78d60458d558877a5bf7e326511e302bcf75b8ee 11-Jul-2008 Chris Lattner <sabre@nondot.org> add support for returning i128, PR2532.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53472 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dc4ac473d31d85958aa22f78314109082502922f 11-Jul-2008 Chris Lattner <sabre@nondot.org> add support for returning i128, PR2532.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53472 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
dc2fbddd9d204e904b8e61d1da1428579e7c55af 11-Jul-2008 Dan Gohman <gohman@apple.com> Trim unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53471 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
02983113c9d593fc6d0e7c769e88754a980da8bd 11-Jul-2008 Dan Gohman <gohman@apple.com> Trim unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53471 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantPoolValue.h
f2452c5f48e13cf3a9e620d22d5040a90133ddca 09-Jul-2008 Dale Johannesen <dalej@apple.com> Emit debug info for data-only files. ARM version.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53360 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2f85df10e8d77563892a880a4e35c7f5d3132ffb 09-Jul-2008 Dale Johannesen <dalej@apple.com> Emit debug info for data-only files. ARM version.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53360 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
526be70f94538a2cc131ab1b0fd9f7264e00d297 09-Jul-2008 Evan Cheng <evan.cheng@apple.com> Back out 53254. It broke ppc debug info codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
5cda776e7b93ac28d6ac6d646078e299ece7906c 09-Jul-2008 Evan Cheng <evan.cheng@apple.com> Back out 53254. It broke ppc debug info codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53280 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f71cb9b3ed1d7b3e438e9990ce1587ba275e70bf 08-Jul-2008 Dale Johannesen <dalej@apple.com> Make debug info come out in data-only files.

This is a question of the debugging setup code not
being called at the right time, and it's called from
target-dependent code for some reason. I have only
attempted to fix Darwin, but I'm pretty sure it's
broken elsewhere; I'll leave that to people who can
test it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53254 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ccf4061bc5fb2d49f92e7c3639e0b7f849bcd797 08-Jul-2008 Dale Johannesen <dalej@apple.com> Make debug info come out in data-only files.

This is a question of the debugging setup code not
being called at the right time, and it's called from
target-dependent code for some reason. I have only
attempted to fix Darwin, but I'm pretty sure it's
broken elsewhere; I'll leave that to people who can
test it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53254 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8e5f2c6f65841542e2a7092553fe42a00048e4c7 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for MachineInstrs, MachineBasicBlocks, and
MachineMemOperands. The pools are owned by MachineFunctions.

This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
221a4371f95ebdb25ac7d4363accb35c88cb5ea4 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for MachineInstrs, MachineBasicBlocks, and
MachineMemOperands. The pools are owned by MachineFunctions.

This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
4542611bb9793e8376d7d5f33b4a1e2d11712894 07-Jul-2008 Dan Gohman <gohman@apple.com> Minor const-correctness fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53196 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
e4da641adc6f0989b558036c9c238ff3ce050669 07-Jul-2008 Dan Gohman <gohman@apple.com> Minor const-correctness fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53196 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
1002c0203450620594a85454c6a095ca94b87cb2 07-Jul-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e887fdff72486ad0e83f402c8c105fa91fff1036 07-Jul-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53179 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
126d90770bdb17e6925b2fe26de99aa079b7b9b3 04-Jul-2008 Duncan Sands <baldrick@free.fr> Rather than having a different custom legalization
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes. No change if the
new LegalizeTypes infrastructure is not turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53137 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
ac496a17678473310a3c468a8ac5a5a30426876c 04-Jul-2008 Duncan Sands <baldrick@free.fr> Rather than having a different custom legalization
hook for each way in which a result type can be
legalized (promotion, expansion, softening etc),
just use one: ReplaceNodeResults, which returns
a node with exactly the same result types as the
node passed to it, but presumably with a bunch of
custom code behind the scenes. No change if the
new LegalizeTypes infrastructure is not turned on.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53137 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
9f1c8317a4676945b4961ddb9827ef2412551620 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
e52c191890057ab4cec065505b0b27f8586eb1b5 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
f660c171c838793b87b7e58e91609cecf256378d 03-Jul-2008 Owen Anderson <resistor@mac.com> Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction
Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53058 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
c6959726ab99e740101d8b5b663aee5fa1332791 03-Jul-2008 Owen Anderson <resistor@mac.com> Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction
Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53058 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
4bdcb61af33399d4e01fdf3c47ca1f1f5356e370 02-Jul-2008 Duncan Sands <baldrick@free.fr> Add a new getMergeValues method that does not need
to be passed the list of value types, and use this
where appropriate. Inappropriate places are where
the value type list is already known and may be
long, in which case the existing method is more
efficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53035 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
698842f7b62573cc6a3af154727e5d59daea4c1d 02-Jul-2008 Duncan Sands <baldrick@free.fr> Add a new getMergeValues method that does not need
to be passed the list of value types, and use this
where appropriate. Inappropriate places are where
the value type list is already known and may be
long, in which case the existing method is more
efficient.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53035 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4406604047423576e36657c7ede266ca42e79642 01-Jul-2008 Dan Gohman <gohman@apple.com> Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.

Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.

This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
fa607c9cc5d2bd142ad8352bdf5e446517562688 01-Jul-2008 Dan Gohman <gohman@apple.com> Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.

Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.

This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
7f460203b0c5350e9b2c592f438e40f7a7de6e45 30-Jun-2008 Dan Gohman <gohman@apple.com> Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its
purpose, and give it a custom SDNode subclass so that it doesn't
need to have line number, column number, filename string, and
directory string, all existing as individual SDNodes to be the
operands.

This was the only user of ISD::STRING, StringSDNode, etc., so
remove those and some associated code.

This makes stop-points considerably easier to read in
-view-legalize-dags output, and reduces overhead (creating new
nodes and copying std::strings into them) on code containing
debugging information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52924 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
472d12c47f1704853971a564e03c5490ce5066b7 30-Jun-2008 Dan Gohman <gohman@apple.com> Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its
purpose, and give it a custom SDNode subclass so that it doesn't
need to have line number, column number, filename string, and
directory string, all existing as individual SDNodes to be the
operands.

This was the only user of ISD::STRING, StringSDNode, etc., so
remove those and some associated code.

This makes stop-points considerably easier to read in
-view-legalize-dags output, and reduces overhead (creating new
nodes and copying std::strings into them) on code containing
debugging information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52924 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
db8d56b825efeb576d67b9dbe39d736d93306222 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> Split scheduling from instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52923 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
34fd4f3c0eb0d6c2ea2d2208a68bf693ca123d18 30-Jun-2008 Evan Cheng <evan.cheng@apple.com> Split scheduling from instruction selection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52923 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f9516208e57364ab1e7d8748af1f59a2ea5fb572 30-Jun-2008 Duncan Sands <baldrick@free.fr> Revert the SelectionDAG optimization that makes
it impossible to create a MERGE_VALUES node with
only one result: sometimes it is useful to be able
to create a node with only one result out of one of
the results of a node with more than one result, for
example because the new node will eventually be used
to replace a one-result node using ReplaceAllUsesWith,
cf X86TargetLowering::ExpandFP_TO_SINT. On the other
hand, most users of MERGE_VALUES don't need this and
for them the optimization was valuable. So add a new
utility method getMergeValues for creating MERGE_VALUES
nodes which by default performs the optimization.
Change almost everywhere to use getMergeValues (and
tidy some stuff up at the same time).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52893 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f19591c91ec39496d58bf4835640d25abc026da9 30-Jun-2008 Duncan Sands <baldrick@free.fr> Revert the SelectionDAG optimization that makes
it impossible to create a MERGE_VALUES node with
only one result: sometimes it is useful to be able
to create a node with only one result out of one of
the results of a node with more than one result, for
example because the new node will eventually be used
to replace a one-result node using ReplaceAllUsesWith,
cf X86TargetLowering::ExpandFP_TO_SINT. On the other
hand, most users of MERGE_VALUES don't need this and
for them the optimization was valuable. So add a new
utility method getMergeValues for creating MERGE_VALUES
nodes which by default performs the optimization.
Change almost everywhere to use getMergeValues (and
tidy some stuff up at the same time).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52893 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
83ec4b6711980242ef3c55a4fa36b2d7a39c1bfb 06-Jun-2008 Duncan Sands <baldrick@free.fr> Wrap MVT::ValueType in a struct to get type safety
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
92c439168b552f73b1459d8ce1e31975cdca6d2a 06-Jun-2008 Duncan Sands <baldrick@free.fr> Wrap MVT::ValueType in a struct to get type safety
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52044 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
428ac54894f80ba4848d5f13576643f289412e6f 03-Jun-2008 Dale Johannesen <dalej@apple.com> Add StringConstantPrefix to control what the
assembler names of string constants look like.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51909 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
8f03a204f57fcb59b6ac754a632720cb6054152c 03-Jun-2008 Dale Johannesen <dalej@apple.com> Add StringConstantPrefix to control what the
assembler names of string constants look like.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51909 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
c215b3ef5d9627f5fb6fe9034e46bc29ae592916 19-May-2008 Dale Johannesen <dalej@apple.com> Handle quoted names when constructing $stub's,
$non_lazy_ptr's and $lazy_ptr's.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51277 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a21b5207101fea6703ac85290dbac506b6915dc2 19-May-2008 Dale Johannesen <dalej@apple.com> Handle quoted names when constructing $stub's,
$non_lazy_ptr's and $lazy_ptr's.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51277 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c9f5f3f64f896d0a8c8fa35a1dd98bc57b8960f6 14-May-2008 Dan Gohman <gohman@apple.com> Change target-specific classes to use more precise static types.
This eliminates the need for several awkward casts, including
the last dynamic_cast under lib/Target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51091 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
RMTargetMachine.h
b41dfbac74597086869acab8c158bab979ff5d1b 14-May-2008 Dan Gohman <gohman@apple.com> Change target-specific classes to use more precise static types.
This eliminates the need for several awkward casts, including
the last dynamic_cast under lib/Target.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51091 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
RMTargetMachine.h
844731a7f1909f55935e3514c9e713a62d67662e 13-May-2008 Dan Gohman <gohman@apple.com> Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
089efffd7d1ca0d10522ace38d36e0a67f4fac2d 13-May-2008 Dan Gohman <gohman@apple.com> Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
3bf6accfea3aece45a366a58ade187eb6e5b9b92 06-May-2008 Chris Lattner <sabre@nondot.org> Match things like 'armv5tejl-unknown-linux-gnu' for PR2290


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50698 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
accc87c1d9e3f4dacefcba2e1b8621e6ab5d8dd5 06-May-2008 Chris Lattner <sabre@nondot.org> Match things like 'armv5tejl-unknown-linux-gnu' for PR2290


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50698 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
1f13c686df75ddbbe15b208606ece4846d7479a8 28-Apr-2008 Dan Gohman <gohman@apple.com> Fix the SVOffset values for loads and stores produced by
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50359 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
65118f43f2da7c789cd2fde6908bdac8774a2304 28-Apr-2008 Dan Gohman <gohman@apple.com> Fix the SVOffset values for loads and stores produced by
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50359 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
51cc3c13eac78da242f0518fc42580e48dd5304f 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function
the stub will resolve.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
RMJITInfo.h
2b483b5fb10fd3e6223b824726c9403bb47c1e1c 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Correlate stubs with functions in JIT: when emitting a stub, the JIT tells the memory manager which function
the stub will resolve.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49814 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
RMJITInfo.h
52e724ad7e679ee590f4bd763d55280586a8f1bc 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Infrastructure for getting the machine code size of a function and an instruction. X86, PowerPC and ARM are implemented




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49809 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
cb162a0601c07804318bea53afe3f10f87567ef0 16-Apr-2008 Nicolas Geoffray <nicolas.geoffray@lip6.fr> Infrastructure for getting the machine code size of a function and an instruction. X86, PowerPC and ARM are implemented




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49809 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
29e4bdbf27c5f03b12dd2bc41d9ccb0d5f3dfdf4 14-Apr-2008 Dan Gohman <gohman@apple.com> Fix const-correctness issues with the SrcValue handling in the
memory intrinsic expansion code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49666 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
64fd1a959022d190ca01e9a8ab665ea97c03546c 14-Apr-2008 Dan Gohman <gohman@apple.com> Fix const-correctness issues with the SrcValue handling in the
memory intrinsic expansion code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49666 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
707e0184233f27e0e9f9aee0309f2daab8cfe7f8 12-Apr-2008 Dan Gohman <gohman@apple.com> Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.

Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.

This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.

Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.

This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.h
e8b391ea3cf33a68b0c5eeafc448c53b412dd61f 12-Apr-2008 Dan Gohman <gohman@apple.com> Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.

Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.

This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.

Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.

This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49572 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.h
110cf48752dcf86c6d95698c08805f1dd534ac83 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Unbreak ARM / Thumb soft FP support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49012 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a87400339fcb3e087996e7ad534816d640c8b716 01-Apr-2008 Evan Cheng <evan.cheng@apple.com> Unbreak ARM / Thumb soft FP support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49012 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ca1267c02b025cc719190b05f9e1a5d174a9caf7 31-Mar-2008 Evan Cheng <evan.cheng@apple.com> Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48995 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
7d73efce9cfa7af4e1747dbd8c4bf2b948816777 31-Mar-2008 Evan Cheng <evan.cheng@apple.com> Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48995 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
d27c991cebe48fdf82b5d9eec6c2a1a244f82622 30-Mar-2008 Chris Lattner <sabre@nondot.org> Fix "Control reaches the end of non-void function" warnings,
patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
2b06cd3076bbc4547d58109722c79b33366d594d 30-Mar-2008 Chris Lattner <sabre@nondot.org> Fix "Control reaches the end of non-void function" warnings,
patch by David Chisnall.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48963 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
950a4c40b823cd4f09dc71be635229246dfd6cac 25-Mar-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
RMJITInfo.h
40bd38ebb955c55a8ff7ea4ba252afbb093bc3d2 25-Mar-2008 Dan Gohman <gohman@apple.com> Add explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48801 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
RMJITInfo.h
cfbb2f074da2842e42956d3b4c21e91b37f36f06 25-Mar-2008 Dan Gohman <gohman@apple.com> A quick nm audit turned up several fixed tables and objects that were
marked read-write. Use const so that they can be allocated in a
read-only segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
12300e1e31559e34d96e533506f74f7cb77020a2 25-Mar-2008 Dan Gohman <gohman@apple.com> A quick nm audit turned up several fixed tables and objects that were
marked read-write. Use const so that they can be allocated in a
read-only segment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48800 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
066114555d27d6464762cbcfe0d118b7808b37c1 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Add \t after .set. Fix by Jay Freeman.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48753 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
f068865fca6c1da137bad228b52a77635687752f 25-Mar-2008 Evan Cheng <evan.cheng@apple.com> Add \t after .set. Fix by Jay Freeman.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48753 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
276dcbdc8db6614cfd5004dc7dc35e437ddf9c58 21-Mar-2008 Duncan Sands <baldrick@free.fr> Introduce a new node for holding call argument
flags. This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines. There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness. As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48640 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c93fae3679c1b0ce8da92aaf825630fcc8580a00 21-Mar-2008 Duncan Sands <baldrick@free.fr> Introduce a new node for holding call argument
flags. This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines. There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness. As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48640 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
da47e6e0d003c873da960361549e57ee4617c301 15-Mar-2008 Evan Cheng <evan.cheng@apple.com> Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48380 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrVFP.td
3c0eda5a21a0e79a345fc9da0489fdbb5ef6b07e 15-Mar-2008 Evan Cheng <evan.cheng@apple.com> Replace all target specific implicit def instructions with a target independent one: TargetInstrInfo::IMPLICIT_DEF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48380 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrVFP.td
bfae83139dcb4fffd50b939e1b1224b0126f04d4 11-Mar-2008 Dan Gohman <gohman@apple.com> Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48256 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
e34aa7774f75505a532c5b1de6af79704ad72f81 11-Mar-2008 Dan Gohman <gohman@apple.com> Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48256 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
d2cde68855125b6815b1575f29cd96927614b0cd 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Default ISD::PREFETCH to expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48169 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8d51ab3e4bb3f45ab8818519c5d27154cecf8b72 10-Mar-2008 Evan Cheng <evan.cheng@apple.com> Default ISD::PREFETCH to expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48169 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b8cafe3427a168414400e5dfcbea78996792d2c3 10-Mar-2008 Dale Johannesen <dalej@apple.com> Increase ISD::ParamFlags to 64 bits. Increase the ByValSize
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
322e3b73f704add3cd636a47381bacf1c6b2aa00 10-Mar-2008 Dale Johannesen <dalej@apple.com> Increase ISD::ParamFlags to 64 bits. Increase the ByValSize
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
27b7db549e4c5bff4579d209304de5628513edeb 08-Mar-2008 Evan Cheng <evan.cheng@apple.com> Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48042 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d1d68074a0e6eebbfdde72a29e14f1cd3e831c67 08-Mar-2008 Evan Cheng <evan.cheng@apple.com> Implement x86 support for @llvm.prefetch. It corresponds to prefetcht{0|1|2} and prefetchnta instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48042 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6130f66eaae89f8878590796977678afa8448926 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor code. Remove duplicated functions that basically do the same thing as
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
c7daf1f37a8c97e5ffc44f52e818cf127fae178e 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor code. Remove duplicated functions that basically do the same thing as
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
fb8075d03f5c87bd57dcc9c5f2304f6b13c55aad 28-Feb-2008 Evan Cheng <evan.cheng@apple.com> Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47703 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
45c1edb4f781571f11fefb07a46a2c0f08523650 28-Feb-2008 Evan Cheng <evan.cheng@apple.com> Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47703 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6ef781f3ce0d0311004adba9d1e7dbd7950918dd 27-Feb-2008 Bill Wendling <isanbard@gmail.com> Final de-tabification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47663 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6c02cd29b5ca35947c8414e7a20667066db64409 27-Feb-2008 Bill Wendling <isanbard@gmail.com> Final de-tabification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47663 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d36531249a9a9500e516148e7e72d4c0a7a4d0ee 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Spiller now remove unused spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47657 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
da872539ba284fe9ded04f4231f88c90fc77ea5c 27-Feb-2008 Evan Cheng <evan.cheng@apple.com> Spiller now remove unused spill slots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47657 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
74ab84c31ef64538a1b56e1f282e49303412ad17 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
would have been a Godsend here!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8eeb97927530a1e53c3529a9b93f94239056d1b4 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool
would have been a Godsend here!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47625 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7c1c261272b43f2a9397c3052819b92c53918075 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Remove bunch of gcc 4.3-related warnings from Target


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47369 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
8c90d2a37fdd3b14401035810d3644b2591b992a 20-Feb-2008 Anton Korobeynikov <asl@math.spbu.ru> Remove bunch of gcc 4.3-related warnings from Target


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47369 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
d497d9fab6e90499c703f3e672ec001dbfa074f9 16-Feb-2008 Andrew Lenharth <andrewl@lenharth.org> I cannot find a libgcc function for this builtin. Therefor expanding it to a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47213 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0531ec5fcd743940a1e3074e94d764cfdbc8c135 16-Feb-2008 Andrew Lenharth <alenhar2@cs.uiuc.edu> I cannot find a libgcc function for this builtin. Therefor expanding it to a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47213 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ec321b4d64ee02a1b90021c09d9513618787c6e8 15-Feb-2008 Chris Lattner <sabre@nondot.org> Handle \n's in value names for more targets. The asm printers
really really really need refactoring :(



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47171 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2b638a76689714aa60182159e7abe69f6b9c05bd 15-Feb-2008 Chris Lattner <sabre@nondot.org> Handle \n's in value names for more targets. The asm printers
really really really need refactoring :(



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47171 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
00fee65fd21f9615d1a604b8b7d42cd16a3f6b47 14-Feb-2008 Duncan Sands <baldrick@free.fr> In TargetLowering::LowerCallTo, don't assert that
the return value is zero-extended if it isn't
sign-extended. It may also be any-extended.
Also, if a floating point value was returned
in a larger floating point type, pass 1 as the
second operand to FP_ROUND, which tells it
that all the precision is in the original type.
I think this is right but I could be wrong.
Finally, when doing libcalls, set isZExt on
a parameter if it is "unsigned". Currently
isSExt is set when signed, and nothing is
set otherwise. This should be right for all
calls to standard library routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ead972ea45c0c4dad4e2e5c8da1ad24abda2ef47 14-Feb-2008 Duncan Sands <baldrick@free.fr> In TargetLowering::LowerCallTo, don't assert that
the return value is zero-extended if it isn't
sign-extended. It may also be any-extended.
Also, if a floating point value was returned
in a larger floating point type, pass 1 as the
second operand to FP_ROUND, which tells it
that all the precision is in the original type.
I think this is right but I could be wrong.
Finally, when doing libcalls, set isZExt on
a parameter if it is "unsigned". Currently
isSExt is set when signed, and nothing is
set otherwise. This should be right for all
calls to standard library routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e179584f9b740cf3a36bde70f8cab40de59b8081 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Change how FP immediates are handled.
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.

This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.

As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47121 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e2ba64fc3785eb8bcc9a7fc2091c56ef056cbc07 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Change how FP immediates are handled.
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.

This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.

As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47121 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
977a76fbb6ea1b87dfd7fbbe2ae2afb63e982ff3 13-Feb-2008 Dan Gohman <gohman@apple.com> Simplify some logic in ComputeMaskedBits. And change ComputeMaskedBits
to pass the mask APInt by value, not by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47096 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
d0dfc77ceb77510b470773f2b3725de475fc6bae 13-Feb-2008 Dan Gohman <djg@cray.com> Simplify some logic in ComputeMaskedBits. And change ComputeMaskedBits
to pass the mask APInt by value, not by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47096 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
9f72d1a73029ed3bfb1f8ced755a1aeeb36fb4f1 13-Feb-2008 Chris Lattner <sabre@nondot.org> don't try to avoid inserting loads when lowering FORMAL_ARGUMENTS.
DAGCombine is now quite good at zapifying them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47053 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
60069456a6994c4ff67051cfb9ebac0d964e2f72 13-Feb-2008 Chris Lattner <sabre@nondot.org> don't try to avoid inserting loads when lowering FORMAL_ARGUMENTS.
DAGCombine is now quite good at zapifying them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47053 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
fd29e0eb060ea8b4d490860329234d2ae5f5952e 13-Feb-2008 Dan Gohman <gohman@apple.com> Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t.
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47039 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
229fa05f26826290b9d128e7f6ffbc4889478c25 13-Feb-2008 Dan Gohman <djg@cray.com> Convert SelectionDAG::ComputeMaskedBits to use APInt instead of uint64_t.
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47039 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
3006c39e3a2f137dcb0f1b52d8a1c60a9657ed44 13-Feb-2008 Dale Johannesen <dalej@apple.com> __DATA not __DATA__ is the right segment name on darwin.
Spotted by Nick Kledzik.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47037 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
576dc02040d8c3cead1418c184b9693e9996291e 13-Feb-2008 Dale Johannesen <dalej@apple.com> __DATA not __DATA__ is the right segment name on darwin.
Spotted by Nick Kledzik.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47037 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
bf1caa98549317a8fe84b6f67a2209db9eeededc 12-Feb-2008 Nate Begeman <natebegeman@mac.com> Remove some dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47036 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
a12a0a3e3e78ffc20e113d04756bed36c7a194d0 12-Feb-2008 Nate Begeman <natebegeman@mac.com> Remove some dead code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47036 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6f0d024a534af18d9e60b3ea757376cd8a3a980e 10-Feb-2008 Dan Gohman <gohman@apple.com> Rename MRegisterInfo to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMTargetMachine.h
1e57df3b4fd69b2a316d8931dee1b9e033ae3a9a 10-Feb-2008 Dan Gohman <djg@cray.com> Rename MRegisterInfo to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMTargetMachine.h
5fd79d0560570fed977788a86fa038b898564dfa 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> It's not always safe to fold movsd into xorpd, etc. Check the alignment of the load address first to make sure it's 16 byte aligned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46893 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
4f2f3f6dce7d350282947012884573f9ef19677c 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> It's not always safe to fold movsd into xorpd, etc. Check the alignment of the load address first to make sure it's 16 byte aligned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46893 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
69de1932b350d7cdfc0ed1f4198d6f78c7822a02 06-Feb-2008 Dan Gohman <gohman@apple.com> Re-apply the memory operand changes, with a fix for the static
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
12a9c08252c8e0fcdf5dedcdbf182251012a6fab 06-Feb-2008 Dan Gohman <djg@cray.com> Re-apply the memory operand changes, with a fix for the static
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
4e3f5a4e9c13f216856515e6f000881f2c850736 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46724 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c439a85b1af63b2854c47e9322e553fe6180f4bc 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> Dwarf requires variable entries to be in the source order. Right now, since we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46724 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c451ac0a42f06355976e5d7d8bc45da16474e3f0 05-Feb-2008 Nate Begeman <natebegeman@mac.com> This method should be virtual



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46723 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
2f024ae9f98357d906a148964f3ba64b74a2c949 05-Feb-2008 Nate Begeman <natebegeman@mac.com> This method should be virtual



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46723 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
48a65511d0a9d01cba7e146f9aa1187000a290d3 04-Feb-2008 Nate Begeman <natebegeman@mac.com> Eliminate some redundant code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46720 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c6535bd24fb45d7e091634caa9cdcceb4cfd04c8 04-Feb-2008 Nate Begeman <natebegeman@mac.com> Eliminate some redundant code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46720 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
3d62d780abbe0c2dd8edd7dd37a27365b2032d73 03-Feb-2008 Chris Lattner <sabre@nondot.org> explicitly include Compiler.h instead of getting it from tblgen in the middle of a class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46676 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
93c741add461a257df7bddf8f4700fe4e65f2ef8 03-Feb-2008 Chris Lattner <sabre@nondot.org> explicitly include Compiler.h instead of getting it from tblgen in the middle of a class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46676 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a47b9bcbdec16c2fa7cee84e72b5d0a306519a7a 03-Feb-2008 Chris Lattner <sabre@nondot.org> don't do ReplaceUses on a result that doesn't exist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b9843c70ed88fd1d62542b95af093c58eba0ca5a 03-Feb-2008 Chris Lattner <sabre@nondot.org> don't do ReplaceUses on a result that doesn't exist.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4eecdeb3faf5df864790175da5d58301b751ec11 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> Get rid of the annoying blank lines before labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46667 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8b9886912f2d572f2a64ff112131184c41dabae4 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> Get rid of the annoying blank lines before labels.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46667 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a844bdeab31ef04221e7ef59a8467893584cc14d 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46659 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
2e28d627d086d38a7e62fc2e3b6f4b9ef24ecf07 02-Feb-2008 Evan Cheng <evan.cheng@apple.com> SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46659 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
334dc1f58d617dcff969a2e107febaae42bbc883 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
36ddaf294db6fbbbac5e79ca0e2d166ea36fe187 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c6c391daddbafa722d9ca87d18f204e9a6e617a3 31-Jan-2008 Dan Gohman <gohman@apple.com> Create a new class, MemOperand, for describing memory references
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.

Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.

Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f14b4476a7dfade92c1f57f5702175f283960f30 31-Jan-2008 Dan Gohman <djg@cray.com> Create a new class, MemOperand, for describing memory references
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.

Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.

Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ff9b373e8f5006c629af81e2619778b4c4f5249e 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert
instruction at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46562 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e637db117eb826a539e230590ee6a5db585f1ffb 30-Jan-2008 Evan Cheng <evan.cheng@apple.com> Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert
instruction at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46562 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b625f2f8960de32bc973092aaee8ac62863006fe 30-Jan-2008 Dan Gohman <gohman@apple.com> Factor the addressing mode and the load/store VT out of LoadSDNode
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46538 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
9a4c92c2b43e51ac531e0dbc319855635a14f905 30-Jan-2008 Dan Gohman <djg@cray.com> Factor the addressing mode and the load/store VT out of LoadSDNode
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46538 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
200e90c74bff0b533c87e2d781815fa61af7b4d6 28-Jan-2008 Bill Wendling <isanbard@gmail.com> If the function has no machine instructions, then emit a "nop" so that
the function label isn't associated with something it shouldn't be.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46449 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
43a7816450caef287b0f950ff751da97b592c87d 28-Jan-2008 Bill Wendling <isanbard@gmail.com> If the function has no machine instructions, then emit a "nop" so that
the function label isn't associated with something it shouldn't be.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46449 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f9c98e650d2795b8edfae8e1560c221029df218b 23-Jan-2008 Duncan Sands <baldrick@free.fr> The last pieces needed for loading arbitrary
precision integers. This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on. While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46280 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
082524cde46d15558f6270208e32cea0fe774586 23-Jan-2008 Duncan Sands <baldrick@free.fr> The last pieces needed for loading arbitrary
precision integers. This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on. While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46280 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
25edeb32e77fdabbb986787a91a46435dfbaf716 23-Jan-2008 Dale Johannesen <dalej@apple.com> Honor explicit section information on Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46267 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ae4f62fc7e13cbe25f853fe56e551a2a1ca39cc0 23-Jan-2008 Dale Johannesen <dalej@apple.com> Honor explicit section information on Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46267 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
25a0195114c4fa1e22a7b71b6d80aef48d537b7d 18-Jan-2008 Dale Johannesen <dalej@apple.com> Revert the part of 45849 that treated weak globals
as weak globals rather than commons. While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46147 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
42c3dcfbb032a2acde040463afa1a751f8c9e421 18-Jan-2008 Dale Johannesen <dalej@apple.com> Revert the part of 45849 that treated weak globals
as weak globals rather than commons. While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46147 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ddf89566a93081cb230bb9406a72ab2d3eada4a7 17-Jan-2008 Chris Lattner <sabre@nondot.org> This commit changes:

1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.

The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:

_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret

instead of:

_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46140 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
3bc0850bd4beeec5b464fce8513d3c749ee413eb 17-Jan-2008 Chris Lattner <sabre@nondot.org> This commit changes:

1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.

The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:

_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret

instead of:

_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46140 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
48be23cd65313b055ca80acb843ed244b18cd980 15-Jan-2008 Chris Lattner <sabre@nondot.org> rename SDTRet -> SDTNone.
Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46017 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
3d25455bc1bcf846ea3df9060bc04aee468cdcd3 15-Jan-2008 Chris Lattner <sabre@nondot.org> rename SDTRet -> SDTNone.
Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46017 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
7047dd4d227b5fb2e5ae0cb2e7d5de1d0098ad60 15-Jan-2008 Owen Anderson <resistor@mac.com> Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46016 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
92a609a8e853af6edc4d5660a8451950bb2e0afb 15-Jan-2008 Owen Anderson <resistor@mac.com> Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46016 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
5080f4d9919d39b367891dc51e739c571a66036c 11-Jan-2008 Chris Lattner <sabre@nondot.org> rename MachineInstr::setInstrDescriptor -> setDesc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45871 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
86bb02fda2d7f62186a316e112d77a98974520b8 11-Jan-2008 Chris Lattner <sabre@nondot.org> rename MachineInstr::setInstrDescriptor -> setDesc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45871 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
12591d70f6c98a5c9989df2afb88e8590fc77bfa 11-Jan-2008 Dale Johannesen <dalej@apple.com> Weak zeroes don't go in bss on Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45849 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
eafd8b5511c33bdd80c66ebdaced4d6d59837ffd 11-Jan-2008 Dale Johannesen <dalej@apple.com> Weak zeroes don't go in bss on Darwin.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45849 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
9b37aaf04c633c68c9ef09d3991d9acfbef9f754 10-Jan-2008 Chris Lattner <sabre@nondot.org> get def use info more correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45821 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
ca4e0fe76aefbdea8c5c5c215e88130bac83e242 10-Jan-2008 Chris Lattner <sabre@nondot.org> get def use info more correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45821 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
325474e06502eb0a593f4ef5a322bab2751f16dc 08-Jan-2008 Evan Cheng <evan.cheng@apple.com> Only mark instructions that load a single value without extension as isSimpleLoad = 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45727 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
8610a3baa0f788d7f01631b18ae8fcca70cf65a7 08-Jan-2008 Evan Cheng <evan.cheng@apple.com> Only mark instructions that load a single value without extension as isSimpleLoad = 1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45727 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
749c6f6b5ed301c84aac562e414486549d7b98eb 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
5b930374090970d785c0f77c2afc6d0a24c01f39 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
0ff23966feb90618bec4d085095ffbc28426e691 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename all the M_* flags to be namespace qualified enums, and switch
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45692 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
d8529abca155e9add3d038481c9c7db119220a2b 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename all the M_* flags to be namespace qualified enums, and switch
all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45692 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
349c4952009525b27383e2120a6b3c998f39bd09 07-Jan-2008 Chris Lattner <sabre@nondot.org> Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
0c2a4f39ad5cdb32a2c4e20f787798d8af645393 07-Jan-2008 Chris Lattner <sabre@nondot.org> Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
cc8cd0cbf12c12916d4b38ef0de5be5501c8270e 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove MachineOpCode typedef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45679 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
99aa33745d9f0a255da9e56315993e68997e1e21 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove MachineOpCode typedef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45679 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
69244300b8a0112efb44b6273ecea4ca6264b8cf 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects
that it is cheap and efficient to get.

Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.

Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
6232760ee0d566bcf09b2f20bae65c1d6e73946c 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects
that it is cheap and efficient to get.

Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.

Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
43dbe05279b753aabda571d9c83eaeb36987001a 07-Jan-2008 Owen Anderson <resistor@mac.com> Move even more functionality from MRegisterInfo into TargetInstrInfo.

Some day I'll get it all moved over...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45672 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
9a184efddb63e9b0327cb6cfccb9130fbfe464c5 07-Jan-2008 Owen Anderson <resistor@mac.com> Move even more functionality from MRegisterInfo into TargetInstrInfo.

Some day I'll get it all moved over...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45672 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
834f1ce0312e3d00d836f9560cb63182c2c4570f 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45667 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMRegisterInfo.cpp
1a1932c83d6b6fcbf089eee3f97b65a23de22a92 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45667 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMRegisterInfo.cpp
2e48a70b35635165703838fc8d3796b664207aa1 06-Jan-2008 Chris Lattner <sabre@nondot.org> rename isStore -> mayStore to more accurately reflect what it captures.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMRegisterInfo.cpp
6887b14d9f14d2c918e9ce18e433de9a7845a747 06-Jan-2008 Chris Lattner <sabre@nondot.org> rename isStore -> mayStore to more accurately reflect what it captures.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45656 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMRegisterInfo.cpp
13c6310866bc3ebfc8255a17d8ff2afb233f01cc 06-Jan-2008 Chris Lattner <sabre@nondot.org> remove explicit isStore flags that are now inferrable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45653 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
f823faf62406bc0002ea09eb482fd36e05c08180 06-Jan-2008 Chris Lattner <sabre@nondot.org> remove explicit isStore flags that are now inferrable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45653 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
d94b6a16fec7d5021e3922b0e34f9ddb268d54b1 05-Jan-2008 Owen Anderson <resistor@mac.com> Move some more functionality from MRegisterInfo to TargetInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45603 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
6690c7faaa42e02d5592367d6ca6bd3982d7fd21 05-Jan-2008 Owen Anderson <resistor@mac.com> Move some more functionality from MRegisterInfo to TargetInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45603 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
f6372aa1cc568df19da7c5023e83c75aa9404a07 01-Jan-2008 Owen Anderson <resistor@mac.com> Move some more instruction creation methods from RegisterInfo into InstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45484 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
8187543db9afdc5d465b604ce0bddea7695c78ab 01-Jan-2008 Owen Anderson <resistor@mac.com> Move some more instruction creation methods from RegisterInfo into InstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45484 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
641055225092833197efe8e5bce01d50bcf1daae 01-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a problem where lib/Target/TargetInstrInfo.h would include and use
a header file from libcodegen. This violates a layering order: codegen
depends on target, not the other way around. The fix to this is to
split TII into two classes, TII and TargetInstrInfoImpl, which defines
stuff that depends on libcodegen. It is defined in libcodegen, where
the base is not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45475 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
d2fd6db5816e58ea3287bef90250e044025e7bca 01-Jan-2008 Chris Lattner <sabre@nondot.org> Fix a problem where lib/Target/TargetInstrInfo.h would include and use
a header file from libcodegen. This violates a layering order: codegen
depends on target, not the other way around. The fix to this is to
split TII into two classes, TII and TargetInstrInfoImpl, which defines
stuff that depends on libcodegen. It is defined in libcodegen, where
the base is not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45475 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
d10fd9791c20fd8368fa0ce94b626b769c6c8ba0 31-Dec-2007 Owen Anderson <resistor@mac.com> Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the
Machine-level API cleanup instigated by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45470 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
8f2c893c01f61e358637d28c3b594a9310872d38 31-Dec-2007 Owen Anderson <resistor@mac.com> Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the
Machine-level API cleanup instigated by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45470 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMRegisterInfo.cpp
84bc5427d6883f73cfeae3da640acd011d35c006 31-Dec-2007 Chris Lattner <sabre@nondot.org> Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.

Update all the clients to match.

This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
1b98919de35bee879f414e9b97b38eeb9df287bc 31-Dec-2007 Chris Lattner <sabre@nondot.org> Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.

Update all the clients to match.

This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
8aa797aa51cd4ea1ec6f46f4891a6897944b75b2 31-Dec-2007 Chris Lattner <sabre@nondot.org> Add new shorter predicates for testing machine operands for various types:
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.

Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMRegisterInfo.cpp
6017d48252df62d121344138c5ba9241f7bd73b8 31-Dec-2007 Chris Lattner <sabre@nondot.org> Add new shorter predicates for testing machine operands for various types:
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.

Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMRegisterInfo.cpp
9a1ceaedc282f0cae31f2723f4d6c00c7b88fe90 30-Dec-2007 Chris Lattner <sabre@nondot.org> Use MachineOperand::getImm instead of MachineOperand::getImmedValue. Likewise setImmedValue -> setImm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45453 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
a96056a6649e5df71d673e058aa559b80df273ec 30-Dec-2007 Chris Lattner <sabre@nondot.org> Use MachineOperand::getImm instead of MachineOperand::getImmedValue. Likewise setImmedValue -> setImm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45453 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
c8bd287f3c782ae15d0d36720d874b1054dbd143 30-Dec-2007 Chris Lattner <sabre@nondot.org> use simplified operand addition methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45437 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMRegisterInfo.cpp
a18f2d12e9e1fb6b6d52721d73e94686230e7a19 30-Dec-2007 Chris Lattner <sabre@nondot.org> use simplified operand addition methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45437 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMRegisterInfo.cpp
4ee451de366474b9c228b4e5fa573795a715216d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RM.td
RMAddressingModes.h
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMFrameInfo.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMJITInfo.cpp
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMRelocations.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
081ce940e7351e90fff829320b7dc6738a6b3815 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RM.td
RMAddressingModes.h
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMFrameInfo.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMJITInfo.cpp
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMRelocations.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
fc643c5e88c596f217750dd91fcc66488dfed73d 29-Dec-2007 Chris Lattner <sabre@nondot.org> remove attribution from lib Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45415 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
80455b86f2c6c56b56f690db3c1fdd3a401f9df3 29-Dec-2007 Chris Lattner <sabre@nondot.org> remove attribution from lib Makefiles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45415 91177308-0d34-0410-b5e6-96231b3b80d8
akefile
6e141fd04897e5eb4925bb6351297170ebd8a756 13-Dec-2007 Evan Cheng <evan.cheng@apple.com> Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44960 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
e399fbbd8e53d83a50781b790d15de2a5b89373c 13-Dec-2007 Evan Cheng <evan.cheng@apple.com> Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always re-materializable and they should not be spilled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44960 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrVFP.td
1713d8bcfffe1ed26920a09012dbef4587930a94 08-Dec-2007 Evan Cheng <evan.cheng@apple.com> Doh

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44694 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
bd08cd5dce3bf8d1835bb19653adcf097acb0a9e 08-Dec-2007 Evan Cheng <evan.cheng@apple.com> Doh

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44694 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
7658445fa64d2e044e84e98e19a3cbec8023f186 08-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix a compilation warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44692 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
4b181c182a31665ab8880be7049c02c8d3631bc7 08-Dec-2007 Evan Cheng <evan.cheng@apple.com> Fix a compilation warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44692 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
d64b5c82b97ad1b74eb9fd2f23257a7899b0c307 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether
the stored register is killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44600 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
2af4a6c288939754c302cb397c3c334dff6def41 05-Dec-2007 Evan Cheng <evan.cheng@apple.com> Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether
the stored register is killed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44600 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
aee4af68ae2016afc5b4ec0c430e539c5810a766 02-Dec-2007 Evan Cheng <evan.cheng@apple.com> Remove redundant foldMemoryOperand variants and other code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44517 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
fd0bd3cd6b680605c609ffba12c0bbe997edd6e5 02-Dec-2007 Evan Cheng <evan.cheng@apple.com> Remove redundant foldMemoryOperand variants and other code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44517 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
e62f97c094dba44e4c259d20135167fa91912eea 01-Dec-2007 Evan Cheng <evan.cheng@apple.com> Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44479 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.h
ff52f082846db6a31d73cb6f02f62401e20eda6f 01-Dec-2007 Evan Cheng <evan.cheng@apple.com> Allow some reloads to be folded in multi-use cases. Specifically testl r, r -> cmpl [mem], 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44479 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.h
a3f61df4ff4549da3cef1ae70427a4c8ca858c69 27-Nov-2007 Chris Lattner <sabre@nondot.org> several entries got significantly better, though they still aren't done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44382 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
a1688ed618e869edb078fc96603aeb585cdef2bd 27-Nov-2007 Chris Lattner <sabre@nondot.org> several entries got significantly better, though they still aren't done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44382 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
f1b1c5ed1a91cf23cfa65a24caefce6235d2fed3 27-Nov-2007 Chris Lattner <sabre@nondot.org> implement a trivial readme entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44380 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
EADME.txt
900cddb8a857e83bbae92ccc7eec11f6b68193a2 27-Nov-2007 Chris Lattner <sabre@nondot.org> implement a trivial readme entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44380 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
EADME.txt
27a6c7380fa4dfc8e1837a8dd67967d063b26544 24-Nov-2007 Chris Lattner <sabre@nondot.org> Several changes:
1) Change the interface to TargetLowering::ExpandOperationResult to
take and return entire NODES that need a result expanded, not just
the value. This allows us to handle things like READCYCLECOUNTER,
which returns two values.
2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES.
3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new
ExpandOperationResult. This makes the result simpler and fully
general.
4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes.
5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM
i64 shifts, allowing them to work with LegalizeDAGTypes.
6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT,
allowing them to work with LegalizeDAGTypes.

LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when
type legalization in LegalizeDAG is ifdef'd out.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44300 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
dfb947d423f6355537d1a545fb8fa4fbc6dad230 24-Nov-2007 Chris Lattner <sabre@nondot.org> Several changes:
1) Change the interface to TargetLowering::ExpandOperationResult to
take and return entire NODES that need a result expanded, not just
the value. This allows us to handle things like READCYCLECOUNTER,
which returns two values.
2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES.
3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new
ExpandOperationResult. This makes the result simpler and fully
general.
4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes.
5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM
i64 shifts, allowing them to work with LegalizeDAGTypes.
6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT,
allowing them to work with LegalizeDAGTypes.

LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when
type legalization in LegalizeDAG is ifdef'd out.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44300 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b97aec663b1591e71c9ddee6dbb327d1b827eda5 13-Nov-2007 Dale Johannesen <dalej@apple.com> Add parameter to getDwarfRegNum to permit targets
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44056 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
f5a1153219e7c91069d2ff8299434f06d465f516 13-Nov-2007 Dale Johannesen <dalej@apple.com> Add parameter to getDwarfRegNum to permit targets
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44056 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
c69107ca11282a905c252d1b62091951087f13dc 13-Nov-2007 Bill Wendling <isanbard@gmail.com> Unifacalize the CALLSEQ{START,END} stuff.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44045 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
7173da5356af8419369d41909c301de0ce52fd36 13-Nov-2007 Bill Wendling <isanbard@gmail.com> Unifacalize the CALLSEQ{START,END} stuff.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44045 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0f8d9c04d9feef86cee35cf5fecfb348a6b3de50 13-Nov-2007 Bill Wendling <isanbard@gmail.com> Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack
adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
not, then there is the potential for the stack to be changed while the stack's
being used by another instruction (like a call).

This can only result in tears...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44037 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMRegisterInfo.cpp
22f8debd4e886118daaa419ba6bfa0c1ef279beb 13-Nov-2007 Bill Wendling <isanbard@gmail.com> Unify CALLSEQ_{START,END}. They take 4 parameters: the chain, two stack
adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
not, then there is the potential for the stack to be changed while the stack's
being used by another instruction (like a call).

This can only result in tears...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44037 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
RMRegisterInfo.cpp
20ab29068d8a8ec31f26f022634f1e0bc4b1da56 12-Nov-2007 Owen Anderson <resistor@mac.com> Add a flag for indirect branch instructions.

Target maintainers: please check that the instructions for your target are correctly marked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44012 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f805308b197ba190bef81bc97ae963f7ba75aac2 12-Nov-2007 Owen Anderson <resistor@mac.com> Add a flag for indirect branch instructions.

Target maintainers: please check that the instructions for your target are correctly marked.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44012 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f191c80cd79ee35e47b5a4feed98d687782dfe85 11-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Use TableGen to emit information for dwarf register numbers.
This makes DwarfRegNum to accept list of numbers instead.
Added three different "flavours", but only slightly tested on x86-32/linux.
Please check another subtargets if possible,


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43997 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
26ab1b7546fbb1a7206f132ff78d77aabea56d4a 11-Nov-2007 Anton Korobeynikov <asl@math.spbu.ru> Use TableGen to emit information for dwarf register numbers.
This makes DwarfRegNum to accept list of numbers instead.
Added three different "flavours", but only slightly tested on x86-32/linux.
Please check another subtargets if possible,


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43997 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
cc41586b9d79532172b37e1f44a9077da4b73fc9 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Much improved pic jumptable codegen:

Then:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
imull $4, %ecx, %ecx
leal LJTI1_0-"L1$pb"(%eax), %edx
addl LJTI1_0-"L1$pb"(%ecx,%eax), %edx
jmpl *%edx

.align 2
.set L1_0_set_3,LBB1_3-LJTI1_0
.set L1_0_set_2,LBB1_2-LJTI1_0
.set L1_0_set_5,LBB1_5-LJTI1_0
.set L1_0_set_4,LBB1_4-LJTI1_0
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2

Now:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
addl LJTI1_0-"L1$pb"(%eax,%ecx,4), %eax
jmpl *%eax

.align 2
.set L1_0_set_3,LBB1_3-"L1$pb"
.set L1_0_set_2,LBB1_2-"L1$pb"
.set L1_0_set_5,LBB1_5-"L1$pb"
.set L1_0_set_4,LBB1_4-"L1$pb"
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43924 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6fb0676d69697f38712be6843073618583d3a3f8 09-Nov-2007 Evan Cheng <evan.cheng@apple.com> Much improved pic jumptable codegen:

Then:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
imull $4, %ecx, %ecx
leal LJTI1_0-"L1$pb"(%eax), %edx
addl LJTI1_0-"L1$pb"(%ecx,%eax), %edx
jmpl *%edx

.align 2
.set L1_0_set_3,LBB1_3-LJTI1_0
.set L1_0_set_2,LBB1_2-LJTI1_0
.set L1_0_set_5,LBB1_5-LJTI1_0
.set L1_0_set_4,LBB1_4-LJTI1_0
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2

Now:
call "L1$pb"
"L1$pb":
popl %eax
...
LBB1_1: # entry
addl LJTI1_0-"L1$pb"(%eax,%ecx,4), %eax
jmpl *%eax

.align 2
.set L1_0_set_3,LBB1_3-"L1$pb"
.set L1_0_set_2,LBB1_2-"L1$pb"
.set L1_0_set_5,LBB1_5-"L1$pb"
.set L1_0_set_4,LBB1_4-"L1$pb"
LJTI1_0:
.long L1_0_set_3
.long L1_0_set_2


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43924 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
e0cb36b9fb1e1b0de9b46eafd8dc3802122b2e73 08-Nov-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> [ARM] Implement __builtin_thread_pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43892 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
5a87a8ae412e4c75d072c9b3936de0d25f92fca1 08-Nov-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> [ARM] Implement __builtin_thread_pointer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43892 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
f1ba1cad387dc52f3c2c5afc665edf9caad00992 06-Nov-2007 Rafael Espindola <rafael.espindola@gmail.com> Move the LowerMEMCPY and LowerMEMCPYCall to a common place.

Thanks for the suggestions Bill :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43742 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
dd867c703a1fb12d758ab2ea45aaa0e4e6be4074 06-Nov-2007 Rafael Espindola <rafael.espindola@gmail.com> Move the LowerMEMCPY and LowerMEMCPYCall to a common place.

Thanks for the suggestions Bill :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43742 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
8699a97a2ef42d349c9b81317d55ff621c459adc 05-Nov-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> [ARM] Fix code generation for:

static __thread struct {
int a;
int b;
} teste = {0, 0};



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43722 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
7eccd2b40188dd1481bae1458d675152447823b9 05-Nov-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> [ARM] Fix code generation for:

static __thread struct {
int a;
int b;
} teste = {0, 0};



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43722 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ca0ed744852a7d9625572fbb793f65e81225a3e8 05-Nov-2007 Duncan Sands <baldrick@free.fr> Eliminate the remaining uses of getTypeSize. This
should only effect x86 when using long double. Now
12/16 bytes are output for long double globals (the
exact amount depends on the alignment). This brings
globals in line with the rest of LLVM: the space
reserved for an object is now always the ABI size.
One tricky point is that only 10 bytes should be
output for long double if it is a field in a packed
struct, which is the reason for the additional
argument to EmitGlobalConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43688 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantIslandPass.cpp
8157ef423408bd50e6712814e7792a308b5db7d7 05-Nov-2007 Duncan Sands <baldrick@free.fr> Eliminate the remaining uses of getTypeSize. This
should only effect x86 when using long double. Now
12/16 bytes are output for long double globals (the
exact amount depends on the alignment). This brings
globals in line with the rest of LLVM: the space
reserved for an object is now always the ABI size.
One tricky point is that only 10 bytes should be
output for long double if it is a field in a packed
struct, which is the reason for the additional
argument to EmitGlobalConstant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43688 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantIslandPass.cpp
e0703c84ddeb1a1276de4e38210c1127ef5df130 31-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> Make ARM and X86 LowerMEMCPY identical by moving the isThumb check into getMaxInlineSizeThreshold
and by restructuring the X86 version.

New I just have to move this to a common place :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43554 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.h
948da40ac9a3c2677ecb44fcbca7a7306f36e761 31-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> Make ARM and X86 LowerMEMCPY identical by moving the isThumb check into getMaxInlineSizeThreshold
and by restructuring the X86 version.

New I just have to move this to a common place :-)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43554 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMSubtarget.h
fc05f402ea22e8a9ae465d209b65be7e857a89ff 31-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> Make ARM an X86 memcpy expansion more similar to each other.
Now both subtarget define getMaxInlineSizeThreshold and the expansion uses it.

This should not change generated code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43552 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.h
7afa9b19ace1d714b7f36e88388dbc4ea8c3fdbb 31-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> Make ARM an X86 memcpy expansion more similar to each other.
Now both subtarget define getMaxInlineSizeThreshold and the expansion uses it.

This should not change generated code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43552 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMSubtarget.h
ca4571e79fc4298197c2a9521a0e855b0a280118 25-Oct-2007 Dale Johannesen <dalej@apple.com> Support non-POSIX hosts by removing use of strncasecmp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43364 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
3fdb202b827b5282698a0480110954b36908f9a5 25-Oct-2007 Dale Johannesen <dalej@apple.com> Support non-POSIX hosts by removing use of strncasecmp.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43364 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
4102eb57bbeecbbf5b5b5122ed1ecd4cd5487878 23-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix memcpy lowering when addresses are 4-byte aligned but size is not multiple of 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43234 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
EADME-Thumb.txt
857b89ee805e84560a48242eca2354730bd2892d 23-Oct-2007 Evan Cheng <evan.cheng@apple.com> Fix memcpy lowering when addresses are 4-byte aligned but size is not multiple of 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43234 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
EADME-Thumb.txt
7b73a5d6dead3fa765cdde8316a19ac8930cc60d 19-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> split LowerMEMCPY into LowerMEMCPYCall and LowerMEMCPYInline in the ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43176 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
0ec733ad5fdb07d546c0b6e9b9ae418a1aa2b47c 19-Oct-2007 Rafael Espindola <rafael.espindola@gmail.com> split LowerMEMCPY into LowerMEMCPYCall and LowerMEMCPYInline in the ARM backend.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43176 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
3a7c33a853b03d9dcde400b9d58e02c25d9789db 19-Oct-2007 Chris Lattner <sabre@nondot.org> Add an easy microoptimization I noticed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43164 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
01eb72865796b7ed946f020d8f91c60105b6c445 19-Oct-2007 Chris Lattner <sabre@nondot.org> Add an easy microoptimization I noticed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43164 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
f0a0cddbcda344a90b7217b744c78dccec71851c 19-Oct-2007 Evan Cheng <evan.cheng@apple.com> - Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but only returns the opcode of the instruction post unfolding.
- Fix some copy+paste bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43153 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
8fc1fa2edefe0076e298dd86c76f5325d7342f15 19-Oct-2007 Evan Cheng <evan.cheng@apple.com> - Added getOpcodeAfterMemoryUnfold(). It doesn't unfold an instruction, but only returns the opcode of the instruction post unfolding.
- Fix some copy+paste bugs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43153 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
58184e6878fdab651bc7c9a59dab2687ca82ede2 18-Oct-2007 Evan Cheng <evan.cheng@apple.com> Use SmallVectorImpl instead of SmallVector with hardcoded size in MRegister public interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43150 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
812acafe223f459fc280bbe180340704ab65bf52 18-Oct-2007 Evan Cheng <evan.cheng@apple.com> Use SmallVectorImpl instead of SmallVector with hardcoded size in MRegister public interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43150 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
a4c791072f65b44b069a8acf17f85a3849cfb36d 18-Oct-2007 Christopher Lamb <christopher.lamb@gmail.com> Fix a misnamed parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43145 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
bad085b5560ddb36bf2358c254eeab821241abe9 18-Oct-2007 Christopher Lamb <christopher.lamb@gmail.com> Fix a misnamed parameter.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43145 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
65a3323b0a1369067be131c3d3fe8442f5ac2df3 18-Oct-2007 Chris Lattner <sabre@nondot.org> legalizing the ret operation on f64 shouldn't introduce a new
i64 bit convert needlessly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43116 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
72d66ad57ecd65aee2abf2122b205ae5f5f1a1fc 18-Oct-2007 Chris Lattner <sabre@nondot.org> legalizing the ret operation on f64 shouldn't introduce a new
i64 bit convert needlessly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43116 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
347d39f1fd8ad825a7ec5b8a3dce816723a56d42 14-Oct-2007 Evan Cheng <evan.cheng@apple.com> Revert 42908 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42960 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
477013c1dda38cf918e259e972998664008da616 14-Oct-2007 Evan Cheng <evan.cheng@apple.com> Revert 42908 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42960 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8ddde0a151c5297ae5694a4b9201b2d3fe56b196 12-Oct-2007 Dan Gohman <gohman@apple.com> Change the names used for internal labels to use the current
function symbol name instead of a codegen-assigned function
number.

Thanks Evan! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42908 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
36eb6b7103ccca77ac51754a2265340ce9a2a8d7 12-Oct-2007 Dan Gohman <djg@cray.com> Change the names used for internal labels to use the current
function symbol name instead of a codegen-assigned function
number.

Thanks Evan! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42908 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f96e4de403453e57aea75bcac1ed99af686d33c4 12-Oct-2007 Dan Gohman <gohman@apple.com> Set ISD::FPOW to Expand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42881 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
2f7b198c0bf4fd2518f310f5faed165808b96d15 12-Oct-2007 Dan Gohman <djg@cray.com> Set ISD::FPOW to Expand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42881 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
525178cdbf00720ea8bce297a7d65b0cca0ab439 08-Oct-2007 Dan Gohman <gohman@apple.com> Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} to
use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code
associated with these operators into target-independent in LegalizeDAG.cpp
and TargetLowering.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42762 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
5a199558c23d400e3dd83a9c7cab754c77778956 08-Oct-2007 Dan Gohman <djg@cray.com> Migrate X86 and ARM from using X86ISD::{,I}DIV and ARMISD::MULHILO{U,S} to
use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code
associated with these operators into target-independent in LegalizeDAG.cpp
and TargetLowering.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42762 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
66f0f640820b61cf9db814b6d187bae9faf7279c 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> - Added a few target hooks to generate load / store instructions from / to any
address (not just from / to frameindexes).
- Added target hooks to unfold load / store instructions / SDNodes into separate
load, data processing, store instructions / SDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42621 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
535f993076a90e8c68f078c203b7e001f0ceb035 05-Oct-2007 Evan Cheng <evan.cheng@apple.com> - Added a few target hooks to generate load / store instructions from / to any
address (not just from / to frameindexes).
- Added target hooks to unfold load / store instructions / SDNodes into separate
load, data processing, store instructions / SDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42621 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
cb406c25973b4e88a6c10ad839ef1beeb3664715 03-Oct-2007 Dan Gohman <gohman@apple.com> Use empty() member functions when that's what's being tested for instead
of comparing begin() and end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42585 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
3f7d94b6cd40a3653c000f4b2e166c82dc3e3715 03-Oct-2007 Dan Gohman <djg@cray.com> Use empty() member functions when that's what's being tested for instead
of comparing begin() and end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42585 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
cd8bc05102e7963a5839cfdca7785390288bc745 30-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> AsmPrinters overriding getAnalysisUsage should call super.

And not super's super, either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42482 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
76e4b61dfd89698438a8b654194eb11b719dcc36 30-Sep-2007 Gordon Henriksen <gordonhenriksen@mac.com> AsmPrinters overriding getAnalysisUsage should call super.

And not super's super, either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42482 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
9efce638d307b2c71bd7f0258d47501661434c27 26-Sep-2007 Evan Cheng <evan.cheng@apple.com> Allow copyRegToReg to emit cross register classes copies.
Tested with "make check"!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42346 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
b3d91cfa10387517c305f75a8220d192f7d133cb 26-Sep-2007 Evan Cheng <evan.cheng@apple.com> Allow copyRegToReg to emit cross register classes copies.
Tested with "make check"!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42346 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
677ccc6e8b912e1a39259952b125954820062541 25-Sep-2007 Dan Gohman <gohman@apple.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42316 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.h
cdd820b52b570a69ac4ca251fb701300c6e1db4b 25-Sep-2007 Dan Gohman <djg@cray.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42316 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.h
76a4023096fc330db11d711197388d9f3ba91cc6 21-Sep-2007 Evan Cheng <evan.cheng@apple.com> Honor user-defined section specification of a global, ignores whether its initializer is null.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42182 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
65c0fbc139b210f10c7af2bb788f2d252981a62b 21-Sep-2007 Evan Cheng <evan.cheng@apple.com> Honor user-defined section specification of a global, ignores whether its initializer is null.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42182 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
17207ddf38b92245d6eda9e58cf9bf75f2a88e80 20-Sep-2007 Evan Cheng <evan.cheng@apple.com> Enable if-conversion for ARM by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42156 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
cd497f4be825a3389ab7b338c07993782afd69ff 20-Sep-2007 Evan Cheng <evan.cheng@apple.com> Enable if-conversion for ARM by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42156 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
e71bff7405392ad5904f986724a65f965c0686e8 19-Sep-2007 Evan Cheng <evan.cheng@apple.com> Avoid referencing deleted instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42153 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
11948d6b2065509c4ad3fdae58da10bfd3b13e90 19-Sep-2007 Evan Cheng <evan.cheng@apple.com> Avoid referencing deleted instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42153 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
92dfe2001e96f6e2b6d327e8816f38033f88b295 14-Sep-2007 Dan Gohman <gohman@apple.com> Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
38a9a9f8be9243cc958662832067ac17f7bd4558 14-Sep-2007 Dan Gohman <djg@cray.com> Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
fe4afb17d3370a1c3d4945d6558de544462b4ce6 12-Sep-2007 Bill Wendling <isanbard@gmail.com> Enable indirect encoding for the personality function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41873 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
909ec5692e77f3c580135d896188f0135abe0683 12-Sep-2007 Bill Wendling <isanbard@gmail.com> Enable indirect encoding for the personality function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41873 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
071a279e94e30d51aff3b46a4651d686982488a0 11-Sep-2007 Evan Cheng <evan.cheng@apple.com> Remove (somewhat confusing) Imp<> helper, use let Defs = [], Uses = [] instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41863 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
6e4d1d95040e884712107be256969625e76c0078 11-Sep-2007 Evan Cheng <evan.cheng@apple.com> Remove (somewhat confusing) Imp<> helper, use let Defs = [], Uses = [] instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41863 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
f7331b3dd72409e644833ecaf62a0f6db03c97ee 11-Sep-2007 Duncan Sands <baldrick@free.fr> Fold the adjust_trampoline intrinsic into
init_trampoline. There is now only one
trampoline intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41841 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
7407a9f0ce838891356c1faf3d52e1dacf4e5365 11-Sep-2007 Duncan Sands <baldrick@free.fr> Fold the adjust_trampoline intrinsic into
init_trampoline. There is now only one
trampoline intrinsic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41841 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
be36798bfe473b13bcb361f44f63aeb129892a2a 11-Sep-2007 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41812 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
cce0af5eb3131d9d7ac9ac898bcf755cb644cefb 11-Sep-2007 Evan Cheng <evan.cheng@apple.com> 80 col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41812 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bf8ae84a21011a7263c2a4183fdfd8e5755765a1 10-Sep-2007 Chris Lattner <sabre@nondot.org> Add some notes about better flag handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41808 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
4084d49e2baf19cf47ee90fd0a54f7d00b008ab6 10-Sep-2007 Chris Lattner <sabre@nondot.org> Add some notes about better flag handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41808 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
718cb665ca6ce2bc4d8e8479f46a45db91b49f86 07-Sep-2007 Owen Anderson <resistor@mac.com> Add lengthof and endof templates that hide a lot of sizeof computations.
Patch by Sterling Stein!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
1636de94069d492185da2dd36859d4a1962a2eed 07-Sep-2007 Owen Anderson <resistor@mac.com> Add lengthof and endof templates that hide a lot of sizeof computations.
Patch by Sterling Stein!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
eaf089430e7681fcddc3465c3b33b9645273ab02 31-Aug-2007 Dale Johannesen <dalej@apple.com> Enhance APFloat to retain bits of NaNs (fixes oggenc).
Use APFloat interfaces for more references, mostly
of ConstantFPSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41632 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
df8a831eb0f35fad163b2e45212f8154a17bbd36 31-Aug-2007 Dale Johannesen <dalej@apple.com> Enhance APFloat to retain bits of NaNs (fixes oggenc).
Use APFloat interfaces for more references, mostly
of ConstantFPSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41632 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
8c132633c86a7e496f84e3458c47520d0cc4d938 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> Instruction formats added used to generate multiply instructions of V5TE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41629 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
85f456100c0a6dea1475c91dd358e4d9a81eb151 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> Instruction formats added used to generate multiply instructions of V5TE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41629 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.h
b94e60872e97a527b090e20c7d5cb4404437a4dd 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> Unused relocation type reloc_arm_absolute removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41628 91177308-0d34-0410-b5e6-96231b3b80d8
RMRelocations.h
52530dbe53e6835b1dca46defecc38bd1bea3330 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> Unused relocation type reloc_arm_absolute removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41628 91177308-0d34-0410-b5e6-96231b3b80d8
RMRelocations.h
9c1a3827cec76ee9c489662115906939f3de5d98 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> Comments added. It now generates V5TE multiply instructions. However, it is still necessary to model PUWLSH bits more clearly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41627 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
d8dc8c5ffcd9d787ccdd8b48c1ebcee8870bfc01 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> Comments added. It now generates V5TE multiply instructions. However, it is still necessary to model PUWLSH bits more clearly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41627 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
37fb5b154cd30be540ecdd08873a9e10f27a3613 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> ARM instruction table was modified by adding information to generate multiply instruction of V5TE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2e07e8d2ff30dda3296e3dc9de481a84fca6bc86 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> ARM instruction table was modified by adding information to generate multiply instruction of V5TE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41626 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d05c04c1692d4630e43fd4f22bba37edbe701258 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> JITInfo now resolves function addrs and also relocations. It always emits a stub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41625 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
72551daeaad642f5bb9318d269bc0b7834381ef4 31-Aug-2007 Raul Herbster <raulherbster@gmail.com> JITInfo now resolves function addrs and also relocations. It always emits a stub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41625 91177308-0d34-0410-b5e6-96231b3b80d8
RMJITInfo.cpp
35b35c5c320a71e4611fe2101452da685f8eeda0 30-Aug-2007 Evan Cheng <evan.cheng@apple.com> Add a variant of foldMemoryOperand to fold any load / store, not just load / store from / to stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41597 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.h
242a992fc30a1466f3ab7f4d14b2de9a6c954d5e 30-Aug-2007 Evan Cheng <evan.cheng@apple.com> Add a variant of foldMemoryOperand to fold any load / store, not just load / store from / to stack slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41597 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.h
0ff94f7fcc95112331ee0f4f3d31c90acb9f2952 07-Aug-2007 Evan Cheng <evan.cheng@apple.com> Initial JIT support for ARM by Raul Fernandes Herbster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40887 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCodeEmitter.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMJITInfo.cpp
RMRelocations.h
RMTargetMachine.cpp
a7b3e7c33f1ef7be844fde18dcd9e24afdc97748 07-Aug-2007 Evan Cheng <evan.cheng@apple.com> Initial JIT support for ARM by Raul Fernandes Herbster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40887 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMCodeEmitter.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMJITInfo.cpp
RMRelocations.h
RMTargetMachine.cpp
61e729e2e9517ab2d8887bab86fb377900fa1081 02-Aug-2007 Dan Gohman <gohman@apple.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40757 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
3a78bbfeacce9988ff60210fd472cef9789abcc2 02-Aug-2007 Dan Gohman <djg@cray.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40757 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
7fc77611eff7c47e8c37fad58af637138e2a9d7a 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> Indexed loads each has 2 outputs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40658 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1a9e67782d0a837f629e519817b77a657f0bf55f 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> Indexed loads each has 2 outputs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40658 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f452207d202618f92cbc04bcc6251ecae0eb6d61 30-Jul-2007 Dan Gohman <gohman@apple.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40589 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
2914661badf625cb7253896dca2789ee54a58859 30-Jul-2007 Dan Gohman <djg@cray.com> More explicit keywords.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40589 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
36397f50343639ce9a25996f2d790c656791ab92 27-Jul-2007 Duncan Sands <baldrick@free.fr> Support for trampolines, except for X86 codegen which is
still under discussion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40549 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
38947cd9adc03b30ff6d50d97279421c63b6f2f2 27-Jul-2007 Duncan Sands <baldrick@free.fr> Support for trampolines, except for X86 codegen which is
still under discussion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40549 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b8275a3f6f6497889653cb2452d82a46f92b4926 25-Jul-2007 Dan Gohman <gohman@apple.com> Don't ignore the return value of AsmPrinter::doInitialization and
AsmPrinter::doFinalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40487 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4a558a338dad938df33a3286eac0c64017fbcc38 25-Jul-2007 Dan Gohman <djg@cray.com> Don't ignore the return value of AsmPrinter::doInitialization and
AsmPrinter::doFinalization.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40487 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ffbaccae029ac238972e3814967260f029b6058a 21-Jul-2007 Evan Cheng <evan.cheng@apple.com> No more noResults.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40132 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
37e7c75b491e50df2a7f3e9f5d872a48d85239a0 21-Jul-2007 Evan Cheng <evan.cheng@apple.com> No more noResults.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40132 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
8bd6035750f1b290832a3b1c90766d9b45ed8d6b 20-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added -print-emitted-asm to print out JIT generated asm to cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
775472112da257a6558fb583d71aa850860dd8a1 20-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added -print-emitted-asm to print out JIT generated asm to cerr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
64d80e3387f328d21cd9cc06464b5de7861e3f27 19-Jul-2007 Evan Cheng <evan.cheng@apple.com> Change instruction description to split OperandList into OutOperandList and
InOperandList. This gives one piece of important information: # of results
produced by an instruction.
An example of the change:
def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
=>
def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40033 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMRegisterInfo.cpp
RMRegisterInfo.h
b783fa36e0770cbb5dc349e649499373185c21fc 19-Jul-2007 Evan Cheng <evan.cheng@apple.com> Change instruction description to split OperandList into OutOperandList and
InOperandList. This gives one piece of important information: # of results
produced by an instruction.
An example of the change:
def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
=>
def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40033 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMRegisterInfo.cpp
RMRegisterInfo.h
4558b807a2076e199bcb019f5edc9eabbc5922c1 19-Jul-2007 Evan Cheng <evan.cheng@apple.com> Only adjust esp around calls in presence of alloca.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40030 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
8154094f225ccb52a058501b84c6fa0a51862ca7 19-Jul-2007 Evan Cheng <evan.cheng@apple.com> Only adjust esp around calls in presence of alloca.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40030 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cc 18-Jul-2007 Dan Gohman <djg@cray.com> It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RM.td
RMAddressingModes.h
RMAsmPrinter.cpp
RMCodeEmitter.cpp
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMFrameInfo.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMJITInfo.cpp
RMJITInfo.h
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMRelocations.h
RMSubtarget.cpp
RMSubtarget.h
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
akefile
EADME-Thumb.txt
EADME.txt
c3dbe70ce75e2fff00f6ea876ba9c39af4510d06 17-Jul-2007 Chris Lattner <sabre@nondot.org> no email addrs in file headers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39962 91177308-0d34-0410-b5e6-96231b3b80d8
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
2365f51ed03afe6993bae962fdc2e5a956a64cd5 14-Jul-2007 Anton Korobeynikov <asl@math.spbu.ru> Long live the exception handling!

This patch fills the last necessary bits to enable exceptions
handling in LLVM. Currently only on x86-32/linux.

In fact, this patch adds necessary intrinsics (and their lowering) which
represent really weird target-specific gcc builtins used inside unwinder.

After corresponding llvm-gcc patch will land (easy) exceptions should be
more or less workable. However, exceptions handling support should not be
thought as 'finished': I expect many small and not so small glitches
everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39855 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
66a2a8f8782f55a9668c7f4200ff55b52fcddef6 12-Jul-2007 Dale Johannesen <dalej@apple.com> ARM: make branch folder remove unconditional branches
following jump tables that it earlier inserted. This
would be OK on other targets but is needed for correctness
only on ARM (constant islands needs to find jump tables).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39782 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
5d9c4b60204d741c213456e21b87e9af6a3dc627 11-Jul-2007 Dale Johannesen <dalej@apple.com> Fix hang compiling TimberWolf (allow for islands
of size other than 4).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39743 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
8202010364e1bfe6111f1ce62f154499b80877fb 11-Jul-2007 Evan Cheng <evan.cheng@apple.com> Didn't mean the last commit. Revert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38515 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
c608ff22e79bf56b7227e56eb9e88fed2258b5c6 10-Jul-2007 Evan Cheng <evan.cheng@apple.com> Update.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38513 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
13ab020ea08826f1b87db6ec3da63889a12e3d9d 10-Jul-2007 Evan Cheng <evan.cheng@apple.com> Remove clobbersPred. Add an OptionalDefOperand to instructions which have the 's' bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38501 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
87bdba6d6a1684373c94df0363a3b620de6dab6c 09-Jul-2007 Chris Lattner <sabre@nondot.org> The various "getModuleMatchQuality" implementations should return
zero if they see a target triple they don't understand.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38463 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
9ad6f03166b9ae169f1c9e3fe229cae1e0f94d7a 07-Jul-2007 Evan Cheng <evan.cheng@apple.com> No need for ccop anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37965 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
4b9cb7d135fbd0fbecbf8579d741e15e4b02f176 07-Jul-2007 Evan Cheng <evan.cheng@apple.com> Incorrect check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37962 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
06aae67b8315aa915f55abd5927453dbe8b11169 07-Jul-2007 Evan Cheng <evan.cheng@apple.com> Do away with ImmutablePredicateOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37961 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
dfb2ebac29f92a533218bd576734913a89d1299d 06-Jul-2007 Evan Cheng <evan.cheng@apple.com> Print the s bit if the instruction is toggled to its CPSR setting form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37932 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
04c813d00ced172d9fbd26aa610e0992846a40bd 06-Jul-2007 Evan Cheng <evan.cheng@apple.com> PredicateDefOperand -> OptionalDefOperand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37931 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
148b6a419fbb20e2224a1b92c499d51513b9bc27 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Initial ARM JIT support by Raul Fernandes Herbster.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37926 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMCodeEmitter.cpp
RMJITInfo.cpp
RMJITInfo.h
RMRelocations.h
RMTargetMachine.cpp
RMTargetMachine.h
d54874a06d1bc67248fe3b5d990acd6e8a61d2ff 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Unbreak the build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37914 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a99be51bf5cdac1438069d4b01766c47704961c8 05-Jul-2007 Gabor Greif <ggreif@gmail.com> Here is the bulk of the sanitizing.
Almost all occurrences of "bytecode" in the sources have been eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37913 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0e1d37904abbf7e8c4c478408253dd995f3040f4 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Reflects the chanegs made to PredicateOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37898 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
16b6598325aced8a05ae8c87685d160fe3ad6e66 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added ARM::CPSR to represent ARM CPSR status register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37897 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
ee568cf7948230b78303b86c92722c177d3a5673 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Unfortunately we now require C++ code to isel Bcc, conditional moves, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37896 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c85e832eb7193b2a67b1159e00db8d89df714142 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Each ARM use predicate operand is now made up of two components. The new component is the CPSR register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37895 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
3b5b8368f3867bc7e2fde4e12a1e0dfe62e54f1e 05-Jul-2007 Evan Cheng <evan.cheng@apple.com> Added ARM::CPSR to represent ARM CPSR status register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37894 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
e644ef7b098460ce831220c780cbe25eaef3fb28 29-Jun-2007 John Criswell <criswell@uiuc.edu> Convert .cvsignore files

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37801 91177308-0d34-0410-b5e6-96231b3b80d8
cvsignore
e2446c607611ce868857d9b853aa8703bf0da4b8 26-Jun-2007 Evan Cheng <evan.cheng@apple.com> Silence a warning.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37737 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d45eddd214061bf12ad1e6b86497a41725e61d75 26-Jun-2007 Dan Gohman <gohman@apple.com> Revert the earlier change that removed the M_REMATERIALIZABLE machine
instruction flag, and use the flag along with a virtual member function
hook for targets to override if there are instructions that are only
trivially rematerializable with specific operands (i.e. constant pool
loads).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37728 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
0819a9d386e2b690abee8ae779c8ba84639ec664 22-Jun-2007 Owen Anderson <resistor@mac.com> Fix the build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37705 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ea859be53ca13a1547c4675549946b74dc3c6f41 22-Jun-2007 Dan Gohman <gohman@apple.com> Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits from
TargetLowering to SelectionDAG so that they have more convenient
access to the current DAG, in preparation for the ValueType routines
being changed from standalone functions to members of SelectionDAG for
the pre-legalize vector type changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37704 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
5411835165429dc409012adc5efaf92c4938563f 22-Jun-2007 Dale Johannesen <dalej@apple.com> Quote complex names for Darwin X86 and ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37700 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
97e604e7d861cfdfba9fcf720854a3399729bef0 20-Jun-2007 Evan Cheng <evan.cheng@apple.com> Be more conservative of duplicating blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37669 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
277f0741c5ea123b30360c382a153df238c31cae 19-Jun-2007 Evan Cheng <evan.cheng@apple.com> Allow predicated immediate ARM to ARM calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37659 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
82a87a01723c095176c6940bcc63d3a7c8007b4b 19-Jun-2007 Dan Gohman <gohman@apple.com> Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad
with a general target hook to identify rematerializable instructions. Some
instructions are only rematerializable with specific operands, such as loads
from constant pools, while others are always rematerializable. This hook
allows both to be identified as being rematerializable with the same
mechanism.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37644 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
eaa91b0a1fc68984aae51f3c4b0cf29b38f89dac 19-Jun-2007 Evan Cheng <evan.cheng@apple.com> Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37643 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
d42e56e166761d79201f09eeb4ab782e3097bfcd 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> Instructions with unique labels or embedded jumptables cannot be duplicated during ifcvt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37606 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
13e8b51e3ec014c5d7ae83afdf3b8fd29c3a461d 13-Jun-2007 Dale Johannesen <dalej@apple.com> Handle blocks with 2 unconditional branches in AnalyzeBranch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
bfd2ec4a8ef51ebe982363a7e8d7156fdb3827d8 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> Add a utility routine to check for unpredicated terminator instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37528 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
61718a6285a4f140cab530bcc07c6492902dc710 08-Jun-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Define AsmTransCBE for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37527 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
1fc7cb695c0278e7d5f220e2e287d68430d19e37 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> Fix ARM condition code subsumission check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37517 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
f81dea45b574e8c6505e330d602c27add9358b88 08-Jun-2007 Evan Cheng <evan.cheng@apple.com> tBcc is not a barrier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37516 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
9328c1ac66397775be850b6d2b64fa8a8f4aca6c 07-Jun-2007 Evan Cheng <evan.cheng@apple.com> Stupid cut-n-paste bug caused me soooo much grief. Why wasn't there a compilation warning? I blame it on the FE folks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37484 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
2c614c5c699fed503b93e85ea0cb48811843c3c7 06-Jun-2007 Evan Cheng <evan.cheng@apple.com> Mark these instructions clobbersPred. They modify the condition code register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37468 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
5e148a37d3432f83ccc4dbebe08d4f1b4717034c 05-Jun-2007 Evan Cheng <evan.cheng@apple.com> Print predicate of the second instruction of the two-piece constant MI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37437 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
341dcccb4e1f190f4aee12e92c2b7c2cb68c520d 05-Jun-2007 Evan Cheng <evan.cheng@apple.com> PIC label asm printing cosmetic changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37434 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c621ae7bba11f98163633bc6dde41f9e8a326a78 02-Jun-2007 Chris Lattner <sabre@nondot.org> update this entry, now that Anton implemented shift/and lowering for
switches. There is one really easy isel thing here with tst we are not
getting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37400 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
c354334ac4c7854d5b8649f92339ce3bedb90c81 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Opcode modifier s comes after condition code. e.g. addlts, not addslt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37388 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
144fd1ff0f1548ec9c4e835dec19ac2d5e46e902 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Set ARM ifcvt duplication limit to 3 for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37385 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
df4da14948dfbc567831f3af4f6ef913c4dd12ad 01-Jun-2007 Evan Cheng <evan.cheng@apple.com> Make jumptable non-predicable for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37381 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3a4205367dc845d4cd804b47e061f8281777c9da 31-May-2007 Chris Lattner <sabre@nondot.org> Fix the asmprinter so that a globalvalue can specify an explicit alignment
smaller than the preferred alignment, but so that the target can actually
specify a minimum alignment if needed. This fixes some objc protocol
failures Devang tracked down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37373 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c6f2f6fbb9e6a30ab83fe47c70150444eddf34bb 30-May-2007 Evan Cheng <evan.cheng@apple.com> For VFP2 fldm, fstm instructions, the condition code is printed after the address mode and size specifier. e.g. fstmiaseq, not fstmeqias.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37351 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
fd488edb1de9710ac6ec69f93f6494589b372433 30-May-2007 Evan Cheng <evan.cheng@apple.com> For ldrb, strh, etc., the condition code is before the width specifier. e.g. streqh, not strheq.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37349 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
62ccdbf0b3b75661bcdb20476609fece499c767f 29-May-2007 Evan Cheng <evan.cheng@apple.com> Add missing const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37342 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
69d555611aa1b7e45fc1b3719bfcb17a39dff9f3 23-May-2007 Evan Cheng <evan.cheng@apple.com> Hooks for predication support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37308 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
94679e66bbad22dc1a6e3e1b3f8fa9bab0db0f67 22-May-2007 Evan Cheng <evan.cheng@apple.com> Fix some -march=thumb regressions. tBR_JTr is not predicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37272 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
f23b8cf239515fb09fcbbe3c4d334ca63ec6fe1b 22-May-2007 Dale Johannesen <dalej@apple.com> Use AXI3 not AXI2 for appropriate PIC PC-relative loads and stores. Cosmetic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37271 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
86d4069666565b2c3b5751bc592482a0ca073bc8 22-May-2007 Dale Johannesen <dalej@apple.com> Add some patterns for PIC PC-relative loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37269 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5a18ebc70cadd844167b3e39e7a7a627901ab529 21-May-2007 Evan Cheng <evan.cheng@apple.com> BlockHasNoFallThrough() now returns true if block ends with a return instruction; AnalyzeBranch() should ignore predicated instructionsd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37268 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
dcc50a4aeee13e5bb7aec9f6a2e5ca80ef54c40d 18-May-2007 Evan Cheng <evan.cheng@apple.com> Mark calls non-predicable for now. Need to ensure it's the last instruction in the if-converted block or make sure it preserve condition code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37199 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
e5e7ce458a2062dd9a8b495f4d73d359e0e269de 18-May-2007 Evan Cheng <evan.cheng@apple.com> Silence some compilation warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37197 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9f8cbd147c0ae4ec2df0f3bbff65def0ffd784c1 18-May-2007 Evan Cheng <evan.cheng@apple.com> Set ARM if-conversion block size threshold to 10 instructions for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37194 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6ae3626a4fda14e6250ac8d8ff487efb8952cdf7 18-May-2007 Evan Cheng <evan.cheng@apple.com> RemoveBranch() and InsertBranch() now returns number of instructions deleted / inserted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37193 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
8dd86c14d46b2deb1e1335d495acc579d70bf60f 17-May-2007 Dale Johannesen <dalej@apple.com> More effective breakdown of memcpy into repeated load/store. These are now
in the order lod;lod;lod;sto;sto;sto which means the load-store optimizer
has a better chance of producing ldm/stm. Ideally you would get cooperation
from the RA as well but this is not there yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37179 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
3f8602cf20146e9b7953c56d4fcdc586d52aa6f1 16-May-2007 Evan Cheng <evan.cheng@apple.com> ARM::tB is also predicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37125 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
02c602b333ed2a1a13a17981f3c3f2f5463d5e5c 16-May-2007 Evan Cheng <evan.cheng@apple.com> PredicateInstruction returns true if the operation was successful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37124 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
75604f81b7706f7a0276c8306e944a6a6bc70aa1 16-May-2007 Evan Cheng <evan.cheng@apple.com> Move if-conversion after all passes that may use register scavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37120 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
b5f8eff566ab35a15dcd5bf490047c7ccfcecce0 16-May-2007 Evan Cheng <evan.cheng@apple.com> Removed isPredicable().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37119 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
5ada199246ec384cf4a21b4b5413703820611e3e 16-May-2007 Evan Cheng <evan.cheng@apple.com> Make ARM::B isPredicable; Make Bcc and MOVCC condition option a normal operand so they are not predicable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37118 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
aeafca0a257f8b698a67c627c0820365cdfc85e6 16-May-2007 Evan Cheng <evan.cheng@apple.com> Conditional branch is not a barrier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37103 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
2706f9771de8e90ee6379e70afedd91892bb9c8c 16-May-2007 Evan Cheng <evan.cheng@apple.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37098 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
9307292ae27c125a10eabccb5a437200d831a55f 16-May-2007 Evan Cheng <evan.cheng@apple.com> Hooks for predication support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37093 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMTargetMachine.cpp
RMTargetMachine.h
44bec52b1b7e9a3ac1efbae90db240b8c1ca2ad4 15-May-2007 Evan Cheng <evan.cheng@apple.com> Add PredicateOperand to all ARM instructions that have the condition field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37066 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
RMRegisterInfo.cpp
5d3d44a84815b848d4493f693a0579efcc2ce42f 15-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix previous patch. GOTOFF can be used only when the symbol has internal
linkage or hidden visibility.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37055 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
930d161ba23c9bd9e7dc9586742725b08a8e622d 14-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Optimize PIC implementation. GOTOFF can be used when the symbol is defined
and used in the same module.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37044 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
69642f11ed9443a0ad9c6d959739bfcbdd4f732b 14-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Enable aliases on arm-linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37042 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
42d712b3067ec14170f80d8adfc7e5ad5878132b 08-May-2007 Evan Cheng <evan.cheng@apple.com> Switch BCC, MOVCCr, etc. to PredicateOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36948 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
356e72c4f1a90b0ff306838e8841b9b550460cd9 08-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix PR1390 in a better way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36916 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c4e600362e0adec4660c317e0f87e4344e76f139 07-May-2007 Evan Cheng <evan.cheng@apple.com> This is no longer needed after enabling the DAG combiner xform.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36909 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
8f57667a5d79faa3bb0644b051ed28b071659fd9 06-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix PR1390.
Don't spill extra register to align the stack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36814 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
a8e9562906cf70a3e89baaf5fe6e2f4f5cf83c11 05-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Add a processor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36765 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
97c9bb5cc6c2f936493ae5e8f577ecbfc1f750ce 04-May-2007 Evan Cheng <evan.cheng@apple.com> On Mac OS X, GV requires an extra load only when relocation-model is non-static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36718 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bdc9869dbfa40579236405db73897a9fd19d1ed0 04-May-2007 Evan Cheng <evan.cheng@apple.com> Should never see an indexed load / store with zero offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36714 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
4ac075c859ec0b03d61229bca3517a6801ac63ab 03-May-2007 Dale Johannesen <dalej@apple.com> Evan's patch to avoid FPreg->intreg copy for cvt; store to mem


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36693 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrVFP.td
e8e5495474d67cd5151bd88e502be3f46ace7a85 03-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Debug support for arm-linux.
Patch by Raul Herbster.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36690 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelLowering.cpp
RMRegisterInfo.cpp
RMTargetAsmInfo.cpp
388488d604a63fc25d5f6b2c598f7cc4499c9db5 03-May-2007 Chris Lattner <sabre@nondot.org> add support for printing offset from global


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36669 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0b0a9a90a423efb91dd4efdfd866ad37aa72ee8e 03-May-2007 Evan Cheng <evan.cheng@apple.com> Typo. It's checking if V is multiple of 4, not multiple of 3. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36663 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
1997473cf72957d0e70322e2fe6fe2ab141c58a6 03-May-2007 Devang Patel <dpatel@apple.com> Drop 'const'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
72939126d43901e3d922535be4e12ef8ebf31611 03-May-2007 Chris Lattner <sabre@nondot.org> match a reassociated form of fnmul. This implements CodeGen/ARM/fnmul.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36660 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrVFP.td
3e15bf33e024b9df9e89351a165acfdb1dde51ed 02-May-2007 Devang Patel <dpatel@apple.com> Use 'static const char' instead of 'static const int'.
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
67cf561b7fc59e050709401de184e456440a2d52 02-May-2007 Dale Johannesen <dalej@apple.com> Add some support for (Darwin) code-generating directives in getInlineAsmLength.
Support is incomplete, but more accurate than gcc's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36634 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
794fd75c67a2cdc128d67342c6d88a504d186896 01-May-2007 Devang Patel <dpatel@apple.com> Do not use typeinfo to identify pass in pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMLoadStoreOptimizer.cpp
1b201684333c501e2f47178e1a4df68cd894c49d 01-May-2007 Evan Cheng <evan.cheng@apple.com> Doh. PC displacement is between the constantpool and the add instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36630 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
97de9138217d6f76f25100df272ec1a3c4d31aad 01-May-2007 Evan Cheng <evan.cheng@apple.com> eliminateFrameIndex() change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36626 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
5c3885ce8e6a3dc69913b50fe6bdc0c89c5432d5 01-May-2007 Evan Cheng <evan.cheng@apple.com> Under normal circumstances, when a frame pointer is not required, we reserve
argument space for call sites in the function immediately on entry to the
current function. This eliminates the need for add/sub sp brackets around call
sites. However, this is not always a good idea. If the "call frame" is large and
the target load / store instructions have small immediate field to encode sp
offset, this can cause poor codegen. In the worst case, this can make it
impossible to scavenge a register if the reserved spill slot is pushed too far
apart from sp / fp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36607 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
9118dbc7bd82a2f8a3c3d5fd38d3265afb6a5774 30-Apr-2007 Dale Johannesen <dalej@apple.com> Remove item: thumb padding in constant islands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36586 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
23c968478ea7e9e06eb322b8042711266a3b95db 30-Apr-2007 Dale Johannesen <dalej@apple.com> remove unused variable


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36585 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
0a1817392d3ad7ec2681e6bf495f490c443ec0b7 30-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Enable protected visibility on ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36583 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetAsmInfo.cpp
8593e418555fdae21a070357fd8734b4069c17d0 29-Apr-2007 Dale Johannesen <dalej@apple.com> Rewrite of Thumb constant islands handling (exact allowance for padding
around islands and jump tables).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36573 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
8650199fbb192c054f85647843b89e1182855718 29-Apr-2007 Dale Johannesen <dalej@apple.com> Make ARM-specific version of getInlineAsmLength


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36572 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
caa8055cf54c9e633b06d7d3433e5345e3ca982a 28-Apr-2007 Dale Johannesen <dalej@apple.com> change per review


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36519 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
25c1f9e125583fda422d11189a86bdf93a0e7386 28-Apr-2007 Dale Johannesen <dalej@apple.com> Prevent Thumb code from generating ARM instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36518 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4c6d20a096ad28aa6f812c07a48268e8a6ccb8fe 27-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> add parenthesis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36514 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
185ea1e2aad88b13c3978197851da078601afff3 27-Apr-2007 Evan Cheng <evan.cheng@apple.com> Doh. ARM::LEApcrel is a single instruction MI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36513 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
fdc9692f9763a7ffd1bbcadc01445db33fb468de 27-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> In Thumb mode, the frame register must be R7.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36512 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
64f4fa5e0eb505eec3a72041bec6b3a7f7739ded 27-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> ARM TLS: implement "general dynamic", "initial exec" and "local exec" models.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36506 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
RMTargetAsmInfo.cpp
b1df8f2750cb8df55f7e15985ef5c86f9092cbe1 27-Apr-2007 Evan Cheng <evan.cheng@apple.com> Darwin runtime library does not have these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36505 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
768c9f725bda048b3406b6289beb586ff6e933df 27-Apr-2007 Evan Cheng <evan.cheng@apple.com> Special handling of LEApcrel and tLEApcrel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36504 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
eec041a037a5dffadbc27af1d0e714e76079f06d 27-Apr-2007 Evan Cheng <evan.cheng@apple.com> Back out previous check-in. Incorrect.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36503 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
33fdc983fdda96bf68f184cd44726e66a4cfacff 27-Apr-2007 Evan Cheng <evan.cheng@apple.com> tLEApcrel is a AddrModeTs, i.e. pc relative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36502 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
faa510726f4b40aa4495e60e4d341c6467e3fb01 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Rename findRegisterUseOperand to findRegisterUseOperandIdx to avoid confusion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36483 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
6c087e5585b227f3c1d8278304c7cfbc7cd4f6e8 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Match MachineFunction::UsedPhysRegs changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36452 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
305b8a5f62c9d027f3d8a870fc12fc2abf69aeea 25-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> remember to emit weak reference in one more case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36438 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
1e341729dd003ca33ecea4abf13134f20062c5f8 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Relex assertions to account for additional implicit def / use operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36430 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
56c42ef3e43f8eb75c435e781d0ac8251c7588a1 23-Apr-2007 Dale Johannesen <dalej@apple.com> Make Thumb funcs containing islands 4-byte aligned. Fix bugs maintaining
BBOffsets and BBSizes when adjusting conditional branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36372 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
bd24f3f398bc26d686836dc412f3c1997953f427 23-Apr-2007 Dale Johannesen <dalej@apple.com> add Align field, and use when generating function alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36371 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMachineFunctionInfo.h
24fb52da3c797eaa9dc6315ef8c4713ed556daa0 23-Apr-2007 Dale Johannesen <dalej@apple.com> add isThumb (unused as yet)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36370 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
0ae4a3357a556261f25b1584a2d9914637c69e65 22-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Implement PIC for arm-linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36324 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMISelLowering.h
ba647becb98fbb01cc02aa6a522971a639ea2534 20-Apr-2007 Evan Cheng <evan.cheng@apple.com> Specify S registers as D registers' sub-registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36280 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
93305bc4620c12042b11a5e721feda7892d2f65d 20-Apr-2007 Chris Lattner <sabre@nondot.org> add a crazy idea


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36273 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
267bfb553e3ab44de2d4bac2866afc6de808c3f8 19-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix a bug in getFrameRegister.
Reported by Raul Herbster.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36262 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
120fba91a3d894daaa9317474b51e1fed8577a83 18-Apr-2007 Chris Lattner <sabre@nondot.org> dag combiner just got better at pruning bits. This fixes CodeGen/ARM/rev.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36222 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3c30d10b0484349d837d21490181600f5ebee6cd 17-Apr-2007 Chris Lattner <sabre@nondot.org> add a note


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36203 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
bed2946a96ecb15b0b636fa74cb26ce61b1c648e 16-Apr-2007 Anton Korobeynikov <asl@math.spbu.ru> Removed tabs everywhere except autogenerated & external files. Add make
target for tabs checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36146 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMRegisterInfo.cpp
5a3d40d88fbfe79ad7ed5802ff4fd1498c4c820b 13-Apr-2007 Chris Lattner <sabre@nondot.org> arm has r+r*s and r+i addr modes, but no r+i+r*s addr modes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35962 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e11529438cd825935410750881f6dd6b04806db2 11-Apr-2007 Chris Lattner <sabre@nondot.org> Fix incorrect fall-throughs in addr mode code. This fixes CodeGen/ARM/arm-negative-stride.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35909 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
eb13d1b710c385437f30f944de44a5b7053069f3 10-Apr-2007 Chris Lattner <sabre@nondot.org> restore support for negative strides


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35859 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
37caf8c68e71333b6d1a663efac088439681ad45 10-Apr-2007 Chris Lattner <sabre@nondot.org> remove dead target hooks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35846 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b445d0cbb9b299ba8ec7be2494e35c501b6d3a93 10-Apr-2007 Chris Lattner <sabre@nondot.org> remove some dead target hooks, subsumed by isLegalAddressingMode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35840 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
e21e39666e8a41ffd4971d8bb023b70b59297267 04-Apr-2007 Evan Cheng <evan.cheng@apple.com> Implement inline asm modifier P.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35640 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0a7baa24d17be1a3f4dc5bca53bc89a30dbc24db 04-Apr-2007 Evan Cheng <evan.cheng@apple.com> Typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35639 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
ed884f3a2f7225a0ea40fc18964b6f949cac3680 04-Apr-2007 Evan Cheng <evan.cheng@apple.com> Remove unused constant pool entries.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35635 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b03eacdbf39b37a98b65b936046b22cca8215d8d 03-Apr-2007 Evan Cheng <evan.cheng@apple.com> Fixed a bug that causes codegen of noop like add r0, r0, #0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35627 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
3c5ad82ba2b4c1ebbed7f1c4594c245f57ae08e0 03-Apr-2007 Evan Cheng <evan.cheng@apple.com> Inverted logic.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35619 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
b2c594f350c13f7faa263dfeba93d81b6ed964e9 03-Apr-2007 Chris Lattner <sabre@nondot.org> Arm supports negative strides as well, add them. This lets us compile:
CodeGen/ARM/arm-negative-stride.ll to:

LBB1_2: @bb
str r1, [r3, -r0, lsl #2]
add r0, r0, #1
cmp r0, r2
bne LBB1_2 @bb


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35609 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
d959aa421a8d14fc5aad29141f816db8f4362c7f 02-Apr-2007 Dale Johannesen <dalej@apple.com> fix off by 1 error in displacement computation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35602 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6e0784da77672df0263b6291490c5df5dcadd56e 02-Apr-2007 Chris Lattner <sabre@nondot.org> fix the CodeGen/ARM/2007-03-13-InstrSched.ll regression: allow IV's with scales
to be folded into non-store instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35601 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c4e3f8e736ecea7cd44a0fae75b1b3092567cbcd 02-Apr-2007 Chris Lattner <sabre@nondot.org> add support for the 'w' inline asm register class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35598 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
9996663fc6d50128a4897ff3568d311496e9d944 02-Apr-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> - Divides the comparisons in two types: comparisons that only use N and Z
flags (ARMISD::CMPNZ) and comparisons that use all flags (ARMISD::CMP).
- Defines the instructions: TST, TEQ (ARM) and TST (Thumb).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35573 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
3074d9df96b1b5fa3920672ef7555d3fbbc5bb65 01-Apr-2007 Evan Cheng <evan.cheng@apple.com> Add i16 address mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35551 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c9addb74883fef318140272768422656a694341f 31-Mar-2007 Chris Lattner <sabre@nondot.org> implement the new addressing mode description hook.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35521 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
87c6c9abb3c0c19cb172a3cf3cc3de79a03b02f7 29-Mar-2007 Evan Cheng <evan.cheng@apple.com> New entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35480 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
5e3c203cfd460ffa60341fb555fba6162abcbe61 29-Mar-2007 Evan Cheng <evan.cheng@apple.com> Can't re-materialize mov r, imm in thumb since mov would clobber the condition code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35479 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
616cc663daf965695809213d8cf8e3686e5309c3 29-Mar-2007 Evan Cheng <evan.cheng@apple.com> Add support for hidden visibility to darwin/arm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35448 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
caaf69107ece8bd9864fed4d64e2a84fa5f8cd4b 28-Mar-2007 Evan Cheng <evan.cheng@apple.com> Remove isLegalAddressImmediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35406 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
b8a93a45f8db0ff507c3833c88f24d5fcd9b2ed4 27-Mar-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> bugfix: sometimes the spiller puts a load between the "mov lr, pc" and "bx" of a CALL_NOLINK.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35381 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
f6fa5ee5c201f91217c3034ddcaecb63e7d8cd5a 27-Mar-2007 Evan Cheng <evan.cheng@apple.com> findRegisterUseOperand() changed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35366 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMLoadStoreOptimizer.cpp
4234f57fa02b1f04a9f52a7b3c2aa22d32ac521c 25-Mar-2007 Chris Lattner <sabre@nondot.org> switch TargetLowering::getConstraintType to take the entire constraint,
not just the first letter. No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35322 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
fa4bce2b76c8557cfd0794beef86efe5fb0087fa 21-Mar-2007 Dale Johannesen <dalej@apple.com> repair x86 performance, dejagnu problems from previous change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35245 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
a125cbe839398f7df475e322bdaf150c62a1c8c3 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> Updated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35229 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
8e59e163db8cd3e7b4c96e438fbedf78bff06707 20-Mar-2007 Dale Johannesen <dalej@apple.com> do not share old induction variables when this would result in invalid
instructions (that would have to be split later)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35227 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
64c88d741e51281edc15dcfc27dfaa500a89d43b 20-Mar-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> bugfix: When the source register of CALL_NOLINK was LR, the following code was emitted:
mov lr, pc
bx lr
So, the function was not called.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35218 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMInstrInfo.td
RMInstrThumb.td
c70d1849b7b85b06adf7dce856b3b19028fff8f7 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> Make two piece constant generation as a single instruction. It's re-materialized as a load from constantpool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35207 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
5603dcf21e3227e457624e9ff895f4893ca81528 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> New entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35206 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
bf2c8b3c96f5c885095a10b0fcb29438f92d73c2 20-Mar-2007 Evan Cheng <evan.cheng@apple.com> Added MRegisterInfo hook to re-materialize an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35205 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
1719e13da087914ccad3906d5cf8a4e92ba386eb 20-Mar-2007 Chris Lattner <sabre@nondot.org> fix indentation


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35202 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
80dae195c75a3ef38854645ae3cf41f8ae835644 20-Mar-2007 Dale Johannesen <dalej@apple.com> fix obvious comment bug


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35196 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.h
9f6636ff0c6a226dcc4cdeaa78c26686a7bf0cd5 19-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35163 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMInstrThumb.td
RMRegisterInfo.cpp
fa775d09c6bb506cf0696e0d688cafcb74955702 19-Mar-2007 Evan Cheng <evan.cheng@apple.com> Special LDR instructions to load from non-pc-relative constantpools. These are
rematerializable. Only used for constant generation for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35162 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMInstrThumb.td
a251570417bd49b3dfebbc7ad6b2b806aac05df4 19-Mar-2007 Evan Cheng <evan.cheng@apple.com> Constant generation instructions are re-materializable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35161 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMInstrThumb.td
368f20fda4a1cb9afdc2788a754b9ffe59afd391 16-Mar-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Only ARMv6 has BSWAP.
Fix MultiSource/Applications/aha test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35128 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
277074721680253b151efd49d0263a07fafbec3d 16-Mar-2007 Evan Cheng <evan.cheng@apple.com> Added isLegalAddressExpression(). Only allows X +/- C for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35122 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
a13fd108f2c77adc60045859f1df4923b59a9d10 13-Mar-2007 Evan Cheng <evan.cheng@apple.com> AM2 can match 2^n +/- 1. e.g. ldr r3, [r2, r2, lsl #2]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35088 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
961f879ed8642e63db712d0528680a48076fa760 13-Mar-2007 Evan Cheng <evan.cheng@apple.com> Zero is always a legal AM immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35087 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
e8308df0b9b34089bb6040f6902ba121441bdf3e 13-Mar-2007 Evan Cheng <evan.cheng@apple.com> Implement getTargetLowering() or else LSR won't be using ARM specific hooks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35077 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
b01fad6d19ac83f9c97eee16af438507383f36d8 13-Mar-2007 Evan Cheng <evan.cheng@apple.com> Updated TargetLowering LSR addressing mode hooks for ARM and Thumb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35075 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMISelLowering.h
1a9da0d66cbb7742e60ed957a7670a6547911de1 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> Minor stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35049 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
44f4fca3c02da1c3c90e99af08692003fabf2e45 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> Add comments about LSR / ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35048 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
2265b491931554eb59edfa1c2cfbda64b2e5de1b 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> Unfinished work and ideas related to register scavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35047 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
818c085232ef44d0e5afce529c5c669e3712b43d 09-Mar-2007 Dale Johannesen <dalej@apple.com> apply comments from review of last patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35045 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
a6bc6fc170b0fed4b1426caba1a3b58a55ca5164 09-Mar-2007 Dale Johannesen <dalej@apple.com> Add some observations from CoreGraphics benchmark. Remove register
scavenging todo item, since it is now implemented.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35044 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
23a95704949b99ca07afe45c6946d0fa26baf9f3 08-Mar-2007 Evan Cheng <evan.cheng@apple.com> Implement inline asm modifier c.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35035 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b582b1b1fcbbad4295fd75f49be6dd0596df910f 08-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix a typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35030 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
032953d74746fa89b62e49b63a38ba6d8827b81a 08-Mar-2007 Evan Cheng <evan.cheng@apple.com> Putting more constants which do not contain relocations into .literal{4|8|16}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35026 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
bf822eb6a38d62ab8623fd860c654820e69aea6d 08-Mar-2007 Evan Cheng <evan.cheng@apple.com> Change register allocation order to Dale's suggestion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35021 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
11788fde93fb74636aa333b2910d606d2c19ba9e 08-Mar-2007 Evan Cheng <evan.cheng@apple.com> Bug fix. Not advancing the register scavenger iterator correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35020 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
98ded765c2dc2f256e9f11502ca302f2b24f31e8 08-Mar-2007 Evan Cheng <evan.cheng@apple.com> For Darwin, put constant data into .const, .const_data, .literal{4|8|16}
sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35017 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetAsmInfo.cpp
603b83ebcdfb9c27e44c1da16f2799755e3e3022 07-Mar-2007 Evan Cheng <evan.cheng@apple.com> Only safe to use a call-clobbered or spilled callee-saved register as scratch register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35010 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
d0b82b301d700217a716526f9329bb031e0d6578 07-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Refactoring of formal parameter flags. Enable properly use of
zext/sext/aext stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35008 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
cb20998b3f853f8ce78485941225310697b9e5ea 07-Mar-2007 Evan Cheng <evan.cheng@apple.com> ARM always use register scavenger. No longer reserves R12.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34999 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
0ea12ec8484c45ca1394f3b2dcd39c9a34cf2ab9 07-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix some brittle code. Watch out for cases where register scavenger is pointing to deleted instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34998 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
3d06cf4584b44ea8c4a49778c2b61f8990692157 07-Mar-2007 Evan Cheng <evan.cheng@apple.com> Fix one more Thumb eliminateFrameIndex bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34990 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
e6257632fc2cc79a76ff0b5ba213f6ba2a7c469a 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> Register scavenging is now on by default for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34987 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
a90f3408b3aca71cd438efa2c539af041430e059 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> Make load / store optimizer use register scavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34986 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
cc1c427266817e0f41cbb9d0dc97a52890182040 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> Code clean up. Prepare to use register scavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34976 91177308-0d34-0410-b5e6-96231b3b80d8
RMLoadStoreOptimizer.cpp
140e33cfd1386b65bc936c7346d1b1cb72b26cae 06-Mar-2007 Evan Cheng <evan.cheng@apple.com> Scavenge a register using the register scavenger when needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34966 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
1d9baccc9b4d664a944f82eef9f708125e3f1552 06-Mar-2007 Anton Korobeynikov <asl@math.spbu.ru> Use new SDIselParamAttr enumeration. This removes "magick" constants
from formal attributes' flags processing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34963 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
6d7dd8ef46e9a505ddfb7d02cb2566560afec43d 05-Mar-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Use init_array/fini_array sections for static contructors/destructors when the ABI is AAPCS.
Fix SingleSource/Regression/C/ConstructorDestructorAttributes test on arm-linux-gnueabi.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34931 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
9f8e50d4ed7dcc5ca0f137830ff1185b2afa38bf 02-Mar-2007 Dale Johannesen <dalej@apple.com> eliminate unnecessary reset of SP in epilog on darwin


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34824 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c1c2de0ae7abecb4120dd28f722a2b73319b0cd8 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Use a spilled free callee-saved register as scratch register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34785 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
f49407b790d8664d8ff9c103931b115ebe9cc96e 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> - Track which callee-saved registers are spilled.
- Some code clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34783 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
cda067bad95654d970e14d3555f4aa685e5ebcae 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Switch from std::vector<bool> to BitVector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34781 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
f1d6006ad60e0eb28f5089a5bb407ada6bb7ef4e 01-Mar-2007 Bill Wendling <isanbard@gmail.com> Get rid of verboten <iostream> include.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34777 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b71aa2b6ca801d407c702483c412a290ab4af3b2 01-Mar-2007 Dale Johannesen <dalej@apple.com> Changes requested in review of last pass. Also pulled isThumb into a
member, instead of resetting in every function that uses it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34764 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
ad78ef215485389bb5c5698fa6f1ac670f0076d8 01-Mar-2007 Evan Cheng <evan.cheng@apple.com> Doh. ARM::PC is obvious a reserved register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34763 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
f1b214d3ca12f2d85f0d092b4920172bcc797bac 28-Feb-2007 Dale Johannesen <dalej@apple.com> Add intelligence about where to break large blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34755 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
36230cdda48edf6c634f2dcf69f9d78ac5a17377 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> Make requiresRegisterScavenging determination on a per MachineFunction basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34711 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
41a4d562f73ef9899998e30c874c5549ecd0cd04 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> Temporary: make R12 available in ARM mode if RegScavenger is being used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34709 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
1b051fc6a491c40cf3f926c089ad082938b653f0 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> Start making use of RegScavenger.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34708 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
5e6df4647e15c50daea9a8a4e7f4f417a266335c 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> PEI now passes a RegScavenger ptr to eliminateFrameIndex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34707 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.h
15991bf775234d4d5c25510fe8703b4751bd31d1 28-Feb-2007 Evan Cheng <evan.cheng@apple.com> Minor tweak. Allocate r0 to r3 in reverse order, r3 is least likely to be livein to a function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34701 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
5ef9226f30d0615558cdfc6a2b76c7a914a8e32f 27-Feb-2007 Evan Cheng <evan.cheng@apple.com> Let MRegisterInfo now owns RegScavenger; eliminateFrameIndex must preserve register kill info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34692 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
ce74de46dd2b1ca040bc5d2e17af64832bc0b633 25-Feb-2007 Dale Johannesen <dalej@apple.com> cosmetic changes from review of last patch. obvious


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34598 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
598270a68d162ee28cf5033b8cef236fe7ee767f 25-Feb-2007 Dale Johannesen <dalej@apple.com> remove crediting of Evan Cheng and me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34568 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
99c49a4b94ffabdd22f55e8274c7f92892e25559 25-Feb-2007 Dale Johannesen <dalej@apple.com> Removed WaterListOffset, inserted BBOffsets. Remove TODO item about this
from README.
When no water available, use end of block if in range. (More to do here.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34563 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
acdfa445ac370cbf392234e9176c98f46bb3f672 23-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> bugfix: SP wasn't updated for varargs when frame pointer was eliminated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34537 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
600c383e5c96d4b107b3e6ed4515eac25246cb02 23-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix stack alignment in functions with varargs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34532 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
88e37ae36652546c8e409cab69a1777af63cf095 23-Feb-2007 Dale Johannesen <dalej@apple.com> rewrite of constant islands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34523 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
EADME.txt
04321f70f5075673934d5b1ed3353dd15d911183 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Added -march=thumb; removed -enable-thumb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34521 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
RMTargetMachine.h
ead75905813e175898677cb8c4e4cc919ad2782d 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add option to turn on register scavenger; By default, spills kills the register being stored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34514 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
2ad9f17fee5d6395cd8db81668853e6dbf94060b 22-Feb-2007 Jim Laskey <jlaskey@mac.com> Simplify lowering and selection of exception ops.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34488 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
62819f31440fe1b1415473a89b8683b5b690d5fa 21-Feb-2007 Jim Laskey <jlaskey@mac.com> Support to provide exception and selector registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34482 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
b371f457b0ea4a652a9f526ba4375c80ae542252 19-Feb-2007 Evan Cheng <evan.cheng@apple.com> Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34428 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
a284cbf667e11660840dc7bae3ee9eeaa3c7cbd2 19-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1207:
Revert patches that caused the problem. Evan, please investigate and reapply
when you've discovered the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34399 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
eceada67286f0d8081c23aedd242f4deeffa85ad 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> Added getReservedRegs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34376 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
d2b7cec527a0efa552628378ebca7a8ca63bb45d 14-Feb-2007 Chris Lattner <sabre@nondot.org> Generalize TargetData strings, to support more interesting forms of data.
Patch by Scott Michel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34266 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
75016059889ecf571e6159c5812dff40781ac5bb 13-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Add space between // and the comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34246 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
3630e78db9268dbe81a9369a33e49b857804f2ec 13-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Add ABI information to ARM subtarget.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34245 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
RMTargetMachine.cpp
876eaf1135b40869f59fb27c87a7d626459e9181 13-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> According to ARM EABI, 8-bytes function arguments must be 8-bytes aligned.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34241 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMTargetMachine.cpp
e03cff6812ac41598e2bca7854985dc821a07f44 10-Feb-2007 Evan Cheng <evan.cheng@apple.com> These vectors are frequently large. Use std::vector instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34109 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
c99ef085b90b32952b484e8843fb66ad65215b61 09-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add reference counting to constantpool entries. Delete the unused ones.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34105 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
bd8251a9a6d4f90065b52e04d15120bc111e56aa 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> isLowRegister() expects input is a physical register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34013 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
403e4a4725af21c267d4189fe88bc48bd438b08c 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> Rename.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34011 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
5ebd10e5ac6f7746f228da3e37729760a1903a1e 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> If sp offset will be materialized in a register. Clear the offset field of str / ldr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34010 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
8fdbe560a0bc600121f1f2de10638c7b5d58a47a 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> Get rid of references to iostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34009 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMRegisterInfo.cpp
2ef02a220e3f949ebd18948ebb5bea34dc18b652 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> New entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34000 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
8bed6c968fd7164222bc0cf4b86686c88381c3b8 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> In thumb mode, R3 is reserved, but it can be live in to the function. If
that is the case, whenever we use it as a scratch register, save it to R12
first and then restore it after the use.
This is a temporary and truly horrible workaround!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33999 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
1f253d6e97f6be21210d03b748c07954313605e3 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> Update


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33998 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
7142f8755a07512d909d288f74a3f1ffa9c1411a 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> - If fp (r7) is used to reference stack objects, use [r, r] address mode.
- If there is a dynamic alloca, in the epilogue, restore the value of sp
using r7 - offset.
- Other bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33997 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
a01faf4a7ac34b2b89c93d62d3159a5c9c421149 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> eliminateFrameIndex() is even more complicated if frame ptr is used instead of SP when there are dynamic alloca's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33975 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
8e59ea998f1357768aa43cb00187e6c1c1a1cc7e 07-Feb-2007 Evan Cheng <evan.cheng@apple.com> Spill / restore should avoid modifying the condition register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33971 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrThumb.td
RMRegisterInfo.cpp
EADME-Thumb.txt
8c1a73ad3ffbc121a251b93b0fb4e64187f90645 06-Feb-2007 Evan Cheng <evan.cheng@apple.com> Select add FI, c correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33960 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
40984d7449c80a3d0365d31f25dff451fd54f060 06-Feb-2007 Evan Cheng <evan.cheng@apple.com> foldMemoryOperand() cannot fold tMOVrr sp into load / store in thumb mode. tLDRspi / tSTRspi cannot target / store high registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33958 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
88b633165a20398d1015eec561856500fcf30d7d 06-Feb-2007 Evan Cheng <evan.cheng@apple.com> eliminateFrameIndex() bug when frame pointer is used as base register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33945 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
ad0e465889d49f423436dc56d50c838df2672133 06-Feb-2007 Evan Cheng <evan.cheng@apple.com> - Store val, [sp, c] must be selected to tSTRsp.
- If c does not fit in the offset field, materialize sp + c into a register
using tADDhirr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33944 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b38cba928ee64849a950026be5e6162e48d83992 03-Feb-2007 Evan Cheng <evan.cheng@apple.com> ARM callseq_end should have a input flag operand so it would be scheduled right after the call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33832 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fc4034259f8424364d8622f579335c421c9615bd 03-Feb-2007 Evan Cheng <evan.cheng@apple.com> Fix comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33831 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
bd5d3dbdbe46c7325545a7cb8c891c0347375451 03-Feb-2007 Evan Cheng <evan.cheng@apple.com> - Branch max. displacement calculation bug.
- Add debugging info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33811 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
4642ca6589d3002861963744a157169f15d1ee90 03-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> bugfix: SP isn't resetted when function has FP and there is no spills.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33800 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
a21335dd763ab98ef3cf98e7a0573367c6dc845f 02-Feb-2007 Evan Cheng <evan.cheng@apple.com> Another thumb large stack offset codegen bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33795 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
05cc424082f797c5820b19f29f398c9cce9b9928 02-Feb-2007 Evan Cheng <evan.cheng@apple.com> Use MBB.empty() instead of MBB.size() for speed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33789 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1dd6a606ad59847164ef92ba82d533dc645f134c 02-Feb-2007 Evan Cheng <evan.cheng@apple.com> Watch out for empty BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33788 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
f48ae3353eafcd9f5dd26fd9d76d87674328b78e 02-Feb-2007 Evan Cheng <evan.cheng@apple.com> Ugh. Only meant to do this in thumb mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33780 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
2d1222c060f56909c57c7828b6cad6a3e25017e2 02-Feb-2007 Chris Lattner <sabre@nondot.org> add a note


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33778 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
9a2ef9509e76869c3d658fb3e321d9b9e9d479d9 02-Feb-2007 Evan Cheng <evan.cheng@apple.com> Fix a bug in getARMCMP (which translate CondCode to ARM specific CC) when the RHS is a constant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33775 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b0636156effd9a3563d905cbbfee59826c63e2a2 02-Feb-2007 Evan Cheng <evan.cheng@apple.com> Thumb does not have clz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33773 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
c33f674ca3e3f9834833d7b4840157f2c92f4e4c 01-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Define PrivateGlobalPrefix for ARM Linux. (Fix CodeGen/ARM/large_stack.ll)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33763 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
556f33c6e25b9f85abccc9568974df7ecc202ec0 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Pasto. Lots of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33762 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6f46e59d2a0e66f3646db9677258876960477f87 01-Feb-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix .thumb_func directive on linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33759 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b43216ee4a418257ce5530c02601b77efe86c354 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> - Off by one bugs in maximum displacement calculation / testing.
- In thumb mode, a new constpool island BB size should be 4 + 2 to
compensate for the potential padding due to alignment requirement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33753 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
e0c2b6b9a8ac874c7b57e445ff1513f0e37581f4 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> .set pc relative displacement bug: label should be moved down one instruction
to just before the add r1, pc:

Before:
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
LPCRELL0:
mov r1, #PCRELV0
add r1, pc

Now:
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
mov r1, #PCRELV0
LPCRELL0:
add r1, pc


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33744 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
736cefff8551d0f76ad5d8c726fe267eb0ee22d5 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Add a note.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33743 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
9312313a56ca3d4d904e8f7e9b4fe152a293eae1 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Also set alignment of stack-based structs to 4 in thumb mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33741 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMTargetMachine.cpp
9d945f78e5d26dac6778665bd7018a8fb3fd38c5 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Special epilogue for vararg functions. We cannot do a pop to pc because
there follows a sp increment for the va register save region. Instead issue
a separate pop to another register, increment sp, and then return:
pop {r4, r5, r6, r7}
pop {r3}
add sp, #3 * 4
bx r3


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33739 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
RMRegisterInfo.cpp
2021abe154e3cac523755b74fc5e62a2c9dad1fc 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Pessmistically assume the .align 2 before the first constpool entry adds
two bytes padding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33734 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
5b49ab999623a0bc3ca4f2484bd4adfcbf9eb16a 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Possible JT improvements.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33733 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
3bf12d0460cc6dcd5ad9375be9a2b05535b002a6 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Don't emit unnecessary .align directive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33729 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a2e35588c669a70fdc81426df8654fb4efc1d7f4 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Handle an interesting corner case: the constpool_entry being reference is two
instructions away, i.e. its address is equal to PC.
%r0 = tLDRpci <cp#0>
bx
CONSTPOOL_ENTRY 0 <cp#0>, 4


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33728 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
7588ad478aa95a7eb109034f0496f6d5a9769103 01-Feb-2007 Evan Cheng <evan.cheng@apple.com> Don't want to add FramePtr to callee save spill list twice.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33727 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
3548006a29ea9e5b63b53c9923fff96326fdc302 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Darwin ABI requires FP to point to stack slot of prev FP.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33724 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
11a065e599ff593acbdffebba1981c88ee0a9d4e 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Add entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33723 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
0fa10515ee93821aab035efbd39cf7cb311d639e 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Thumb add sp, #imm requires the immediate value be multiple of 4. For now,
change preferred alignment of short, byte, bool to 4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33722 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
86eb5153594b523e0b201735e14c92785d7ba601 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Update comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33721 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
3471b60e9586c8923800b0ce1cea042efa2675e7 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Thumb asm syntax does not want 's' suffix for flag setting opcodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33717 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
c0dbec7e1038ee60b8525eb1e8e3eaa6a839bd5b 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> When determining whether a pc relative branch / load displacement fits in the
instruction field, adjust it for PC value (4 for thumb, 8 for arm).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33711 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a9b8b8d62c67e96bc4dc2ed25298c539102f8638 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33707 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
934536dab2585079d72b0218b3d5a2ea07795beb 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> ConstPool island bug: watch out for cases where UserMI is the last MI of the BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33706 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
b5b84f92bf5b5d075cb7fa8f67fa94d062aebfe7 31-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> ARM fix: Miscompilation when frame pointer can't be eliminated. Uninitialized frame pointer register is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33703 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
193f8508809c5eab36181f442146cb40e0182138 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Specify the right CC for comparison libcalls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33702 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
b6ab2547cb4e4c7b237d88ad11316a69b111f88e 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> Observe -soft-float.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33699 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
0c61584d05894a5543f690803191a8b0da05b8fc 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> - Added Thumb constpool island support.
- Islands are inserted right after the user MI since thumb LDR cannot encode
negative offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33690 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
36640905e1b2b2f1179845acc46f3de02f972c8c 31-Jan-2007 Evan Cheng <evan.cheng@apple.com> During PEI, if the immediate value of sp + offset is too large (i.e. something
that would require > 3 instructions to materialize), load the immediate from a
constpool entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33667 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c60e76d139a96cc8bb7454929172cdb992e16971 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> - Fix codegen for pc relative constant (e.g. JT) in thumb mode:
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
LPCRELL0:
add r1, pc, #PCRELV0
This is not legal since add r1, pc, #c requires the constant be a multiple of 4.
Do the following instead:
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
LPCRELL0:
mov r1, #PCRELV0
add r1, pc

- In thumb mode, it's not possible to use .set generate a pc relative stub
address. The stub is ARM code which is in a different section from the thumb
code. Load the value from a constpool instead.
- Some asm printing clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33664 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.td
RMInstrThumb.td
5cbf985dcbc89fba3208e7baf8b6f488b06d3ec9 30-Jan-2007 Reid Spencer <rspencer@reidspencer.com> For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
confusion with external linkage types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33663 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelLowering.cpp
ad1b9a503cea6f8ab850a4b9caedbfeb6fce0bb7 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Copy and paste bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33658 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
b267ca17d1351b28d597e7807b5ed398e92d65e4 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Darwin -static should codegen static ctors / dtors to .constructor / .destructor sections.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33657 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetAsmInfo.cpp
c322a9ac146358c09279e59846872565a8b01b50 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Misseed thumb jumptable branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33656 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
236f677e48d45847ac10614bb9923129a028a4df 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> In thumb mode, round up stack frame size to multiple of 4 since add/sub
sp, imm instructions implicitly multiply the offset by 4.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33653 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
5b91c7f69ac2dc19edec1dbf76e5a8667c67bd28 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Thumb eliminateFrameIndex fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33652 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
cea117d2de0bfe422641e2ada4fef160e099a6b4 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Change the operand orders to t_addrmode_s* to make it easier to morph
instructions that use these address modes to instructions that use
t_addrmode_sp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33651 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrThumb.td
d1b2c1e88fe4a7728ca9739b0f1c6fd90a19c5fd 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> - In thumb mode, if size of MachineFunction is >= 2048, force LR to be
spilled (if it is not already).
- If LR is spilled, use BL to implement far jumps. LR is not used as a GPR
in thumb mode so it can be clobbered if it is properly spilled / restored
in prologue / epilogue.
- If LR is force spilled but no far jump has been emitted, try undo'ing the
spill by:
push lr -> delete
pop pc -> bx lr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33650 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
225dfe973bd85e36ff16fe7a08e458f285703cc9 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Use BL to implement Thumb far jumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33649 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
29836c330ff33e3c6a250a89b3e78abb3a1970c9 30-Jan-2007 Evan Cheng <evan.cheng@apple.com> Factor GetInstSize() out of constpool island pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33644 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMInstrInfo.cpp
RMInstrInfo.h
bcc5f36765e8111c13873a0c0dc874c92385d808 29-Jan-2007 Nate Begeman <natebegeman@mac.com> Finish off bug 680, allowing targets to custom lower frame and return
address nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33636 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
24f7fb3267e358bb589e1856d7c9cc43db5f91d5 29-Jan-2007 Evan Cheng <evan.cheng@apple.com> Comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33633 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
78268b943669cd0c0e1e874e2a329fcf200bd59b 29-Jan-2007 Evan Cheng <evan.cheng@apple.com> Remember if LR register has been spilled in this function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33632 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
b10308e440c80dd6ffb4b478f741ff7e5f30cb48 28-Jan-2007 Anton Korobeynikov <asl@math.spbu.ru> Propagate changes from my local tree. This patch includes:
1. New parameter attribute called 'inreg'. It has meaning "place this
parameter in registers, if possible". This is some generalization of
gcc's regparm(n) attribute. It's currently used only in X86-32 backend.
2. Completely rewritten CC handling/lowering code inside X86 backend.
Merged stdcall + c CCs and fastcall + fast CC.
3. Dropped CSRET CC. We cannot add struct return variant for each
target-specific CC (e.g. stdcall + csretcc and so on).
4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in
on first attribute has meaning 'This is hidden pointer to structure
return. Handle it gently'.
5. Fixed small bug in llvm-extract + add new feature to
FunctionExtraction pass, which relinks all internal-linkaged callees
from deleted function to external linkage. This will allow further
linking everything together.

NOTEs: 1. Documentation will be updated soon.
2. llvm-upgrade should be improved to translate csret => sret.
Before this, there will be some unexpected test fails.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33597 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
198529aaf123ae2431840dfa4c1b84eaebf0183b 27-Jan-2007 Evan Cheng <evan.cheng@apple.com> New entry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33569 91177308-0d34-0410-b5e6-96231b3b80d8
EADME-Thumb.txt
d85ac4d07966a56b3101598f29393f4532acc50f 27-Jan-2007 Evan Cheng <evan.cheng@apple.com> Thumb jumptable support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33568 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMConstantIslandPass.cpp
RMInstrThumb.td
53d7dbafc35b84859f94bbbb41254d3e3a6d9c6b 27-Jan-2007 Evan Cheng <evan.cheng@apple.com> Thumb add / sub with carry.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33562 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
ea9fc58bbf88163d95986f7561a2f882daf8a97e 27-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Some asm directives fixes for ELF.
Now we can compile llvm-gcc on arm-linux-gnueabi!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33558 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
3fdadfc9ab5fc1caf8c21b7b5cb8de1905f6dc60 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> Represent tADDspi and tSUBspi as two-address instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33551 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
RMRegisterInfo.cpp
44c3b9fdd416c79f4b67cde1aecfced5921efd81 26-Jan-2007 Jim Laskey <jlaskey@mac.com> Change the MachineDebugInfo to MachineModuleInfo to better reflect usage
for debugging and exception handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33550 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
fce1765a19565954b2b4629cf214b516663e7cbc 26-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix Data16bitsDirective for ELF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33549 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
43aeab68a69e443c528092b4424a498d813f96b7 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> Conditional branch being fixed up is not the last MI in the BB, there is a
unconditional branch following it. Simply invert the condition and swap
destinations if the conditional branch can reach the destination of the
unconditional branch:
beq L1
b L2
=>
bne L2
b L1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33548 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
1a92d941b3541f0c361caad499d0eb37a8339453 26-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> If the constant pool value is a extern weak symbol, emit the weak reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33543 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b60c02e0050ab62f0c65a644cd353598d49aac99 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> extload -> zextload


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33542 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrThumb.td
1ee29257428960fede862fcfdbe80d5d007927e9 26-Jan-2007 Jim Laskey <jlaskey@mac.com> Make LABEL a builtin opcode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33537 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelLowering.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
dd353b8ad747a8731a191848ff5db978a70bd0fb 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> SplitBlockBeforeInstr() insert a unconditional branch to the next BB. This
is unnecessary when we are fixing up a conditional branch since we will be
adding a unconditional branch to the destination of the original branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33517 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
7755facd76c518b09ed634f383170e8f3bcafc0d 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> Need to scan the function for branches even if there aren't any constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33515 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
a0bf794eb60b6795a121efcb9ff759e9e0955772 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> Forgot to update this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33512 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
c285414988ba026d01e5d8acc07a21cd06fd5732 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> Add comment, fix typo, reduce memory usage, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33510 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
3df62bde9b3f2557cccfa1f18d25b57bf0477f60 26-Jan-2007 Evan Cheng <evan.cheng@apple.com> I am an idiot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33509 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
b1cc0528232a732b337a4ba2eb0ba64d7538f1ef 25-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix elf object definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33502 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
743fa032a781c18a03e474e0a34f013598439ba5 25-Jan-2007 Evan Cheng <evan.cheng@apple.com> Doh. Skip JT branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33501 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
af5cbcb809bdbd30ebacab942994721c134d16a2 25-Jan-2007 Evan Cheng <evan.cheng@apple.com> Added (preliminary) branch shortening capability to constantpool island pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33497 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
6318ffd7361677e3b4487025538997ee01304452 25-Jan-2007 Evan Cheng <evan.cheng@apple.com> Getting rid uses of evil std::set<>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33496 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMMachineFunctionInfo.h
RMRegisterInfo.h
012f2d97b78e4eb9128f1d491f2c177768dbe527 24-Jan-2007 Evan Cheng <evan.cheng@apple.com> Use PC relative ldr to load from a constantpool in Thumb mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33484 91177308-0d34-0410-b5e6-96231b3b80d8
RMConstantIslandPass.cpp
RMISelDAGToDAG.cpp
RMInstrThumb.td
e966d6415ce3a9a6ef113ea4382131f46eb55540 24-Jan-2007 Evan Cheng <evan.cheng@apple.com> Allow [ fi#c, imm ] as ARM load / store addresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33474 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
79d4326b00e35359d38dd9b616840b27e4fc270e 24-Jan-2007 Evan Cheng <evan.cheng@apple.com> Various Thumb mode load / store isel bug fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33472 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c38f2bc3c29337f777c48b33daa8b1d6c76c27bf 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> - Reorg Thumb load / store instructions. Combine each rr and ri pair of
instructions into one (e.g. tLDRrr, tLDRri -> tLDR).
- Thumb ldrsb and ldrsh only have the [reg, reg] address format. If the
address is not an add, materialize a 0 immediate into a register and use
it as the offset field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33470 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrThumb.td
a6f567c89e5e15ab658ce798600eef7f313fe93d 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> Darwin HiddenDirective is .private_extern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33465 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
367372a30c36776e31958f0dc38306f32b80aa7c 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> PEI is now responsible for adding MaxCallFrameSize to frame size and align the stack. Each target can further adjust the frame size if necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33460 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
dc77540d9506dc151d79b94bae88bd841880ef37 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> hasFP() is now a virtual method of MRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33455 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
aa3e123ebb34620757ee1ac90e1ec593412ac258 23-Jan-2007 Evan Cheng <evan.cheng@apple.com> ARM AAPCS abi (Linux, etc.) requires 8-byte double / long alignment; Mac
requires 4-bytes alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33448 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
d44ecd86e749cf15f737fa9ebaf51875b762ab11 22-Jan-2007 Evan Cheng <evan.cheng@apple.com> Double and Long preferred alignment is 4 for Darwin, 8 for Linux.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33440 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
2576f136458bda873208399e4c8a5e21ee14b362 22-Jan-2007 Evan Cheng <evan.cheng@apple.com> Use bl to call Thumb fuctions directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33433 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
515674c7b66a411db4ea2fa1f5c30cd1461d3e51 20-Jan-2007 Evan Cheng <evan.cheng@apple.com> Round up stack to multiple of alignment only if it's a leaf function without alloca.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33401 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c1c728304731fe582afba73ddbb26b1dc59f5900 20-Jan-2007 Evan Cheng <evan.cheng@apple.com> Prologue and epilogue bugs for non-Darwin targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33390 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
75e18c403e4046057cb99accb3afc7cdf6fadd61 20-Jan-2007 Evan Cheng <evan.cheng@apple.com> Clean up ARM PEI code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33389 91177308-0d34-0410-b5e6-96231b3b80d8
RMMachineFunctionInfo.h
RMRegisterInfo.cpp
RMRegisterInfo.td
RMTargetMachine.cpp
34b12d24a0076d588154af9910ccaaba9b983f1a 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> Code clean up. Use def : pat instead of defining new instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33368 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
970a419633ba41cac44ae636543f192ea632fe00 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> isDarwin -> isTargetDarwin


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33366 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelLowering.cpp
RMRegisterInfo.cpp
RMTargetMachine.cpp
5be54b00bdbe1abd02dde46ca2c4b0e5aaf7b537 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> Restructure code a bit to make use of continue (simplifying things). Generalize
the .zerofill directive emission to not be darwin-specific.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33365 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
e433ea9dce0311d918db67e32c9822e309f8ebd2 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> Darwin doesn't support .bss, but it does have .zerofill


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33364 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
1a3771e30e48b9cc21ccdc79fc9cf37ec4104b17 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> Introduce TargetType's ELF and Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33363 91177308-0d34-0410-b5e6-96231b3b80d8
RMSubtarget.cpp
RMSubtarget.h
8e1185bd5ccc00576d2a4755f0e5ea8da5abb312 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> Modify emission of jump tables on darwin to emit an extra "l" label that
delimits the boundaries of jump tables. This lets the linker's dead code
stripping optimization do a better job.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33362 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
471ffaffd86c8bd48e8769c9e0c75553235deba0 19-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Fix section definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33359 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a8e2989ece6dc46df59b0768184028257f913843 19-Jan-2007 Evan Cheng <evan.cheng@apple.com> ARM backend contribution from Apple.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33353 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RM.td
RMAddressingModes.h
RMAsmPrinter.cpp
RMCommon.cpp
RMCommon.h
RMConstantIslandPass.cpp
RMConstantPoolValue.cpp
RMConstantPoolValue.h
RMFrameInfo.h
RMISelDAGToDAG.cpp
RMISelLowering.cpp
RMISelLowering.h
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMInstrThumb.td
RMInstrVFP.td
RMLoadStoreOptimizer.cpp
RMMachineFunctionInfo.h
RMMul.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMSubtarget.cpp
RMSubtarget.h
RMTargetAsmInfo.cpp
RMTargetMachine.cpp
RMTargetMachine.h
akefile
EADME-Thumb.txt
EADME.txt
5293e7d5d693e2e2f8f729856d6f3596b3ee244c 12-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Don't add or sub zero to sp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33142 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
a38bbf7dd3b824aab6c290aec9e03e5cfdd028f5 12-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Build constants using instructions mov/orr or mvn/eor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33141 91177308-0d34-0410-b5e6-96231b3b80d8
RMCommon.cpp
RMCommon.h
RMISelDAGToDAG.cpp
RMRegisterInfo.cpp
ca1f66db0d151a721a18039082afa54f5d454124 04-Jan-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com> Expand SELECT (f32/f64) and FCOPYSIGN (f32/f64).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32870 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
c2b861da18c54a4252fecba866341e1513fa18cc 02-Jan-2007 Evan Cheng <evan.cheng@apple.com> Fix naming inconsistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32823 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMRegisterInfo.h
9985f9f61e1dcffcd28caa2b6a42a1347624158d 31-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> implement missing compares
patch by Lauro
bug fixed by me


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32795 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
47857812e29324a9d1560796a05b53d3a9217fd9 31-Dec-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
Three changes:
1. Convert signed integer types to signless versions.
2. Implement the @sext and @zext parameter attributes. Previously the
type of an function parameter was used to determine whether it should
be sign extended or zero extended before the call. This information is
now communicated via the function type's parameter attributes.
3. The interface to LowerCallTo had to be changed in order to accommodate
the parameter attribute information. Although it would have been
convenient to pass in the FunctionType itself, there isn't always one
present in the caller. Consequently, a signedness indication for the
result type and for each parameter was provided for in the interface
to this method. All implementations were changed to make the adjustment
necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32788 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
0cc2bd12d22562acaeb3813250de2fcd30bd9e0e 29-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> fix comment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32767 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
da4842e266becaca6ca4b46428c277fc5fbadc7a 28-Dec-2006 Lauro Ramos Venancio <lauro.venancio@gmail.com> Define StaticCtorsSection and StaticDtorsSection for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32763 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
301009a0fca8dea601d54954eaaa8fae1e055c75 28-Dec-2006 Lauro Ramos Venancio <lauro.venancio@gmail.com> Implement SELECT_CC (f32/f64) for ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32762 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
6547c5598855837c5ca830aff4e3b48eb17e1f21 28-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> remove duplicated line
bug noticed by Lauro


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32761 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a8f9f4af54bc3048ec6aa034a5dcae9a34cef5e9 26-Dec-2006 Lauro Ramos Venancio <lauro.venancio@gmail.com> This patch defines extloadi1 and fixes an internal compiler error on
arm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32760 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1a199de81322a844faee0ea242f68fe326bbd885 21-Dec-2006 Chris Lattner <sabre@nondot.org> Fix for ARM weak symbols, patch by Lauro Ramos Venancio!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32740 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
95b2c7da5e83670881270c1cd231a240be0556d9 19-Dec-2006 Chris Lattner <sabre@nondot.org> eliminate static ctors for Statistic objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32703 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
3ef39ca6a119caced345e35204e170ee3ad9aa29 18-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> macros -> Inline functions
Lauros's patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32656 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
15404d060ba8b604c03b9223a0f2e2abcd0fdded 18-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> move ExtWeakSymbols to AsmPrinter


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32648 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
8897a7b02e6ccd50bbcb68133e55b54ec8a2e4e0 14-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> avoid using a constant table when a constant can be used inline


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32580 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
15f17a7c4746b8533aabf7c78bde82503ad9fc9f 14-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> Avoid creating invalid sub/add instructions on the prolog/epilog
patch by Lauro


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32577 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
a898ce687a3a835ae47548101fe847ca17d85f48 12-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> more general matching of the MVN instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32484 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
2426775c81b32ab0f12eb15e45001303737060c8 12-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> don't use "ordinary" addressing mode 1 when mvn is appropriate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32482 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f64945d83c61e540a448de0d0d23cda67c92ebe5 12-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> use MVN to handle small negative constants


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
450856d01b27518e88c738ab588765879cb8b1b6 12-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> add mvn


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32454 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4dfab986ab469744a3dfdcb0e0de5bbaa3d61c53 12-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> add note


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32452 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
796cbd87b497ef5d27815530736babc4cf946de6 10-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> .align is in bits
.comm is in bytes
:-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32408 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0ec729ef2d0bf7a9563ac2f2666cff37afe8c257 08-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> %progbits not @progbits


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32376 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
1366626e08322aaecd60704d02a5d881b0826725 08-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> add \"aw\",@progbits" to ctors and dtors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32373 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
a43f3d4c96ef2e2e2e3639ed673b6cf8879044ca 08-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> fix truncstorei1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32364 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1c411dee4f406e33d70666898f62ab9ba23bb73d 07-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> fix alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32337 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f5da13367f88f06e3b585dc2263ab6e9ca6c4bf8 07-Dec-2006 Bill Wendling <isanbard@gmail.com> What should be the last unnecessary <iostream>s in the library.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32333 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMRegisterInfo.cpp
7367d05cb713d11f8ac1e0815ac6b2eb6b17088c 07-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> make sure that we don't use a common symbol if a section was specified


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32310 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
ac0b6ae358944ae8b2b5a11dc08f52c3ed89f2da 06-Dec-2006 Chris Lattner <sabre@nondot.org> Detemplatize the Statistic class. The only type it is instantiated with
is 'unsigned'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
392b1b2ef3ace82b5104ba4c9280fc7957c669d4 06-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> print weak references


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32276 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetAsmInfo.cpp
d17aa4b1f17f6d3fcd9079aef239ff16cfb5907f 06-Dec-2006 Chris Lattner <sabre@nondot.org> These asm printers shouldn't use assembly/writer.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32262 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
97815c6b9c789ba741106d300f94f0c10ba6d978 05-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> expand memmove and memcpy


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32226 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
462af9a2e0e3667bc35203be2d14086bf14f0a02 05-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> add support for the "r" asm constraint
patch by Lauro Ramos Venancio


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32224 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
204b0c2ca06d451479a62aeca4822f8e1a942ccf 05-Dec-2006 Rafael Espindola <rafael.espindola@gmail.com> add support for weak linkage


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32222 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c0f64ffab93d11fb27a3b8a0707b77400918a20e 28-Nov-2006 Evan Cheng <evan.cheng@apple.com> Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead
of opcode and number of operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31947 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMMul.cpp
RMRegisterInfo.cpp
RMRegisterInfo.h
f819a4999aedd00368c850c1707e7ed0d59b4ace 09-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> implement load effective address similar to the alpha backend
remove lea_addri and the now unused memri addressing mode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31592 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
0d53826f3653a789cf1491c3c40a1f4a993992b6 08-Nov-2006 Evan Cheng <evan.cheng@apple.com> Match tblegen changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31571 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6e8c6493f0db238d06549368bd647e29ff3c7821 08-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> initial implementation of addressing mode 2
TODO: fix lea_addri


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31552 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
3751844b397c18ae0814fbb076583114d788e3af 04-Nov-2006 Chris Lattner <sabre@nondot.org> remove dead/redundant vars


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31435 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
f05696c1b5e5b77d32574f3c03f30b53b0178fce 03-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> revert previous patch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31411 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
115bfcb574bd75c870147616472fdf69b80048e7 03-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> add createCFGSimplificationPass to ARMTargetMachine::addInstSelector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31400 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
e931a37a4eb3e46d73ab0379dd84173dca1214f2 02-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> move ARMCondCodeToString to ARMAsmPrinter.cpp
remove unused variables from lowerCall


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31378 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
560a8d051220ca070b6550f5ee11517fe3e14c68 01-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> print null values in bss


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31349 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
9dca7ad78f80328abb95b3bd8a739c02a5496477 01-Nov-2006 Rafael Espindola <rafael.espindola@gmail.com> implement zextload bool and truncstore bool


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31348 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b191e0ab51174cfb86502308f520f139daa9e4a0 31-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add support for calling functions when the caller has variable sized objects


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31312 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
c35497fc2a8b984dbacede5b75b7be74c6756948 30-Oct-2006 Evan Cheng <evan.cheng@apple.com> All targets expand BR_JT for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31294 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7ae68ab3bccb6ef2d0e4c489f0648dc5d37ae362 26-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> initial support for frame pointers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31197 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMRegisterInfo.cpp
RMRegisterInfo.td
0e5e3aacbe5dc069187b94896f5844f8dfbb44c5 24-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::VACOPY


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31170 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
3d7d39ab1549f5ab7a929ec18a3e6481862cf247 24-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> fix warning about missing newline at end of file


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31162 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
578e64a041ab2c199d37fd6346eb34b9e9c2e9ed 24-Oct-2006 Chris Lattner <sabre@nondot.org> implement uncond branch insertion, mark branches with isBranch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31160 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
c391d16b498ff7401d815c72154f4ced1d6e212c 23-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement STRB and STRH


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31138 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
d8ed7f8cde5e56eff4692303af97aa6495c41ca4 23-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::MEMSET


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31137 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b83eb6447ba155342598f0fabe1f08f5baa9164a 20-Oct-2006 Reid Spencer <rspencer@reidspencer.com> For PR950:
This patch implements the first increment for the Signless Types feature.
All changes pertain to removing the ConstantSInt and ConstantUInt classes
in favor of just using ConstantInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31063 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
2435786414ac5e3eccddc6dc8252421f627aee6a 19-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> use Pat to implement extloadi8 and extloadi16


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31052 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
20793115a85e4f9dc873b81f7bc32644519e9b20 19-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement undef


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31049 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b97809c9a7a4ef681070ab1cbc7bd4fb18d34ba1 19-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> print common symbols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31048 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
3692c7ac171de3b90b205b59e5ce8fd9f7755a9f 19-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement extloadi8 and extloadi16


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31047 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
6495bdd8d2702e23092a55bc82446db1768f3cf7 19-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand SIGN_EXTEND_INREG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31046 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4749aa4ea373e2928444974a761e14cf8c3b3f90 19-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand brind so that we don't have to implement jump tables right now


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31045 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
71d94d8817edd01481c2a21625bcfafdb3874d0a 18-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add blx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31037 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
70673a1a90e355d7b9aa552d673b81e5fa1d2c80 18-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add isTerminatortto b and bcond


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31036 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5f1b698aebbb5bb3dc349d287d5c85ab542860ec 18-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement CallingConv::Fast as CallingConv::C


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31034 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
226f8bc38c7d1916518602126c7091812265bf6b 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::SDIV, ISD::UDIV, ISD::SREM and ISD::UREM


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31014 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
04d88ffdb56858397427af5839202459de44e5a4 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add the FPUnaryOp and DFPUnaryOp classes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31013 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
c01c87c8baa5e7dd1e11a3bacbd3b4e94ebe6c5d 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add FABSS and FABSD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31012 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3f3a6f6c3b6b178602a1246e62ed1e6c5d9631de 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> remove extra [] in stores


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31008 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
32bd5f4f6a374f9ab0fcbd2cf6a8561019a6fd56 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> initial implementation of addressing mode 5


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31002 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
0d479ecbb132e324da27b674fea5b232115fe964 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add the immediate to the Offset in eliminateFrameIndex


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30998 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
f621abca9e423bd32a85519bc0b0b249807b2571 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add FSTD and FSTS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30996 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
EADME.txt
199dd67c50990a45876b871008cad0dad0f63b88 17-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add FCPYS and FCPYD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30995 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.cpp
a605be69c3127a811793bcc0cbc65e9df79321ca 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add fdivs e fdivd


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30988 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
0505be03adf561afbd8307516125da10dba8f0c4 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::SHL_PARTS, ISD::SRA_PARTS and ISD::SRL_PARTS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30987 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
27e469ef139e0b0b447360b0c37aeb0496b6d7d8 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> define the DFPBinOp class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30981 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a6f149d548bcd5f24f391fa0f9b196104db550dd 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add the FPBinOp class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30980 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
90057aaeb7e0d2cc0d0cfd3d7dd59a86ad4ec4e6 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> define the Addr1BinOp class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30979 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
15a6c3e97629c61c8407b57289be53de9237b554 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> define the IntBinOp class and use it to implement the multiply instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30978 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
bb1e2fbc68f91a8df61eeca3a0ff2024b622e2a2 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> fix assembly syntax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30977 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
82c678b83ca996cc11fc48d5151c4a3ece7aa565 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement LDRB, LDRSB, LDRH and LDRSH


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30976 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
EADME.txt
bec2e38a9156aa35a200914a700de1e8d0810d80 16-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement smull and umull


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30975 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMMul.cpp
EADME.txt
d2b5668208ac9c699be39408f68f4dee9deb90f0 14-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::BRCOND


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30963 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6c5ae3edd3c32704991793f1ba7703d87df4f06d 14-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> fix some fp condition codes
use non trapping comparison instructions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30962 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
8b2794aeff151be8cdbd44786c1d0f94f8f2e427 13-Oct-2006 Evan Cheng <evan.cheng@apple.com> Merge ISD::TRUNCSTORE to ISD::STORE. Switch to using StoreSDNode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30945 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
33d06bcfd41447b94cd66126b948469d41f7f2ef 13-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add FNEGS and FNEGD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30932 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5395538307ea22b55cd01776badbc8c4f977df63 13-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add SBCS and SUBS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30930 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
26a76d1024e944669a80dd86bcd0b81d7394a4f5 13-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement calls to functions that return long


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30929 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
42b62f3f81b0c38954dd64b37cbb3c995f84073c 13-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement unordered floating point compares


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30928 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
65d8c1e8d49150187b8561be931abf6b83afd793 12-Oct-2006 Chris Lattner <sabre@nondot.org> mark call adjustments as modifying the SP


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30911 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
af9db75943c11eebd642c1645d3c3f4003fe37e3 11-Oct-2006 Evan Cheng <evan.cheng@apple.com> Add properties to ComplexPattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30891 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
493a7fc5c301faca1f5cd042c5f546bd008c282e 10-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> uint <-> double conversion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30862 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
667c349febc16ec921093baedadeeab8488dbe26 10-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add fp sub


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30859 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
b47e1d033cd3519d4a50779e07563a8dc2c0a21a 10-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add double <-> int conversion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30858 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
0d9fe764dfcacf9978680cd8bc91cc27191f8546 10-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> compare doubles


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30856 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
4b20fbc01d6a298bb3c8c22cb76c33b366c1c1b9 10-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> initial support for fp compares. Unordered compares not implemented yet


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30854 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
466685d41a9ea4905b9486fea38e83802e46f196 09-Oct-2006 Evan Cheng <evan.cheng@apple.com> Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30844 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
2dc0f2b55cdcf53af2e07ef86069959aab0cc358 09-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add float -> double and double -> float conversion


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30835 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
ecdb9f93c42e54574e1eaf121ad68b6e27f721fb 09-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add ADDS and ADCS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30830 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
48bc9fbf191057abfa42e26517cef61a241c7516 09-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::SELECT


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30829 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5af3a686a72a5f9fd3902606971ff6e265110f6b 09-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add a note


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30828 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
ad557f9d11b942efe858a27e330a15d9f0af5dad 09-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> expand ISD::EXTLOAD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30827 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
896f10c30995dd522eadea553780785d8cf967d6 09-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> most ARM targets are little endian


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30826 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
e5bbd6d75353103f0053af2f6686e70c58abe340 07-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement FUITOS and FUITOD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30803 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
5aca927ae68ef063b86914378749dc59646d3f52 07-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement FLDD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30802 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
EADME.txt
d9ae778125a0be138d97254a07775bb741740ff2 07-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement fadds, faddd, fmuls and fmuld


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30801 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
935b1f8fce78d1a33251aec02dcd0108b8dd0366 06-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add optional input flag to FMRRD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30774 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
614057b843e5b27963095c42042a232e85527f02 06-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add support for calling functions that return double


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30771 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
af1dabef358895da483617b6f5cbd25b60b6f410 06-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> fix some bugs affecting functions with no arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30767 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1b5076887e32f9a16a1f65f3ce9abf11c31abcd7 06-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> fix the stack alignment


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30766 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
4a408d46d4c2d9a7e5598c9a96886374ca7044f6 06-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> add support for calling functions that have double arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30765 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
786225adf09e606c795ef68a1f789c12f37869f2 06-Oct-2006 Evan Cheng <evan.cheng@apple.com> Make use of getStore().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30759 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
39b5a2125922810233c0c1fd52a9621a979c8c19 05-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> use a const ref for passing the vector to ArgumentLayout


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30756 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a284584352df145da085b11db7891b67c0f09430 05-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> implement a ArgumentLayout class to factor code common to LowerFORMAL_ARGUMENTS and LowerCALL
implement FMDRR
add support for f64 function arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30754 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
1da31ee472b9615d7329c656e2cc17c419ed7c95 05-Oct-2006 Chris Lattner <sabre@nondot.org> Pass the MachineFunction into EmitJumpTableInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30742 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
6f6f69950f5a36d3ae7e4d1d5b96fda204beb79a 05-Oct-2006 Chris Lattner <sabre@nondot.org> Use getSectionForFunction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30740 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
cd71da5cf05cd023d2082e2a13a2524ee7d5af3f 03-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> Implement floating point constants


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30704 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
EADME.txt
9e071f0ae3eb92c61de4860fdb12d4499b50e392 02-Oct-2006 Rafael Espindola <rafael.espindola@gmail.com> fix the names of the 64bit fp register
initial support for returning 64bit floating point numbers


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30692 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.td
27185190e6652d4c6d70bdf1202a518e5d3f3053 29-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add floating point registers
implement SINT_TO_FP


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30673 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.td
75645496fa9cd73d7dd1965b055ca6b7ee7a291d 22-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add a note


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30581 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
ebdabda708348d54d86719a1af30e2410b5bcc0a 21-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> more condition codes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30567 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7246d33e2a99c3060089e550775403f6779662e7 21-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> if a constant can't be an immediate, add it to the constant pool


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30566 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4d4c0217587d6cd76da9690aca0be49f5508db7a 19-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> fix header
add comments
untabify


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30486 91177308-0d34-0410-b5e6-96231b3b80d8
RMMul.cpp
71f3b94fa846114a2ce45645ef262e230737e65e 19-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> Implement a MachineFunctionPass to fix the mul instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30485 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMMul.cpp
RMTargetMachine.cpp
RMTargetMachine.h
3ad5e5cf998841681e9d11e08eb82a94ddffd1f8 13-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add shifts to addressing mode 1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30291 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
c356a572e34131bf767f35e3fecefae36fab744a 12-Sep-2006 Evan Cheng <evan.cheng@apple.com> Reflects MachineConstantPoolEntry changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30279 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
817e7fdb8bc3ca40fc44c1efe4fbb63855bd3d2d 11-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> implement SRL and MUL


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30262 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
1b3956b516e28d634e48a12074b94acca5bcc679 11-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add the correct fallback for ARMDAGToDAGISel::SelectAddrMode1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30261 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7cca7c531773f763c1bddc3fefecc99ba56ed10a 11-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> partial implementation of the ARM Addressing Mode 1


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30252 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
ff59d22232f47f138ed3d753975153befd1aa0c0 11-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> call AsmPrinter::doInitialization in ARMAsmPrinter::doInitialization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30246 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
f369dd26fbc8e3e174be0773fec6bffa80fb6cd4 10-Sep-2006 Anton Korobeynikov <asl@math.spbu.ru> Removed unnecessary Mangler creation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30239 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
0a200600e777c8aac9646c9cba69693155a8142c 08-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> implement shl and sra


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30191 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
4e30764d5515b09e48ebed1ee61d206d11fc2293 08-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add the eor (xor) instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30189 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
5c2aa0a4d819039a8f31d04041f6c8056cd10fb7 08-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> implement unconditional branches
fix select.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30186 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
fde1b3bb2f15b74c713d98a79fcddaff1ac00dd1 08-Sep-2006 Jim Laskey <jlaskey@mac.com> 1. Remove condition on delete.

2. Protect and outline createTargetAsmInfo.

3. Misc. kruft.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30169 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
a0f3d17daac73c9c71aad497b298cbe82848f726 08-Sep-2006 Jim Laskey <jlaskey@mac.com> Make target asm info a property of the target machine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30162 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMTargetMachine.h
8e8de8f7765a08ab3aa4f48b302cf19ccb9740e2 08-Sep-2006 Jim Laskey <jlaskey@mac.com> Break out target asm info into separate files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30161 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetAsmInfo.cpp
RMTargetAsmInfo.h
563321a2582851c653d0863e8e0bba3d483734f9 06-Sep-2006 Jim Laskey <jlaskey@mac.com> Separate target specific asm properties from the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30126 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
b52b54d4af18ca3cbfa56361aea94635b2a6919e 06-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add the orr instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30125 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
09e460662a8d7328da1b938d5581a6ef3740b51d 05-Sep-2006 Chris Lattner <sabre@nondot.org> Completely eliminate def&use operands. Now a register operand is EITHER a
def operand or a use operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30109 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
3a02f020eb72cb10f7f794532ddc35e478f7e86b 04-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add support for returning 64bit values


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30103 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
1911fd4f85aebcd4d7b8f27313c5a363eebf49cb 04-Sep-2006 Chris Lattner <sabre@nondot.org> Completely rearchitect the interface between targets and the pass manager.
This pass:

1. Splits TargetMachine into TargetMachine (generic targets, can be implemented
any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by
things using libcodegen and other support).
2. Instead of having each target fully populate the passmgr for file or JIT
output, move all this to common code, and give targets hooks they can
implement.
3. Commonalize the target population stuff between file emission and JIT
emission.
4. All (native code) codegen stuff now happens in a FunctionPassManager, which
paves the way for "fast -O0" stuff in the CFE later, and now LLC could
lazily stream .bc files from disk to use less memory.
5. There are now many fewer #includes and the targets don't depend on the
scalar xforms or libanalysis anymore (but codegen does).
6. Changing common code generator pass ordering stuff no longer requires
touching all targets.
7. The JIT now has the option of "-fast" codegen or normal optimized codegen,
which is now orthogonal to the fact that JIT'ing is being done.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30081 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
RMTargetMachine.h
c4fa386471cb1ff9d1f2acc24e2d0682e5a17b1b 03-Sep-2006 Chris Lattner <sabre@nondot.org> Simplify target construction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30070 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
bc4cec9a62113dc7d12caa03f1a1e8a31ce60b9c 03-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add the SETULT condition code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30067 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5f450d2948ac5bd83a31fbfff89e17b0e2536a80 02-Sep-2006 Rafael Espindola <rafael.espindola@gmail.com> add more condition codes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30056 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
9ade218533429146731213eacb7e12060e65ff58 26-Aug-2006 Evan Cheng <evan.cheng@apple.com> Select() no longer require Result operand by reference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29898 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
755be9b3debb5ffdb21759c0213d51116a522e1b 25-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> use @ for comments
store LR in an arbitrary stack slot
add support for writing varargs functions


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29876 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMFrameInfo.h
RMISelDAGToDAG.cpp
cdda88cd1216c146d9ea095561467a9c83f65908 24-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> add the "eq" condition code
implement a movcond instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29857 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMISelDAGToDAG.cpp
RMInstrInfo.td
6f602de3b68cc63d12554ad6ae3c98a4c436c32d 24-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> create a generic bcond instruction that has a conditional code argument


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29856 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
687bc49d1ada3fe0a2cd3fb5c044f12d267f259f 24-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> initial support for branches


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29854 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
f4d40050f1dc6488b5f706b95a2c8657f5a97c2f 22-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> add a README.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29814 91177308-0d34-0410-b5e6-96231b3b80d8
EADME.txt
3c000bf817f90212c8e5585f7c1981e68ee393fc 22-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> initial support for select


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29802 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMTargetMachine.cpp
a5dfc835d4acf4316364ecc2b0c9cbaf13d08020 21-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> add the and instruction


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29793 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
3717ca965bcfb6c66d7e9016566be842a9cc5629 20-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> call computeRegisterProperties


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29780 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
5ea64fd9eb0027ad20a66ea29211eef79d8842a0 18-Aug-2006 Chris Lattner <sabre@nondot.org> Constify some methods. Patch provided by Anton Vayvod, thanks!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29756 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.td
f3a335cedff423438789c593d58be068b124dc1e 17-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> add a "load effective address"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29748 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
ec46ea34dcc615558294e9e0dbd0dd0f2894f574 16-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> Declare the callee saved regs
Remove the hard coded store and load of the link register
Implement ARMFrameInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29727 91177308-0d34-0410-b5e6-96231b3b80d8
RMFrameInfo.h
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
RMTargetMachine.cpp
RMTargetMachine.h
61369da0e5461047adce93f3c3f5ca1ff49707fc 14-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> select code like
ldr rx, [ry, #offset]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29664 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
e219945348207453a2d5e21021ba3211f8f94e25 11-Aug-2006 Chris Lattner <sabre@nondot.org> Eliminate use of getNode that takes a vector.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29614 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
8742867f958221d4a8cbbba7eef309bfe037653c 11-Aug-2006 Chris Lattner <sabre@nondot.org> elimiante use of getNode that takes vector of operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29612 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
64a752f7c7cf160f2887d0a16d5922359832c9c2 11-Aug-2006 Evan Cheng <evan.cheng@apple.com> Match tablegen changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29604 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
bb7b844bec6c53ac29ac4c50d7b3963e7f193efb 11-Aug-2006 Evan Cheng <evan.cheng@apple.com> CALLSEQ_* produces chain even if that's not needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29603 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
a1ab92d8b7c2d4ca0ab35b372c8eb7b66a5cbf64 09-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> correctly set LocalAreaOffset of TargetFrameInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29589 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
RMTargetMachine.cpp
7a53bd0890b0529c6dd95e97611dca7a8c4d6077 09-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> fix the spill code


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29583 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMRegisterInfo.cpp
2c8cdc6c1ad78179fecfe67e7e0e250a4053c714 09-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> fix the loading of the link register in emitepilogue


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29580 91177308-0d34-0410-b5e6-96231b3b80d8
RMRegisterInfo.cpp
46adf8119df362bfed7c6d71dd467527981b97da 08-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> change the addressing mode of the str instruction to reg+imm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29571 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMRegisterInfo.cpp
1a009468175a6e123cc3f1e847c10e3e126a44db 08-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> initial support for variable number of arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29567 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMRegisterInfo.cpp
2ef88a09b71f458ad415b35a1fb431c3d15d7eb1 08-Aug-2006 Evan Cheng <evan.cheng@apple.com> Match tablegen isel changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29549 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
341b864c8d3868a17d5dbcdb4bac40c6586b60cf 04-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> use a 'register pressure reducing' scheduler
make sure only one move is used in a hello world


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29520 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6312da0fc7b5cbefba2243775ed9de5c405274be 04-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> Bug fix: always generate a RET_FLAG in LowerRET
fixes ret_null.ll and call.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29519 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
f4fda804038e8f98b597e82a8df607321369db2b 03-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> add and use ARMISD::RET_FLAG


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29499 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
1ed3af11b55becb26a3485494409084a668a9232 01-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> start comments with #
move the constant pool to .text
correctly print loads of labels
mark R0, R1, R2 and R3 as caller save


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29451 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
06c1e7eacb11edd1671eabfc11291b7716be2608 01-Aug-2006 Rafael Espindola <rafael.espindola@gmail.com> implement LowerConstantPool and LowerGlobalAddress


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29433 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
6d581e8d1567e4e445e2cc88c790c79eb75c226a 31-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> handle GlobalValue::InternalLinkage in doFinalization


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29417 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
2641cad180e94c0d26630d4ed455352f19be3d3e 28-Jul-2006 Evan Cheng <evan.cheng@apple.com> Remove InFlightSet hack. No longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29373 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
b01c4bbb4573e0007444e218b683840e4519e0c8 27-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> emit global constants


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29344 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
fac00a93a98d43ac0d4ca514aa5a720debbd6c8b 25-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> implement function calling of functions with up to 4 arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29274 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
44819cb20ab8e84fc14ea1e6fc69fb797c70a50d 21-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> implemented sub
correctly update the stack pointer in the prologue and epilogue


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29244 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.cpp
355746359ebca83ccb5accab0f3ffd20f0374a35 18-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> initial prologue and epilogue implementation. Need to define add and sub before finishing it :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29175 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.cpp
84b19be6ab9544f72eafb11048a1121f5ea77c95 16-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> skeleton of a lowerCall implementation for ARM


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29159 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
a4e64359aafaf23e440e9dc171859daef1995f1b 11-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> add the memri memory operand
this makes it possible for ldr instructions with non-zero immediate


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29103 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
aefe14299a05621864e6372639f372173a96bf38 10-Jul-2006 Rafael Espindola <rafael.espindola@gmail.com> create the raddr addressing mode that matches any register and the frame index
use raddr for the ldr instruction. This removes a dummy mov from the assembly output
remove SelectFrameIndex
remove isLoadFromStackSlot
remove isStoreToStackSlot


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29079 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMRegisterInfo.cpp
49e441558760cc1708778b5d0ded05d639c1e5ed 27-Jun-2006 Rafael Espindola <rafael.espindola@gmail.com> handle the "mov reg1, reg2" case in isMoveInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28945 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMRegisterInfo.cpp
58421d7d0847bbb5f4cc95c647726d55c45582c0 18-Jun-2006 Rafael Espindola <rafael.espindola@gmail.com> initial implementation of ARMRegisterInfo::eliminateFrameIndex
fixes test/Regression/CodeGen/ARM/ret_arg5.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28854 91177308-0d34-0410-b5e6-96231b3b80d8
RMInstrInfo.td
RMRegisterInfo.cpp
RMRegisterInfo.td
1790d44d0dbe3412e012be5e43b89e67064bdb86 16-Jun-2006 Chris Lattner <sabre@nondot.org> Don't pass target name into TargetData anymore, it is never used or needed.
Remove explicit casts to std::string now that there is no overload resolution
issues in the TargetData ctors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28830 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
337c4ad6e7726555b61a6a75d5172a77fe12c029 12-Jun-2006 Rafael Espindola <rafael.espindola@gmail.com> lower more then 4 formal arguments. The offset is currently hard coded.
implement SelectFrameIndex


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28751 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4b02367d542c7eaa429d1ff73119ae44ddb252a8 06-Jun-2006 Rafael Espindola <rafael.espindola@gmail.com> add R0 to liveout
expand "ret null" (implements test/Regression/CodeGen/ARM/ret_void.ll)
note that a Flag link is missing between the copy and the branch


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28691 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
85ede37ca90b5d1846f37631ed2e8b8f96000db8 30-May-2006 Rafael Espindola <rafael.espindola@gmail.com> Expand ret into "CopyToReg;BRIND"


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28559 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
a5135ba0c9d6d063f0479927b7b6ae26124a0fdd 27-May-2006 Chris Lattner <sabre@nondot.org> Ignore generated files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28520 91177308-0d34-0410-b5e6-96231b3b80d8
cvsignore
6848be1a27e08a89dcd4dd69f746471a608012cd 27-May-2006 Evan Cheng <evan.cheng@apple.com> Change RET node to include signness information of the return values. i.e.
RET chain, value1, sign1, value2, sign2, ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28510 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
a1334cdfb2afb44a1f2b952391e1b2fecb1d4bd8 26-May-2006 Rafael Espindola <rafael.espindola@gmail.com> On ARM, alignment is in bits
Add lr as a hard coded operand of bx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28494 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMInstrInfo.td
2f99b6bd9601ae8d4fd248f9bb701283795c38a8 25-May-2006 Rafael Espindola <rafael.espindola@gmail.com> implement initial version of ARMAsmPrinter::printOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28470 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
c3c1a86aa0fe3ccda2de383330b90b77aaccd710 25-May-2006 Rafael Espindola <rafael.espindola@gmail.com> port the ARM backend to use ISD::CALL instead of LowerCallTo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28469 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
6a3d5a62f09d4093468525a07a0143cae0e9df41 25-May-2006 Evan Cheng <evan.cheng@apple.com> Assert if InflightSet is not cleared after instruction selecting a BB.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28459 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
afe358e7d46da9d29ba02fbbf81bdfb4ac4a4520 24-May-2006 Evan Cheng <evan.cheng@apple.com> Clear HandleMap and ReplaceMap after instruction selection. Or it may cause
non-deterministic behavior.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28454 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
d74ea2bbd8bb630331f35ead42d385249bd42af8 24-May-2006 Chris Lattner <sabre@nondot.org> Patches to make the LLVM sources more -pedantic clean. Patch provided
by Anton Korobeynikov! This is a step towards closing PR786.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28447 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
4b442b528a50ef06cd75f0e7c41ad57426175bcc 23-May-2006 Rafael Espindola <rafael.espindola@gmail.com> implement minimal versions of
ARMAsmPrinter::runOnMachineFunction
LowerFORMAL_ARGUMENTS
ARMInstrInfo::isMoveInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28431 91177308-0d34-0410-b5e6-96231b3b80d8
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
d988b32abad0634df07c18629e899f256935fde7 20-May-2006 Owen Anderson <resistor@mac.com> Make all of the TargetMachine subclasses use the new string TargetData methods.

This is part of the on-going work on PR 761.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28414 91177308-0d34-0410-b5e6-96231b3b80d8
RMTargetMachine.cpp
dc124a234a02ea6fc1061a51ade1bb7b817ddb61 18-May-2006 Rafael Espindola <rafael.espindola@gmail.com> implement movri
add a stub LowerFORMAL_ARGUMENTS


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28388 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
RMInstrInfo.td
RMRegisterInfo.cpp
0f3ac8d8d4ce23eb2ae6f9d850f389250874eea5 18-May-2006 Evan Cheng <evan.cheng@apple.com> getCalleeSaveRegs and getCalleeSaveRegClasses are no long TableGen'd.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28378 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
RMRegisterInfo.cpp
RMRegisterInfo.h
c01d497255f0d344163178c5f827e8b73f6f04d6 17-May-2006 Evan Cheng <evan.cheng@apple.com> Remove PointerType from class Target


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28368 91177308-0d34-0410-b5e6-96231b3b80d8
RM.td
1c8f0536b3a19c0ff9f5a8ba039a771c4bb2bfbc 16-May-2006 Rafael Espindola <rafael.espindola@gmail.com> add an abort after every assert(0)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28310 91177308-0d34-0410-b5e6-96231b3b80d8
RMISelDAGToDAG.cpp
7bc59bc3952ad7842b1e079753deb32217a768a3 15-May-2006 Rafael Espindola <rafael.espindola@gmail.com> added a skeleton of the ARM backend


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28301 91177308-0d34-0410-b5e6-96231b3b80d8
RM.h
RM.td
RMAsmPrinter.cpp
RMISelDAGToDAG.cpp
RMInstrInfo.cpp
RMInstrInfo.h
RMInstrInfo.td
RMRegisterInfo.cpp
RMRegisterInfo.h
RMRegisterInfo.td
RMTargetMachine.cpp
RMTargetMachine.h
akefile