Rafael Espindola
2b55c13cf1
Remove previous commit while I debug the bot failures.
...
llvm-svn: 148156
2012-01-13 23:28:50 +00:00
Jakob Stoklund Olesen
b1f7df8d8b
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.
llvm-svn: 148151
2012-01-13 22:55:42 +00:00
Rafael Espindola
3a35eeb0aa
Remove label that is not used anymore.
...
llvm-svn: 148150
2012-01-13 22:41:58 +00:00
Eli Friedman
a70048903b
Speculatively revert r148132+r148133 to try and fix a buildbot failure.
...
llvm-svn: 148149
2012-01-13 22:34:39 +00:00
Jakob Stoklund Olesen
c477c8d35e
Skip the NAME field when forming tuples.
...
llvm-svn: 148147
2012-01-13 22:23:50 +00:00
Andrew Trick
796cca6eff
Remove pointless mode line in .cpp file.
...
llvm-svn: 148143
2012-01-13 22:04:16 +00:00
Duncan Sands
5a44c5a303
Try to clarify a little how exception handling works.
...
llvm-svn: 148136
2012-01-13 19:59:16 +00:00
Devang Patel
410d6214f9
Revert r148131, it was committed before it was ready.
...
llvm-svn: 148134
2012-01-13 19:28:58 +00:00
Stepan Dyatkovskiy
81514d2471
Cosmetic patch for r148132.
...
llvm-svn: 148133
2012-01-13 19:27:22 +00:00
Stepan Dyatkovskiy
94682abb75
LoopUnswitch: All helper data that is collected during loop-unswitch iterations was moved to separated class (LUAnalysisCache).
...
llvm-svn: 148132
2012-01-13 19:13:54 +00:00
Devang Patel
194ad5ead8
Refactor.
...
llvm-svn: 148131
2012-01-13 19:12:18 +00:00
Devang Patel
79b7ed0c82
Add new test.
...
llvm-svn: 148128
2012-01-13 18:45:31 +00:00
Pete Cooper
f70959894c
Fixed comment. Thanks Duncan!
...
llvm-svn: 148123
2012-01-13 17:52:01 +00:00
Craig Topper
c1e3d46e07
Convert SHUFPD with the same register for both sources to PSHUFD if it would prevent a register copy. Similar to SHUFPS, but requires the mask to be converted.
...
llvm-svn: 148112
2012-01-13 09:21:41 +00:00
Craig Topper
e75115a861
use v8i32 as optimal mem type over v8f32 if AVX2 is enabled. Similar to SSE2 vs SSE1.
...
llvm-svn: 148109
2012-01-13 08:32:21 +00:00
Craig Topper
e52c0484de
Make X86 instruction selection use 256-bit VPXOR for build_vector of all ones if AVX2 is enabled. This gives the ExeDepsFix pass a chance to choose FP vs int as appropriate. Also use v8i32 as the type for getZeroVector if AVX2 is enabled. This is consistent with SSE2 using prefering v4i32.
...
llvm-svn: 148108
2012-01-13 08:12:35 +00:00
NAKAMURA Takumi
4282fcb731
test/CodeGen/ARM/test-sharedidx.ll: Fix for -Asserts.
...
llvm-svn: 148107
2012-01-13 07:03:55 +00:00
Craig Topper
71ea42cc29
Add patterns for v16i16 and v32i8 immAllZerosV to select VPXOR to match v4i64 and v8i32.
...
llvm-svn: 148106
2012-01-13 06:59:47 +00:00
Andrew Trick
85c44d1485
Added the MachineSchedulerPass skeleton.
...
llvm-svn: 148105
2012-01-13 06:30:30 +00:00
Andrew Trick
6e61e9f2b6
whitespace
...
llvm-svn: 148104
2012-01-13 06:30:25 +00:00
Andrew Trick
97340838f5
wrong filename
...
llvm-svn: 148103
2012-01-13 06:30:22 +00:00
Andrew Trick
117f29f574
80-col violation
...
llvm-svn: 148102
2012-01-13 06:30:19 +00:00
Craig Topper
0e34a8e58c
Use 8i32 constant pool entry for converting AVX2_SETALLONES. Possibly fixes PR11750.
...
llvm-svn: 148101
2012-01-13 06:12:41 +00:00
Craig Topper
32812741b7
Fix typo in PerformAddCombine that caused any vector type to be checked for horizontal add/sub if AVX2 is enabled. This caused an assert to fail for non 128/256-bit vectors when done before type legalizing. Fixes PR11749.
...
llvm-svn: 148096
2012-01-13 05:04:25 +00:00
Jakob Stoklund Olesen
9ba097a208
Delete CodeInit and CodeRecTy from TableGen.
...
The code type was always identical to a string anyway. Now it is simply
a synonym. The code literal syntax [{...}] is still valid.
llvm-svn: 148092
2012-01-13 03:38:34 +00:00
Jakob Stoklund Olesen
3776477761
Use uniqued StringInit pointers for lookups.
...
This avoids a gazillion StringMap and dynamic_cast calls, making
TableGen run 3x faster.
llvm-svn: 148091
2012-01-13 03:16:35 +00:00
Evan Cheng
e31c929c2d
DAGCombine's logic for forming pre- and post- indexed loads / stores were being
...
overly conservative. It was concerned about cases where it would prohibit
folding simple [r, c] addressing modes. e.g.
ldr r0, [r2]
ldr r1, [r2, #4 ]
=>
ldr r0, [r2], #4
ldr r1, [r2]
Change the logic to look for such cases which allows it to form indexed memory
ops more aggressively.
rdar://10674430
llvm-svn: 148086
2012-01-13 01:37:24 +00:00
Bill Wendling
c8f27fdf02
Fix off-by-one error.
...
llvm-svn: 148077
2012-01-13 00:41:53 +00:00
Dan Gohman
922244c634
Implement proper ObjC ARC objc_retainBlock "escape" analysis, so that
...
the optimizer doesn't eliminate objc_retainBlock calls which are needed
for their side effect of copying blocks onto the heap.
This implements rdar://10361249.
llvm-svn: 148076
2012-01-13 00:39:07 +00:00
Pete Cooper
f3141fef55
Added MVT::v2f16
...
llvm-svn: 148067
2012-01-12 23:14:13 +00:00
Bill Wendling
18abc22050
Revert accidental commit.
...
llvm-svn: 148065
2012-01-12 23:06:28 +00:00
Bill Wendling
ce528914e7
Fix the code that was WRONG.
...
The registers are placed into the saved registers list in the reverse order,
which is why the original loop was written to loop backwards.
llvm-svn: 148064
2012-01-12 23:05:03 +00:00
Pete Cooper
1db82e3b84
Added FPOW, FEXP, FLOG to PromoteNode so that custom actions can be set to Promote for those operations.
...
Sorry, no test case yet
llvm-svn: 148050
2012-01-12 21:46:18 +00:00
Elena Demikhovsky
beb66de0f9
Fixed a bug in LowerVECTOR_SHUFFLE caused assertion failure
...
lc: X86ISelLowering.cpp:6480: llvm::SDValue llvm::X86TargetLowering::LowerVECTOR_SHUFFLE(llvm::SDValue, llvm::SelectionDAG&) const: Assertion `V1.getOpcode() != ISD::UNDEF&& "Op 1 of shuffle should not be undef"' failed.
Added a test.
llvm-svn: 148044
2012-01-12 20:33:10 +00:00
Evan Cheng
4967772ebc
When hoisting common code, watch out for uses which are marked "kill". If the
...
killed registers are needed below the insertion point, then unset the kill
marker.
Sorry I'm not able to find a reduced test case.
rdar://10660944
llvm-svn: 148043
2012-01-12 20:31:24 +00:00
Rafael Espindola
d079866e36
Add error-reporting tests for platforms that don't support segmented stacks.
...
Patch by Brian Anderson.
llvm-svn: 148042
2012-01-12 20:26:13 +00:00
Rafael Espindola
959adf57db
Support segmented stacks on 64-bit FreeBSD.
...
This patch uses tcb_spare field in the tcb structure to store info.
Patch by Jyun-Yan You.
llvm-svn: 148041
2012-01-12 20:24:30 +00:00
Rafael Espindola
dda46f4081
Support segmented stacks on win32.
...
Uses the pvArbitrary slot of the TIB, which is reserved for applications. We
only support frames with a static size.
llvm-svn: 148040
2012-01-12 20:22:08 +00:00
Devang Patel
807fee533d
Remove test case, as Chris suggested.
...
llvm-svn: 148039
2012-01-12 19:54:02 +00:00
Devang Patel
3f85289ef8
Add test case to check intel syntax parsing.
...
llvm-svn: 148034
2012-01-12 18:40:46 +00:00
Evan Cheng
fc3ec91768
Allow targets to select source order pre-RA scheduler.
...
llvm-svn: 148033
2012-01-12 18:27:52 +00:00
Devang Patel
d568674834
Rename X86ATTAsmParser -> X86AsmParser
...
We are using one parser to parse att as well as intel style syntax.
llvm-svn: 148032
2012-01-12 18:03:40 +00:00
Jakob Stoklund Olesen
73a72e7241
Make SplitAnalysis::UseSlots private.
...
llvm-svn: 148031
2012-01-12 17:53:44 +00:00
Benjamin Kramer
7678692172
After Jakob's r147938 exception handling on i386 was completely broken.
...
Restore the (obviously wrong) behavior from before r147938 without relying on
undefined behavior. Add a fat FIXME note.
This should fix nightly tester failures.
llvm-svn: 148030
2012-01-12 17:37:18 +00:00
Nadav Rotem
618722de09
Fix a bug in the AVX 256-bit shuffle code in cases where the splat element is on the boundary of two 128-bit vectors.
...
The attached testcase was stuck in an endless loop.
llvm-svn: 148027
2012-01-12 15:31:55 +00:00
Benjamin Kramer
ae4ad5f924
X86: Generalize the x << (y & const) optimization to also catch masks with more set bits set than 31 or 63.
...
llvm-svn: 148024
2012-01-12 12:41:34 +00:00
Evan Cheng
2fcee784d6
Move Sched::Preference out of TargetMachine.h where it is not referenced.
...
llvm-svn: 148014
2012-01-12 02:35:23 +00:00
Devang Patel
2096c1a697
Add predicate method check match memory operand size, if available.
...
In att style asm syntax memory operand size is derived from suffix attached with mnemonic. In intel style asm syntax it is part of memory operand hence predicate method check is required to select appropriate instruction.
llvm-svn: 148006
2012-01-12 01:51:42 +00:00
Bill Wendling
771a417c3f
A DenseMap of a std::map isn't a very good idea because the "grow()" method will
...
need to make a deep copy of each of the std::maps. Use a std::map of the
std::map instead. This improves the compile time of sqlite3 by ~2%.
llvm-svn: 148003
2012-01-12 01:41:03 +00:00
Devang Patel
ed9a353b59
Add intel style operand parser skeleton.
...
This is a work in progress.
llvm-svn: 148002
2012-01-12 01:36:43 +00:00