Jason W Kim [Thu, 18 Nov 2010 23:37:15 +0000 (23:37 +0000)]
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
Bill Wendling [Thu, 18 Nov 2010 23:36:54 +0000 (23:36 +0000)]
Give the exclamation point a name instead of a number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119759
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 Nov 2010 23:30:10 +0000 (23:30 +0000)]
More tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119756
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 Nov 2010 23:29:56 +0000 (23:29 +0000)]
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
Anton Korobeynikov [Thu, 18 Nov 2010 23:25:52 +0000 (23:25 +0000)]
Move getInitialFrameState() to TargetFrameInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119754
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 23:24:22 +0000 (23:24 +0000)]
ARM Encoding information for UXTAH and friends.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119753
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Thu, 18 Nov 2010 22:06:46 +0000 (22:06 +0000)]
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
Bill Wendling [Thu, 18 Nov 2010 21:50:54 +0000 (21:50 +0000)]
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
Owen Anderson [Thu, 18 Nov 2010 21:46:31 +0000 (21:46 +0000)]
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
Jim Grosbach [Thu, 18 Nov 2010 21:43:37 +0000 (21:43 +0000)]
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
Bob Wilson [Thu, 18 Nov 2010 21:43:22 +0000 (21:43 +0000)]
Change the 'x' type modifier for Neon intrinsics to force a signed integer.
This makes it symmetric with the 'u' modifier that forces an unsigned type.
This is needed for unsigned vector shifts, where the shift amount still needs
to be signed. PR8482 (Radar
8603521).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119742
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Thu, 18 Nov 2010 21:19:35 +0000 (21:19 +0000)]
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
Duncan Sands [Thu, 18 Nov 2010 21:16:28 +0000 (21:16 +0000)]
Fix thinko: we must turn select(anyext, sext) into sext(select)
not anyext(select). Spotted by Frits van Bommel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119739
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 18 Nov 2010 21:16:28 +0000 (21:16 +0000)]
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
Owen Anderson [Thu, 18 Nov 2010 21:15:19 +0000 (21:15 +0000)]
More Thumb2 encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119737
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 Nov 2010 20:32:18 +0000 (20:32 +0000)]
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
Duncan Sands [Thu, 18 Nov 2010 20:05:18 +0000 (20:05 +0000)]
The DAGCombiner was threading select over pairs of extending loads even
if the extension types were not the same. The result was that if you
fed a select with sext and zext loads, as in the testcase, then it
would get turned into a zext (or sext) of the select, which is wrong
in the cases when it should have been an sext (resp. zext). Reported
and diagnosed by Sebastien Deldon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119728
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Thu, 18 Nov 2010 19:59:41 +0000 (19:59 +0000)]
Factor code for testing whether replacing one value with another
preserves LCSSA form out of ScalarEvolution and into the LoopInfo
class. Use it to check that SimplifyInstruction simplifications
are not breaking LCSSA form. Fixes PR8622.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119727
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 18 Nov 2010 19:44:29 +0000 (19:44 +0000)]
Missed the _RET versions of LDMIA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119726
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 18 Nov 2010 19:40:05 +0000 (19:40 +0000)]
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
Owen Anderson [Thu, 18 Nov 2010 18:59:13 +0000 (18:59 +0000)]
Fix an order-of-deallocation issue where the AttrListImpl could be deallocated before the global
LLVMContext, causing memory errors. Patch by Peter Collingbourne.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119721
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 Nov 2010 18:49:05 +0000 (18:49 +0000)]
Use thread-safe statics to avoid a static constructor here. This isn't thread-safe on MSVC, but we don't
support threaded LLVM there anyways.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119718
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 18:48:28 +0000 (18:48 +0000)]
Oops, missed this file when remaing ExpandPseudos to ExpandISelPseudos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119717
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 18:45:06 +0000 (18:45 +0000)]
Rename ExpandPseudos to ExpandISelPseudos to help clarify its role.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119716
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 Nov 2010 18:32:40 +0000 (18:32 +0000)]
Completely rework the datastructure GVN uses to represent the value number to leader mapping. Previously,
this was a tree of hashtables, and a query recursed into the table for the immediate dominator ad infinitum
if the initial lookup failed. This led to really bad performance on tall, narrow CFGs.
We can instead replace it with what is conceptually a multimap of value numbers to leaders (actually
represented by a hashtable with a list of Value*'s as the value type), and then
determine which leader from that set to use very cheaply thanks to the DFS numberings maintained by
DominatorTree. Because there are typically few duplicates of a given value, this scan tends to be
quite fast. Additionally, we use a custom linked list and BumpPtr allocation to avoid any unnecessary
allocation in representing the value-side of the multimap.
This change brings with it a 15% (!) improvement in the total running time of GVN on 403.gcc, which I
think is pretty good considering that includes all the "real work" being done by MemDep as well.
The one downside to this approach is that we can no longer use GVN to perform simple conditional progation,
but that seems like an acceptable loss since we now have LVI and CorrelatedValuePropagation to pick up
the slack. If you see conditional propagation that's not happening, please file bugs against LVI or CVP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119714
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 18:01:40 +0000 (18:01 +0000)]
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
Dan Gohman [Thu, 18 Nov 2010 17:44:17 +0000 (17:44 +0000)]
Fix typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119712
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 17:39:01 +0000 (17:39 +0000)]
Document the units for the Size field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119711
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 17:14:56 +0000 (17:14 +0000)]
Bounds-check APInt's operator[].
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119708
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 17:14:05 +0000 (17:14 +0000)]
ExpandPseudos doesn't have any dependencies, so it can use the
simple form of INITIALIZE_PASS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119707
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 17:06:31 +0000 (17:06 +0000)]
Strip trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119706
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 17:05:57 +0000 (17:05 +0000)]
Use llvm_unreachable for "impossible" situations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119705
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 18 Nov 2010 17:05:13 +0000 (17:05 +0000)]
Add support for PHI-translating sext, zext, and trunc instructions,
enabling more PRE. PR8586.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119704
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 08:07:09 +0000 (08:07 +0000)]
slightly simplify code and substantially improve comment. Instead of
saying "it would be bad", give an example of what is going on.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119695
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 08:00:57 +0000 (08:00 +0000)]
remove a pointless restriction from memcpyopt. It was
refusing to optimize two memcpy's like this:
copy A <- B
copy C <- A
if it couldn't prove that noalias(B,C). We can eliminate
the copy by producing a memmove instead of memcpy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119694
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 07:49:32 +0000 (07:49 +0000)]
filecheckize, this is still not optimal, see PR8643
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119693
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 07:39:57 +0000 (07:39 +0000)]
remove another pointless noalias check: M is a memcpy, so the
source and dest are known to not overlap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119692
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 07:38:43 +0000 (07:38 +0000)]
use AA::isNoAlias instead of open coding it. Remove an extraneous noalias check:
there is no need to check to see if the source and dest of a memcpy are noalias,
behavior is undefined if not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119691
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 07:32:33 +0000 (07:32 +0000)]
finish a thought.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119690
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 07:02:37 +0000 (07:02 +0000)]
rearrange some code, splitting memcpy/memcpy optimization
out of processMemCpy into its own function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119687
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 06:41:51 +0000 (06:41 +0000)]
allow eliminating an alloca that is just copied from an constant global
if it is passed as a byval argument. The byval argument will just be a
read, so it is safe to read from the original global instead. This allows
us to promote away the %agg.tmp alloca in PR8582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119686
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 06:26:49 +0000 (06:26 +0000)]
enhance the "alloca is just a memcpy from constant global"
to ignore calls that obviously can't modify the alloca
because they are readonly/readnone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119683
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 06:20:47 +0000 (06:20 +0000)]
fix a small oversight in the "eliminate memcpy from constant global"
optimization. If the alloca that is "memcpy'd from constant" also has
a memcpy from *it*, ignore it: it is a load. We now optimize the testcase to:
define void @test2() {
%B = alloca %T
%a = bitcast %T* @G to i8*
%b = bitcast %T* %B to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %b, i8* %a, i64 124, i32 4, i1 false)
call void @bar(i8* %b)
ret void
}
previously we would generate:
define void @test() {
%B = alloca %T
%b = bitcast %T* %B to i8*
%G.0 = getelementptr inbounds %T* @G, i32 0, i32 0
%tmp3 = load i8* %G.0, align 4
%G.1 = getelementptr inbounds %T* @G, i32 0, i32 1
%G.15 = bitcast [123 x i8]* %G.1 to i8*
%1 = bitcast [123 x i8]* %G.1 to i984*
%srcval = load i984* %1, align 1
%B.0 = getelementptr inbounds %T* %B, i32 0, i32 0
store i8 %tmp3, i8* %B.0, align 4
%B.1 = getelementptr inbounds %T* %B, i32 0, i32 1
%B.12 = bitcast [123 x i8]* %B.1 to i8*
%2 = bitcast [123 x i8]* %B.1 to i984*
store i984 %srcval, i984* %2, align 1
call void @bar(i8* %b)
ret void
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119682
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 06:16:43 +0000 (06:16 +0000)]
filecheckize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119681
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 02:53:02 +0000 (02:53 +0000)]
trivial QoI improvement. On this invalid input:
sahf movl 344(%rdi),%r14d
we used to produce:
t.s:2:1: error: unexpected token in argument list
^
we now produce:
t.s:1:11: error: unexpected token in argument list
sahf movl 344(%rdi),%r14d
^
rdar://
8581401
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119676
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 Nov 2010 02:15:42 +0000 (02:15 +0000)]
patch from Frits van Bommel:
The attached patch fixes IRBuilder and the NoFolder class so that when
NoFolder is used the instructions it generates are treated just like
the ones IRBuilder creates directly (insert into block, assign them a
name and debug info, as applicable).
It does this by
1) having NoFolder return Instruction*s instead of Value*s,
2) having IRBuilder call Insert(Value, Name) on values obtained from
the folder like it does on instructions it creates directly, and
3) adding an Insert(Constant*, const Twine& = "") overload which just
returns the constant so that the other folders shouldn't have any
extra overhead as long as inlining is enabled.
While I was there, I also added some missing (CreateFNeg and various
Create*Cast) methods to NoFolder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119614
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 18 Nov 2010 02:04:25 +0000 (02:04 +0000)]
Change CodeGen to use .loc directives. This produces a lot more readable output
and testing is easier. A good example is the unknown-location.ll test that
now can just look for ".loc 1 0 0". We also don't use a DW_LNE_set_address for
every address change anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119613
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 Nov 2010 01:43:23 +0000 (01:43 +0000)]
Silence compiler warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119610
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 01:39:50 +0000 (01:39 +0000)]
Remove trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119608
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 01:38:26 +0000 (01:38 +0000)]
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
Jim Grosbach [Thu, 18 Nov 2010 01:38:07 +0000 (01:38 +0000)]
Revert 119600 to unbreak the build. Francois, please investigate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119606
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 18 Nov 2010 01:35:23 +0000 (01:35 +0000)]
Do not throw away alignment when generating the DAG for
memset; we may need it to decide between MOVAPS and MOVUPS
later. Adjust a test that was looking for wrong code.
PR 3866 /
8675131.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119605
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 Nov 2010 01:28:51 +0000 (01:28 +0000)]
Code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119604
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 01:20:48 +0000 (01:20 +0000)]
Add FIXME.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119603
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 01:15:56 +0000 (01:15 +0000)]
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
Owen Anderson [Thu, 18 Nov 2010 01:08:42 +0000 (01:08 +0000)]
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
Francois Pichet [Thu, 18 Nov 2010 00:59:50 +0000 (00:59 +0000)]
Appease MSVC 2008: you can't use keyword this inside EXPECT_EQ().
This is because of bug 331418 on Microsoft Connect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119600
91177308-0d34-0410-b5e6-
96231b3b80d8
John Thompson [Thu, 18 Nov 2010 00:50:20 +0000 (00:50 +0000)]
Fixed to use input redirection for source - to eliminate .s output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119599
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 18 Nov 2010 00:46:58 +0000 (00:46 +0000)]
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
Owen Anderson [Thu, 18 Nov 2010 00:42:51 +0000 (00:42 +0000)]
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
Dan Gohman [Thu, 18 Nov 2010 00:34:22 +0000 (00:34 +0000)]
Introduce memoization for ScalarEvolution dominates and properlyDominates
queries, and SCEVExpander getRelevantLoop queries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119595
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 Nov 2010 00:19:10 +0000 (00:19 +0000)]
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
Oscar Fuentes [Thu, 18 Nov 2010 00:12:27 +0000 (00:12 +0000)]
Updated library dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119592
91177308-0d34-0410-b5e6-
96231b3b80d8
John Thompson [Wed, 17 Nov 2010 23:58:47 +0000 (23:58 +0000)]
Bug 8621 fix - pointer cast stripped from inline asm constraint argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119590
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Wed, 17 Nov 2010 23:35:07 +0000 (23:35 +0000)]
Make MCJIT work with CMake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119589
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 17 Nov 2010 23:33:14 +0000 (23:33 +0000)]
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
Dan Gohman [Wed, 17 Nov 2010 23:28:48 +0000 (23:28 +0000)]
Factor out the code for purging a SCEV from all the various memoization maps.
Some of these maps may merge in the future, but for now it's convenient to have
a utility function for them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119587
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 17 Nov 2010 23:21:44 +0000 (23:21 +0000)]
Merge the implementations of isLoopInvariant and hasComputableLoopEvolution, and
memoize the results. This improves compile time in code which highly complex
expressions which get queried many times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119584
91177308-0d34-0410-b5e6-
96231b3b80d8
Wesley Peck [Wed, 17 Nov 2010 22:54:43 +0000 (22:54 +0000)]
Now that the MBlaze backend is in its own directory, split the test cases into multiple files for different types of instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119580
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 17 Nov 2010 22:27:42 +0000 (22:27 +0000)]
Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperand
to ScalarEvolution. Delete SCEV::~SCEV. SCEV is no longer virtual.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119578
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 17 Nov 2010 22:16:31 +0000 (22:16 +0000)]
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
Jim Grosbach [Wed, 17 Nov 2010 21:57:51 +0000 (21:57 +0000)]
Fix comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119573
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 17 Nov 2010 21:57:32 +0000 (21:57 +0000)]
These tests are looking for library function names that
appear to differ on Linux. Try to make them pass on Linux.
Would be good for a Linux person to review this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119572
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 17 Nov 2010 21:41:58 +0000 (21:41 +0000)]
Move SCEV::dominates and properlyDominates to ScalarEvolution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119570
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Wed, 17 Nov 2010 21:25:39 +0000 (21:25 +0000)]
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
Bob Wilson [Wed, 17 Nov 2010 21:25:36 +0000 (21:25 +0000)]
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
Bob Wilson [Wed, 17 Nov 2010 21:25:33 +0000 (21:25 +0000)]
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
Bob Wilson [Wed, 17 Nov 2010 21:25:27 +0000 (21:25 +0000)]
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
Dan Gohman [Wed, 17 Nov 2010 21:23:15 +0000 (21:23 +0000)]
Move SCEV::isLoopInvariant and hasComputableLoopEvolution to be member
functions of ScalarEvolution, in preparation for memoization and
other optimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119562
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 17 Nov 2010 21:05:55 +0000 (21:05 +0000)]
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
Evan Cheng [Wed, 17 Nov 2010 20:56:30 +0000 (20:56 +0000)]
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
Dan Gohman [Wed, 17 Nov 2010 20:50:07 +0000 (20:50 +0000)]
Reference ScalarEvolution by name rather than directly in LICM,
to avoid an unneeded dependence.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119557
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 17 Nov 2010 20:49:12 +0000 (20:49 +0000)]
Before replacing a phi node with a different value, it
needs to be checked that this won't break LCSSA form.
Change the existing checking method to a more direct one:
rather than seeing if all predecessors belong to the loop,
check that the replacing value is either not in any loop or
is in a loop that contains the phi node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119556
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 17 Nov 2010 20:48:51 +0000 (20:48 +0000)]
Revert r119551, which broke buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119555
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 17 Nov 2010 20:48:38 +0000 (20:48 +0000)]
Verify SCEVAddRecExpr's invariant in ScalarEvolution::getAddRecExpr
instead of in SCEVAddRecExpr's constructor, in preparation for an
upcoming change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119554
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 17 Nov 2010 20:35:29 +0000 (20:35 +0000)]
Provide Thumb2 encodings for bitfield instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119551
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 17 Nov 2010 20:23:08 +0000 (20:23 +0000)]
Fix ScalarEvolution's range memoization to avoid using a
default ctor with ConstantRange.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119550
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 Nov 2010 20:13:28 +0000 (20:13 +0000)]
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
Rafael Espindola [Wed, 17 Nov 2010 20:03:54 +0000 (20:03 +0000)]
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
Owen Anderson [Wed, 17 Nov 2010 19:57:38 +0000 (19:57 +0000)]
More miscellaneous Thumb2 encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119546
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 Nov 2010 19:47:20 +0000 (19:47 +0000)]
add some justification for "using namespace llvm;"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119544
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 17 Nov 2010 19:30:11 +0000 (19:30 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119542
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Wed, 17 Nov 2010 19:16:20 +0000 (19:16 +0000)]
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
Benjamin Kramer [Wed, 17 Nov 2010 19:11:46 +0000 (19:11 +0000)]
InstCombine: Add a missing irem identity (X % X -> 0).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119538
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 17 Nov 2010 18:52:15 +0000 (18:52 +0000)]
Move some those Xor simplifications which don't require creating new
instructions out of InstCombine and into InstructionSimplify. While
there, introduce an m_AllOnes pattern to simplify matching with integers
and vectors with all bits equal to one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119536
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 17 Nov 2010 18:11:11 +0000 (18:11 +0000)]
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
Chris Lattner [Wed, 17 Nov 2010 17:14:55 +0000 (17:14 +0000)]
various cleanups and other improvements, patch by Zhanyong Wan!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119515
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 17 Nov 2010 16:24:40 +0000 (16:24 +0000)]
Add support for .int.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119512
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 17 Nov 2010 16:15:42 +0000 (16:15 +0000)]
Add support for .2byte, .4byte and .8byte.
Fixes PR8631.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119511
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 17 Nov 2010 16:06:47 +0000 (16:06 +0000)]
MC-JIT: Stub out "pure" streamer.
- No immediate use, but maybe someone feels like hacking on it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119510
91177308-0d34-0410-b5e6-
96231b3b80d8