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
Devang Patel
c8bfdb1c36
Remove tabs.
...
llvm-svn: 150012
2012-02-07 23:33:58 +00:00
Evan Cheng
ab4ad855cc
Use LEA to adjust stack ptr for Atom. Patch by Andy Zhang.
...
llvm-svn: 150008
2012-02-07 22:50:41 +00:00
Hal Finkel
0bf758d7ea
Allow bugpoint to recognize -bb-vectorize
...
llvm-svn: 150003
2012-02-07 21:11:12 +00:00
David Blaikie
7503072263
Correct use of const in ParseCommandLineOptions
...
llvm-svn: 149999
2012-02-07 19:36:01 +00:00
Benjamin Kramer
26c6e4b9e0
ocaml bindings: landing pad is now the last opcode.
...
llvm-svn: 149997
2012-02-07 18:58:19 +00:00
Benjamin Kramer
6d9863be3a
Add a unittest for rotating a really big APInt.
...
Clang miscompiles it under certain circumstances, and it's a good exercise for APInt.
llvm-svn: 149986
2012-02-07 16:27:39 +00:00
NAKAMURA Takumi
dde136cf30
Bitcode/BitstreamReader.h: Tweak for big endian hosts.
...
llvm-svn: 149980
2012-02-07 10:53:19 +00:00
Bill Wendling
cd6addef26
Rephrase to add clarity.
...
llvm-svn: 149972
2012-02-07 08:42:29 +00:00
Anat Shemer
8a46f38a55
test commit
...
llvm-svn: 149971
2012-02-07 08:18:05 +00:00
Evan Cheng
653966d99b
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.
llvm-svn: 149970
2012-02-07 07:09:28 +00:00
Craig Topper
a8a69356e1
Add instruction selection for 256-bit VPSHUFD and 128-bit VPERMILPS/VPERMILPD.
...
llvm-svn: 149968
2012-02-07 06:28:42 +00:00
Craig Topper
639b152ca5
Convert assert(0) to llvm_unreachable
...
llvm-svn: 149967
2012-02-07 05:05:23 +00:00