Commit Graph

39352 Commits

Author SHA1 Message Date
Bob Wilson cc386fb125 Rename ARM instruction formats NEONGetLnFrm, NEONSetLnFrm and NEONDupFrm to
"N..." instead of "NEON..." for consistency with the other NEON format names.

llvm-svn: 106921
2010-06-25 23:56:05 +00:00
Bruno Cardoso Lopes 74d716b9cd Add AVX convert CVTSS2SI{rr,rm} and CVTDQ2PS{rr,rm} instructions
llvm-svn: 106917
2010-06-25 23:47:23 +00:00
Bob Wilson d66f66a5cf Remove unused NEONFrm and ThumbMiscFrm ARM instruction formats.
Renumber MiscFrm to 25.

llvm-svn: 106916
2010-06-25 23:45:37 +00:00
Bruno Cardoso Lopes 83651094ad Reapply r106896:
Add several AVX MOV flavors
Support VEX encoding for MRMDestReg

llvm-svn: 106912
2010-06-25 23:33:42 +00:00
Daniel Dunbar acbdf53db4 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.

llvm-svn: 106908
2010-06-25 23:14:54 +00:00
Jim Grosbach c34befc78f make sure to handle dbg_value instructions in the middle of the block, not
just at the head, when doing diamond if-conversion. rdar://7797940

llvm-svn: 106907
2010-06-25 23:05:46 +00:00
Bruno Cardoso Lopes 4530fed87e revert this now, it's using avx instead of sse :)
llvm-svn: 106906
2010-06-25 23:04:29 +00:00
Jakob Stoklund Olesen 55d738e2e1 Don't track kills in VNInfo. Use interval ends instead.
The VNInfo.kills vector was almost unused except for all the code keeping it
updated. The few places using it were easily rewritten to check for interval
ends instead.

The two new methods LiveInterval::killedAt and killedInRange are replacements.

This brings us down to 3 independent data structures tracking kills.

llvm-svn: 106905
2010-06-25 22:53:05 +00:00
Evan Cheng 02b184de5b Change if-conversion block size limit checks to add some flexibility.
llvm-svn: 106901
2010-06-25 22:42:03 +00:00
Bob Wilson 2530ca0647 Add support for encoding 3-register NEON instructions, and fix
emitNEON2RegInstruction's handling of 2-address operands.

llvm-svn: 106900
2010-06-25 22:40:46 +00:00
Dan Gohman fb9712bdae In GenerateReassociations, don't bother thinking about individual
SCEVUnknown values which are loop-variant, as LSR can't do anything
interesting with these values in any case. This fixes very slow compile
times on loops which have large numbers of such values.

llvm-svn: 106897
2010-06-25 22:32:18 +00:00
Bruno Cardoso Lopes a34d9b6d84 Add several AVX MOV flavors
Support VEX encoding for MRMDestReg

llvm-svn: 106896
2010-06-25 22:27:51 +00:00
Devang Patel 5c0f85c7dd Collect debug info for optimized variables of inlined functions.
llvm-svn: 106895
2010-06-25 22:07:34 +00:00
Jim Grosbach 8a6deefec6 80 column and typo fix
llvm-svn: 106894
2010-06-25 22:02:28 +00:00
Dale Johannesen ce97d55ad9 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.

llvm-svn: 106893
2010-06-25 21:55:36 +00:00
Bob Wilson e70c8b150b Add support for encoding 2-register NEON instructions.
llvm-svn: 106891
2010-06-25 21:17:19 +00:00
Dan Gohman 8de1fe3ccf pcmpeqd and friends are Commutable.
llvm-svn: 106886
2010-06-25 21:05:35 +00:00
Bob Wilson 574f68f815 Fix indentation.
llvm-svn: 106881
2010-06-25 20:54:44 +00:00
Bill Wendling e41e40f689 - Reapply r106066 now that the bzip2 build regression has been fixed.
- 2010-06-25-CoalescerSubRegDefDead.ll is the testcase for r106878.

llvm-svn: 106880
2010-06-25 20:48:10 +00:00
Bill Wendling ef7acd9a24 We should remove the live range from the destination register only if *all* defs
are dead, not just the def of this register. I.e., a register could be dead, but
it's subreg isn't.

Testcase to follow with a subsequent patch.

llvm-svn: 106878
2010-06-25 20:42:55 +00:00
Bruno Cardoso Lopes 553fafc6ce Move the last piece of SSE2 convert instructions to the Convert Instructions section
llvm-svn: 106877
2010-06-25 20:29:27 +00:00
Bruno Cardoso Lopes 62d1403a03 More SSE refactoring, this time with different types of MOVs
llvm-svn: 106876
2010-06-25 20:22:12 +00:00
Dan Gohman 89dd42af31 Eliminate a redundant FoldingSet lookup.
llvm-svn: 106872
2010-06-25 18:47:08 +00:00
Jim Grosbach ba3ece6f27 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.

llvm-svn: 106871
2010-06-25 18:43:14 +00:00
Bruno Cardoso Lopes e76c0b13b9 Refactoring of more SSE conversion instructions. Also add some AVX instrinsics Int_V... placeholders
llvm-svn: 106867
2010-06-25 18:06:22 +00:00
Dale Johannesen 2ac3b9cbd4 Cosmetic.
llvm-svn: 106865
2010-06-25 17:41:07 +00:00
Benjamin Kramer 58e6c2eded Rewrite MemoryBuffer::getSTDIN to use read(2) and a SmallVector buffer.
llvm-svn: 106856
2010-06-25 16:07:18 +00:00
Duncan Sands 2dc70bea54 Remove variables which are assigned to but for which the value
is not used.  Spotted by gcc-4.6.

llvm-svn: 106854
2010-06-25 14:48:39 +00:00
Benjamin Kramer 948dd57945 Bring back the empty vector workaround I removed in r106839. Looks like MSVC needs it.
llvm-svn: 106841
2010-06-25 12:51:01 +00:00
Benjamin Kramer ce2a92220f Tweak MemoryBuffer to allocate the class itself, the name and possibly the
buffer in the same chunk of memory.

2 less mallocs for every uninitialized MemoryBuffer and 1 less malloc for every
MemoryBuffer pointing to a memory range translate into 20% less mallocs on
clang -cc1 -Eonly Cocoa_h.m.

llvm-svn: 106839
2010-06-25 11:50:40 +00:00
Gabor Greif b890fc8023 use ArgOperand accessors
and CallInst for getting hold
of the intrinsic's arguments

simplify along the way (at least for me this is much more legible now)
Bill, Baldrick or Anton, please review\!

llvm-svn: 106838
2010-06-25 11:25:30 +00:00
Gabor Greif 7dd3afdff3 use ArgOperand API (the simple part)
llvm-svn: 106837
2010-06-25 09:44:37 +00:00
Gabor Greif eba0be7dc9 use ArgOperand API
llvm-svn: 106836
2010-06-25 09:38:13 +00:00
Gabor Greif 41b81ee2fb use ArgOperand API
llvm-svn: 106835
2010-06-25 09:36:23 +00:00
Gabor Greif ed9ae7bf21 use ArgOperand API and CallSite to access arguments of CallInst
llvm-svn: 106833
2010-06-25 09:03:52 +00:00
Gabor Greif b5874dea6e use ArgOperand API and CallSite to access arguments of CallInst
llvm-svn: 106829
2010-06-25 08:48:19 +00:00
Gabor Greif e4eed709d4 use ArgOperand API
llvm-svn: 106828
2010-06-25 08:24:59 +00:00
Gabor Greif f6207e0a80 prune an include
llvm-svn: 106827
2010-06-25 08:16:50 +00:00
Gabor Greif e3ba486c9f use ArgOperand API (one more hunk I could split)
llvm-svn: 106825
2010-06-25 07:58:41 +00:00
Gabor Greif 5f3e656a1b use ArgOperand API (some hunks I could split)
llvm-svn: 106824
2010-06-25 07:57:14 +00:00
Gabor Greif 07e9284c75 use ArgOperand API; tighten type of handleFreeWithNonTrivialDependency to be able to use isFreeCall whithout a cast or new overload
llvm-svn: 106823
2010-06-25 07:40:32 +00:00
Bob Wilson 07aead2f8d Add missing ARM and Thumb data layout info for vector types.
Radar 8128745.

llvm-svn: 106820
2010-06-25 04:41:08 +00:00
Bob Wilson eadbf9732f Reduce indentation.
llvm-svn: 106819
2010-06-25 04:12:31 +00:00
Dale Johannesen e9eaaa91d8 Fix a case where an earlyclobber operand of an asm
is reused as an input.  PR 4118.  Testcase is too big,
as usual with bugs in this area, but there's one in
the PR.

llvm-svn: 106816
2010-06-25 00:49:43 +00:00
Bruno Cardoso Lopes cbdcce6478 Add some AVX convert instructions
llvm-svn: 106815
2010-06-25 00:39:30 +00:00
Jakob Stoklund Olesen 889ab7d158 Make sure all eliminated kills are removed from VNInfo lists.
This fixes PR7479 and PR7485. The test cases from those PRs are big, so not
included. However, PR7485 comes from self hosting on FreeBSD, so we will surely
hear about any regression.

llvm-svn: 106811
2010-06-24 23:57:35 +00:00
Dan Gohman 5f0bf64c0c Add some comments.
llvm-svn: 106809
2010-06-24 23:41:59 +00:00
Bruno Cardoso Lopes 447735aa98 Refactoring of SSE convert intrinsics
llvm-svn: 106808
2010-06-24 23:37:07 +00:00
Dan Gohman 9a2f0473b2 Teach EmitLiveInCopies to omit copies for unused virtual registers,
and to clean up unused incoming physregs from the live-in list.

llvm-svn: 106805
2010-06-24 22:23:02 +00:00
Bruno Cardoso Lopes 78827d1952 Refactoring of SSE conversion instructions
llvm-svn: 106804
2010-06-24 22:22:21 +00:00