James Molloy
85be8f7f88
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.
...
llvm-svn: 150169
2012-02-09 10:56:31 +00:00
Craig Topper
c20605c287
More tweaks to get the size of the X86 disassembler tables down.
...
llvm-svn: 150167
2012-02-09 08:58:07 +00:00
Craig Topper
82b0ee4558
Flatten some of the arrays in the X86 disassembler tables to reduce space needed to store pointers on 64-bit hosts and reduce relocations needed at startup. Part of PR11953.
...
llvm-svn: 150161
2012-02-09 07:45:30 +00:00
Lang Hames
102098e4af
Preserve physreg kills in MachineBasicBlock::SplitCriticalEdge.
...
Failure to preserve kills was causing LiveIntervals to miss some EFLAGS live
ranges. Unfortunately I've been unable to reduce a good test case yet.
llvm-svn: 150152
2012-02-09 05:59:36 +00:00
NAKAMURA Takumi
81f7ad5b9b
test/CodeGen/X86/atom-lea-sp.ll: Add explicit -mtriple=i686-linux.
...
llvm-svn: 150151
2012-02-09 05:12:58 +00:00
Lang Hames
4defdead69
Fix kill flags when moving instructions using LiveIntervals::moveInstr(...).
...
llvm-svn: 150150
2012-02-09 04:45:38 +00:00
Lang Hames
4147d04e10
Remove assertion. Not all use operands are reads.
...
llvm-svn: 150149
2012-02-09 04:39:48 +00:00
Andrew Trick
74c2f12214
Improve TargetPassConfig. No intended functionality.
...
Split CodeGen into stages.
Distinguish between optimization and correctness.
llvm-svn: 150122
2012-02-09 00:40:55 +00:00
Andrew Trick
f690134bbf
comment
...
llvm-svn: 150121
2012-02-09 00:40:52 +00:00
David Blaikie
0ace6bb49f
Remove static initializer from DataStream.cpp
...
If someone would prefer a clear name for the 'success' error_value we could
come up with one - potentially just a 'named constructor' style
'error_value::success()' to make this expression more self-documenting. If
I see this come up in other cases I'll certainly consider it.
One step along the way to resolving PR11944.
llvm-svn: 150120
2012-02-09 00:29:19 +00:00
Jakob Stoklund Olesen
8a5e7e5027
Erase dead copies that are clobbered by a call.
...
This does make a difference, at least when using RABasic.
llvm-svn: 150118
2012-02-09 00:19:08 +00:00
Jakob Stoklund Olesen
27f005d12d
Handle register masks when searching for EFLAGS clobbers.
...
Calls clobber the flags, but when using register masks there is no
EFLAGS<imp-def> operand.
llvm-svn: 150117
2012-02-09 00:17:22 +00:00
Jakob Stoklund Olesen
bf5d485c4d
Never delete instructions that define reserved registers.
...
I think this was already the intention, but DeadMachineInstructionElim
was accidentally tracking the liveness of reserved registers. Now,
instructions with reserved defs are never deleted.
This prevents the call stack adjustment instructions from getting
deleted when enabling register masks.
llvm-svn: 150116
2012-02-09 00:15:39 +00:00
Jakob Stoklund Olesen
996101938f
Handle register masks in MachineCopyPropagation.
...
For simplicity, treat calls with register masks as basic block
boundaries. This means we can't copy propagate callee-saved registers
across calls, but I don't think that is a big deal.
llvm-svn: 150108
2012-02-08 22:37:35 +00:00
Evan Cheng
1be96ff50e
Commit Andy Zhang's test for the lea patch.
...
llvm-svn: 150107
2012-02-08 22:33:17 +00:00
Chris Lattner
eaaee90a17
fix broken link
...
llvm-svn: 150105
2012-02-08 22:20:00 +00:00
Kostya Serebryany
2de61e1628
[asan] unpoison the stack before every noreturn call. Fixes asan issue 37. llvm part
...
llvm-svn: 150102
2012-02-08 21:36:17 +00:00
Andrew Trick
b9d2e9e81d
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).
llvm-svn: 150100
2012-02-08 21:23:13 +00:00
Andrew Trick
8f7cc1b245
Move pass configuration out of pass constructors: MachineLICM.
...
llvm-svn: 150099
2012-02-08 21:23:03 +00:00
Andrew Trick
a9303f3424
whitespace
...
llvm-svn: 150098
2012-02-08 21:23:00 +00:00
Andrew Trick
c210c552ee
Move pass configuration out of pass constructors: StackSlotColoring.
...
llvm-svn: 150097
2012-02-08 21:22:57 +00:00
Andrew Trick
a6dea8798a
Move pass configuration out of pass constructors: PostRAScheduler.
...
llvm-svn: 150096
2012-02-08 21:22:53 +00:00
Andrew Trick
9da1cc8ddd
Move pass configuration out of pass constructors: BranchFolderPass
...
llvm-svn: 150095
2012-02-08 21:22:48 +00:00
Andrew Trick
beefd7ef4e
whitespace
...
llvm-svn: 150094
2012-02-08 21:22:43 +00:00
Andrew Trick
fb24596a02
Added TargetPassConfig::setOpt
...
llvm-svn: 150093
2012-02-08 21:22:39 +00:00
Andrew Trick
135effe79b
Added Pass::createPass(ID) to handle pass configuration by ID
...
llvm-svn: 150092
2012-02-08 21:22:34 +00:00
Andrew Trick
e696d2f01f
Move pass configuration out of pass constructors: TailDuplicate::PreRegAlloc
...
llvm-svn: 150091
2012-02-08 21:22:30 +00:00
Jakob Stoklund Olesen
729c7eab42
Add Register mask support to RABasic.
...
When a virtual register is live across a call, limit the search space to
call-preserved registers.
llvm-svn: 150081
2012-02-08 18:54:35 +00:00
Benjamin Kramer
38ab261390
Don't map registers to the invalid dwarf register (-1). It's the default value.
...
X86GenRegisterInfo.inc | 1032 -------------------------------------------------
1 file changed, 1032 deletions(-)
llvm-svn: 150080
2012-02-08 18:46:26 +00:00
Brendon Cahoon
39fcf7dc1b
Use TSFlag bit to describe instruction properties.
...
Creating the isPredicated TSFlag enables the code
to use the property defined in the instruction format
instead of using a large switch statement.
llvm-svn: 150078
2012-02-08 18:25:47 +00:00
Jakob Stoklund Olesen
74f9e359dd
Keep track of register masks in LiveIntervalAnalysis.
...
Build an ordered vector of register mask operands (i.e., calls) when
computing live intervals. Provide a checkRegMaskInterference() function
that computes a bit mask of usable registers for a live range.
This is a quick way of determining of a live range crosses any calls,
and restricting it to the callee saved registers if it does.
Previously, we had to discover call clobbers for each candidate register
independently.
llvm-svn: 150077
2012-02-08 17:33:45 +00:00
Benjamin Kramer
b42d2a7238
Value initialize MCRegisterClasses. Not sure how could miss this during the MCTargetDesc refactor.
...
llvm-svn: 150076
2012-02-08 14:43:53 +00:00
Duncan Sands
230a53240a
Use Use::set rather than finding the operand number of the use
...
and setting that.
llvm-svn: 150074
2012-02-08 14:10:53 +00:00
Benjamin Kramer
74f9379254
PathV2: Remove static StringRef ctors.
...
llvm-svn: 150071
2012-02-08 13:13:47 +00:00
Elena Demikhovsky
87a6e08d3a
Fixed a bug in printing "cmp" pseudo ops.
...
> This IR code
> %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 14)
> fails with assertion:
>
> llc: X86ATTInstPrinter.cpp:62: void llvm::X86ATTInstPrinter::printSSECC(const llvm::MCInst*, unsigned int, llvm::raw_ostream&): Assertion `0 && "Invalid ssecc argument!"' failed.
> 0 llc 0x0000000001355803
> 1 llc 0x0000000001355dc9
> 2 libpthread.so.0 0x00007f79a30575d0
> 3 libc.so.6 0x00007f79a23a1945 gsignal + 53
> 4 libc.so.6 0x00007f79a23a2f21 abort + 385
> 5 libc.so.6 0x00007f79a239a810 __assert_fail + 240
> 6 llc 0x00000000011858d5 llvm::X86ATTInstPrinter::printSSECC(llvm::MCInst const*, unsigned int, llvm::raw_ostream&) + 119
I added the full testing for all possible pseudo-ops of cmp.
I extended X86AsmPrinter.cpp and X86IntelInstPrinter.cpp.
You'l also see lines alignments (unrelated to this fix) in X86IselLowering.cpp from my previous check-in.
llvm-svn: 150068
2012-02-08 08:37:26 +00:00
Craig Topper
f19c739d2d
Remove a couple unneeded intrinsic patterns
...
llvm-svn: 150067
2012-02-08 08:29:30 +00:00
Chris Lattner
9cb250a113
No actual functional change here, just some clarifications:
...
Clarify that contributors are agreeing to license their code under the
license corresponding to the subproject that they are contributing to,
as requested by a potential contributor.
Also, as a drive-by, update the llvm-gcc/GPL section to mention dragonegg
and say that GPL code is all in its own repo's.
llvm-svn: 150065
2012-02-08 07:58:38 +00:00
Craig Topper
6dbd5e534c
Remove GCC builtins for vpermilp* intrinsics as clang no longer needs them. Custom lower the intrinsics to the vpermilp target specific node and remove intrinsic patterns.
...
llvm-svn: 150060
2012-02-08 06:36:57 +00:00
Chad Rosier
b70d1dfae6
[fast-isel] Add support for SUBs with non-legal types.
...
llvm-svn: 150047
2012-02-08 02:45:44 +00:00
Chad Rosier
66b35d7220
Add comment to test case.
...
llvm-svn: 150046
2012-02-08 02:30:12 +00:00
Chad Rosier
1ef78d6989
[fast-isel] Add support for ORs with non-legal types.
...
llvm-svn: 150045
2012-02-08 02:29:21 +00:00
Andrew Trick
bbd036d602
Added MachineInstr::isBundled() to check if an instruction is part of a bundle.
...
llvm-svn: 150044
2012-02-08 02:17:25 +00:00
Andrew Trick
a8f16ce003
misched: bug in debug output.
...
llvm-svn: 150043
2012-02-08 02:17:21 +00:00
Andrew Trick
e77bb4ffea
whitespace
...
llvm-svn: 150042
2012-02-08 02:17:18 +00:00
Andrew Trick
b2b5b758d9
stale comment
...
llvm-svn: 150041
2012-02-08 02:17:16 +00:00
Chris Lattner
1c0f1d4d1f
add an explicit section on static constructors.
...
llvm-svn: 150037
2012-02-08 01:44:00 +00:00
Kostya Serebryany
d0b4cd4c46
Don't use static CTORs for the Attributes constants, while still keeping the class type-safe
...
llvm-svn: 150031
2012-02-08 01:11:21 +00:00
Eric Christopher
4330499af4
Add support for a temporary forward decl type. We want this so we
...
can rauw forward declarations if we decide to emit the full type.
Part of rdar://10809898
llvm-svn: 150024
2012-02-08 00:22:26 +00:00
Devang Patel
5b37f2548b
Remove tabs.
...
llvm-svn: 150022
2012-02-08 00:17:07 +00:00
Chad Rosier
26610906f0
[fast-isel] Add support for indirect branches.
...
llvm-svn: 150014
2012-02-07 23:56:08 +00:00