Chris Lattner [Fri, 12 Feb 2010 23:54:57 +0000 (23:54 +0000)]
Remove special cases for [LM]FENCE, MONITOR and MWAIT from
encoder and decoder by using new MRM_ forms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96048
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 23:46:48 +0000 (23:46 +0000)]
add some disassemble testcases for weird instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96045
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Callanan [Fri, 12 Feb 2010 23:39:46 +0000 (23:39 +0000)]
Reworked the Intel disassembler to support instructions
whose opcodes extend into the ModR/M field using the
Form field of the instruction rather than by special
casing each instruction. Commented out the special
casing of VMCALL, which is the first instruction to use
this special form. While I was in the neighborhood,
added a few comments for people modifying the Intel
disassembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96043
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 23:24:09 +0000 (23:24 +0000)]
implement the rest of correct x86-64 encoder support for
rip-relative addresses, and add a testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96040
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 12 Feb 2010 23:16:24 +0000 (23:16 +0000)]
Add the problem I just hacked around in 96015/96020.
The solution there produces correct code, but is seriously
deficient in several ways.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96039
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 23:12:47 +0000 (23:12 +0000)]
give MCCodeEmitters access to the current MCContext.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96038
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Fri, 12 Feb 2010 23:05:31 +0000 (23:05 +0000)]
Make JIT::runFunction clean up the generated stub function.
Patch by Shivram K!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96037
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 23:00:36 +0000 (23:00 +0000)]
implement infrastructure to support fixups for rip-rel
addressing. This isn't complete because I need an MCContext
to generate new MCExprs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96036
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 12 Feb 2010 22:53:19 +0000 (22:53 +0000)]
Add YIELD, WFE, WFI, and SEV instructions for disassembly only.
Plus add two formats: MiscFrm and ThumbMiscFrm. Some of the for disassembly
only instructions are changed from Pseudo Format to MiscFrm Format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96032
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 22:47:55 +0000 (22:47 +0000)]
pull the rip-relative addressing mode case up early.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96031
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 22:39:06 +0000 (22:39 +0000)]
fixme resolved!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96029
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 22:36:47 +0000 (22:36 +0000)]
start producing reloc_pcrel_4byte/reloc_pcrel_1byte for calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96028
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 12 Feb 2010 22:34:54 +0000 (22:34 +0000)]
Fix a comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96027
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 22:27:07 +0000 (22:27 +0000)]
enhance the immediate field encoding to know whether the immediate
is pc relative or not, mark call and branches as pcrel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96026
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 12 Feb 2010 22:17:21 +0000 (22:17 +0000)]
Load / store multiple instructions cannot load / store sp. Sorry, can't come up with a reasonable test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96023
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 12 Feb 2010 22:00:40 +0000 (22:00 +0000)]
This should have gone in with 26015, see comments there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96020
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 12 Feb 2010 21:59:23 +0000 (21:59 +0000)]
Add halfword multiply accumulate long SMLALBB/BT/TB/TT for disassembly only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96019
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 21:54:28 +0000 (21:54 +0000)]
doxygenize some comments, patch by Peter Collingbourne!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96018
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 12 Feb 2010 21:35:34 +0000 (21:35 +0000)]
When save/restoring CR at prolog/epilog, in a large
stack frame, the prolog/epilog code was using the same
register for the copy of CR and the address of the save slot. Oops.
This is fixed here for Darwin, sort of, by reserving R2 for this case.
A better way would be to do the store before the decrement of SP,
which is safe on Darwin due to the red zone.
SVR4 probably has the same problem, but I don't know how to fix it;
there is no red zone and R2 is already used for something else.
I'm going to leave it to someone interested in that target.
Better still would be to rewrite the CR-saving code completely;
spilling each CR subregister individually is horrible code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96015
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 20:49:41 +0000 (20:49 +0000)]
Add support for a union type in LLVM IR. Patch by Talin!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96011
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 12 Feb 2010 20:48:24 +0000 (20:48 +0000)]
Add SWP (Swap) and SWPB (Swap Byte) for disassembly only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96010
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 12 Feb 2010 20:39:35 +0000 (20:39 +0000)]
Also recognize armv6t2-* and armv5te-* triplets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96008
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 12 Feb 2010 20:39:25 +0000 (20:39 +0000)]
Fix a case of mismatched types in an Add that turned up in 447.dealII.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96007
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 12 Feb 2010 20:13:44 +0000 (20:13 +0000)]
Add ARM bitcode file magic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96006
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 12 Feb 2010 19:35:25 +0000 (19:35 +0000)]
Reapply 95979, a compile-time speedup, now that the bug it exposed is fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96005
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 12 Feb 2010 19:20:37 +0000 (19:20 +0000)]
Fix this code to avoid dereferencing an end() iterator in
offset distributions it doesn't expect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96002
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 12 Feb 2010 18:55:33 +0000 (18:55 +0000)]
Add CPS, MRS, MRSsys, MSR, MSRsys for disassembly only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95999
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 12 Feb 2010 18:40:17 +0000 (18:40 +0000)]
Rewrite handling of DBG_VALUE; previous algorithm
didn't handle
X =
Y<dead> = use X
DBG_VALUE(X)
I was hoping to avoid this approach as it's slower,
but I don't think it can be done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95996
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 18:17:23 +0000 (18:17 +0000)]
1. modernize the constantmerge pass, using densemap/smallvector.
2. don't bother trying to merge globals in non-default sections,
doing so is quite dubious at best anyway.
3. fix a bug reported by Arnaud de Grandmaison where we'd try to
merge two globals in different address spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95995
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 18:05:00 +0000 (18:05 +0000)]
rename test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95993
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Fri, 12 Feb 2010 17:27:08 +0000 (17:27 +0000)]
Revert "Reverse the order for collecting the parts of an addrec. The order", it
is breaking llvm-gcc bootstrap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95988
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 12 Feb 2010 15:29:13 +0000 (15:29 +0000)]
Testcases for recent stdcall / fastcall mangling improvements
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95982
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 12 Feb 2010 15:28:56 +0000 (15:28 +0000)]
Setup correct data layout to match gcc's expectations on mingw32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95981
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 12 Feb 2010 15:28:40 +0000 (15:28 +0000)]
Cleanup stdcall / fastcall name mangling.
This should fix alot of problems we saw so far, e.g. PRs 5851 & 2936
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95980
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 12 Feb 2010 11:08:26 +0000 (11:08 +0000)]
Reverse the order for collecting the parts of an addrec. The order
doesn't matter, except that ScalarEvolution tends to need less time
to fold the results this way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95979
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 12 Feb 2010 10:34:29 +0000 (10:34 +0000)]
Reapply the new LoopStrengthReduction code, with compile time and
bug fixes, and with improved heuristics for analyzing foreign-loop
addrecs.
This change also flattens IVUsers, eliminating the stride-oriented
groupings, which makes it easier to work with.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95975
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 12 Feb 2010 09:43:37 +0000 (09:43 +0000)]
* Updated the cost matrix normalization proceedure to better handle infinite costs.
* Enabled R1/R2 application for nodes with infinite spill costs in the Briggs heuristic (made
safe by the changes to the normalization proceedure).
* Removed a redundant header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95973
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 12 Feb 2010 07:48:46 +0000 (07:48 +0000)]
Update test to match 95961.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95971
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 12 Feb 2010 02:35:03 +0000 (02:35 +0000)]
Test for 95961.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95962
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 02:06:33 +0000 (02:06 +0000)]
add a bunch of mod/rm encoding types for fixed mod/rm bytes.
This will work better for the disassembler for modeling things
like lfence/monitor/vmcall etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95960
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 12 Feb 2010 02:02:23 +0000 (02:02 +0000)]
Test case for 95958.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95959
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 01:55:31 +0000 (01:55 +0000)]
revert r95949, it turns out that adding new prefixes is not a
great solution for the disassembler, we'll go with "plan b".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95957
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Fri, 12 Feb 2010 01:46:54 +0000 (01:46 +0000)]
MC: Fix bug where trailing tied operands were forgotten; the X86 assembler
matcher is now free of implicit operands!
- Still need to clean up the code now that we don't to worry about implicit
operands, and to make it a hard error if an instruction fails to specify all
of its operands for some reason.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95956
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Fri, 12 Feb 2010 01:44:23 +0000 (01:44 +0000)]
Added coprocessor Instructions CDP, CDP2, MCR, MCR2, MRC, MRC2, MCRR, MCRR2,
MRRC, MRRc2. For disassembly only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95955
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 12 Feb 2010 01:30:21 +0000 (01:30 +0000)]
Add a new pass on machine instructions to optimize away PHI cycles that
reduce down to a single value. InstCombine already does this transformation
but DAG legalization may introduce new opportunities. This has turned out to
be important for ARM where 64-bit values are split up during type legalization:
InstCombine is not able to remove the PHI cycles on the 64-bit values but
the separate 32-bit values can be optimized. I measured the compile time
impact of this (running llc on 176.gcc) and it was not significant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95951
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Fri, 12 Feb 2010 01:22:03 +0000 (01:22 +0000)]
X86: Fix definition for RCL/RCR.*m? operations -- they were getting represented
with "tied memory operands", which is wrong.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95950
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 01:15:16 +0000 (01:15 +0000)]
add another bit of space for new kinds of instruction prefixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95949
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 12 Feb 2010 01:10:45 +0000 (01:10 +0000)]
Add a missing pattern for movhps so that we get:
movq (%ecx,%edx,2), %xmm2
movhps (%ecx,%eax,2), %xmm2
rather than:
movq (%eax, %edx, 2), %xmm2
movq (%eax, %ebx, 2), %xmm3
movlhps %xmm3, %xmm2
Testcase forthcoming.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95948
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 01:06:22 +0000 (01:06 +0000)]
fix the encodings of monitor and mwait, which were completely
busted in both encoders. I'm not bothering to fix it in the
old one at this point.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95947
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 12 Feb 2010 00:37:46 +0000 (00:37 +0000)]
improve support for minix, PR6280, patch by
Kees van Reeuwijk!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95946
91177308-0d34-0410-b5e6-
96231b3b80d8
Charles Davis [Fri, 12 Feb 2010 00:31:15 +0000 (00:31 +0000)]
Add a new function attribute, 'alignstack'. It will indicate (when the backends
implement support for it) that the stack should be forcibly realigned in the
prologue (and the process reversed in the epilogue).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95945
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 11 Feb 2010 23:55:29 +0000 (23:55 +0000)]
Reapply coalescer fix for better cross-class coalescing.
This time with fixed test cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95938
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 22:57:32 +0000 (22:57 +0000)]
enhance llvm-mc -show-inst to print the enum of an instruction, like so:
testb %al, %al ## <MCInst #2412 TEST8rr
## <MCOperand Reg:2>
## <MCOperand Reg:2>>
jne LBB1_7 ## <MCInst #938 JNE_1
## <MCOperand Expr:(LBB1_7)>>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95935
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 22:39:10 +0000 (22:39 +0000)]
add a new MCInstPrinter::getOpcodeName interface, when it is
implemented, llvm-mc --show-inst now uses it to print the
instruction opcode as well as the number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95929
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Thu, 11 Feb 2010 21:51:51 +0000 (21:51 +0000)]
Document binutils requirements for coff targets (cygwin / mingw32).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95928
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 21:45:31 +0000 (21:45 +0000)]
improve encoding information for branches. We now know they have
8 or 32-bit immediates, which allows the new encoder to handle
them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95927
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 11 Feb 2010 21:29:46 +0000 (21:29 +0000)]
MC: Move assembler-backend's fixup list into the fragment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95926
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 11 Feb 2010 21:29:29 +0000 (21:29 +0000)]
MC: Move MCSectionData::Fixup out to MCAsmFixup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95925
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 21:27:18 +0000 (21:27 +0000)]
make getFixupKindInfo return a const reference, allowing
the tables to be const. Teach MCCodeEmitter to handle
the target-indep kinds so that we don't crash on them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95924
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 11 Feb 2010 21:19:44 +0000 (21:19 +0000)]
Revert functional change. This broke a bunch of tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95921
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 21:17:54 +0000 (21:17 +0000)]
switch to target-indep fixups for 1/2/4/8 byte data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95920
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 11 Feb 2010 20:58:56 +0000 (20:58 +0000)]
revert 95903.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95918
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 11 Feb 2010 20:58:45 +0000 (20:58 +0000)]
It is always good to do a cross-class join when the large register has a tiny interval.
Also avoid division by zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95917
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Thu, 11 Feb 2010 20:31:08 +0000 (20:31 +0000)]
Added LDRT/LDRBT/STRT/STRBT for disassembly only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95916
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 19:52:11 +0000 (19:52 +0000)]
unbreak the build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95915
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 11 Feb 2010 19:35:26 +0000 (19:35 +0000)]
llvm-db was removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95904
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 11 Feb 2010 19:35:10 +0000 (19:35 +0000)]
Destroy MDNodes while destructing llvm context.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95903
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 19:31:22 +0000 (19:31 +0000)]
refactor x86 conditional branches to use a multipattern
that generates the 1-byte and 4-byte immediate versions
from one definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95902
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 19:25:55 +0000 (19:25 +0000)]
refactor the conditional jump instructions in the .td file to
use a multipattern that generates both the 1-byte and 4-byte
versions from the same defm
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95901
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Thu, 11 Feb 2010 19:15:20 +0000 (19:15 +0000)]
Make Kaleidoscope not link against the interpreter, since that didn't
work anyway (Interpreter::getPointerToFunction doesn't return a
callable pointer), and improve the error message when an
ExecutionEngine can't be created.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95896
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 11 Feb 2010 19:07:04 +0000 (19:07 +0000)]
Add an svn:ignore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95895
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Thu, 11 Feb 2010 18:47:03 +0000 (18:47 +0000)]
Forgot to also check in this file for vcvt (floating-point <-> fixed-point, VFP).
Sorry!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95892
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 11 Feb 2010 18:23:23 +0000 (18:23 +0000)]
Allow for more than one DBG_VALUE targeting the
same dead instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95890
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 11 Feb 2010 18:22:31 +0000 (18:22 +0000)]
Don't allow DBG_VALUE to affect codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95889
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Thu, 11 Feb 2010 18:17:16 +0000 (18:17 +0000)]
Added VCVT (between floating-point and fixed-point, VFP) for disassembly.
A8.6.297
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95885
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Thu, 11 Feb 2010 18:12:29 +0000 (18:12 +0000)]
Added BKPT/tBKPT (breakpoint) to the instruction table for disassembly purpose.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95884
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 11 Feb 2010 18:06:56 +0000 (18:06 +0000)]
Use array_pod_sort instead of std::sort for improved code size.
Use SmallVector instead of std::vector for better speed when indirectbr has
few successors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95879
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 11 Feb 2010 17:44:04 +0000 (17:44 +0000)]
Make sure that ConstantExpr offsets also aren't off of extern
symbols.
Thanks to Duncan Sands for the testcase!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95877
91177308-0d34-0410-b5e6-
96231b3b80d8
Johnny Chen [Thu, 11 Feb 2010 17:14:31 +0000 (17:14 +0000)]
Add pseudo instruction TRAP for disassembly, which is encoded according to A5-21
as the "Permanently UNDEFINED" instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95873
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 11 Feb 2010 10:37:57 +0000 (10:37 +0000)]
Use .empty() instead of .size().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95871
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 08:45:56 +0000 (08:45 +0000)]
dont' call getX86RegNum on X86::RIP, it doesn't like that. This
fixes the remaining x86-64 jit failures afaik.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95867
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 08:41:21 +0000 (08:41 +0000)]
fix a really nasty bug I introduced in r95693: r12 (and r12d,
r12b, etc) also encodes to a R/M value of 4, which is just
as illegal as ESP/RSP for the non-sib version an address.
This fixes x86-64 jit miscompilations of a bunch of programs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95866
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Thu, 11 Feb 2010 07:16:13 +0000 (07:16 +0000)]
Fix (harmless) memory leak found by memcheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95862
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 07:06:31 +0000 (07:06 +0000)]
Add and commonize encoder support for all immediates.
Stub out some dummy fixups to make things work.
We can now emit fixups like this:
subl $20, %esp ## encoding: [0x83,0xec,A]
## fixup A - offset: 2, value: 20, kind: fixup_1byte_imm
Emitting $20 as a single-byte fixup to be later resolved
by the assembler is ridiculous of course (vs just emitting
the byte) but this is a failure of the matcher, which
should be producing an imm of 20, not an MCExpr of 20.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95860
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 06:54:23 +0000 (06:54 +0000)]
generalize EmitDisplacementField to work with any size
and rename it to EmitImmediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95859
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 06:51:36 +0000 (06:51 +0000)]
eliminate the dead IsPCRel argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95858
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 06:49:52 +0000 (06:49 +0000)]
eliminate the dead "PCAdj" logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95857
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Thu, 11 Feb 2010 06:41:30 +0000 (06:41 +0000)]
Fix some of the memcheck errors found in the JIT unittests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95856
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 06:26:33 +0000 (06:26 +0000)]
Rename ValueRequiresCast to ShouldOptimizeCast, to better reflect
what it does. Enhance it to return false to optimizing vector
sign extensions from vector comparisions, which is the idiom used
to get a splatted vector for a vector comparison.
Doing this breaks vector-casts.ll, add some compensating
transformations to handle the important case they cover without
depending on this canonicalization.
This fixes rdar://
7434900 a serious pessimization of vector compares.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95855
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 06:24:37 +0000 (06:24 +0000)]
convert to filecheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95854
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 05:11:54 +0000 (05:11 +0000)]
Make DSE only scan blocks that are reachable from the entry
block. Other blocks may have pointer cycles that will crash
basicaa and other alias analyses. In any case, there is no
point wasting cycles optimizing dead blocks. This fixes
rdar://
7635088
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95852
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 05:08:05 +0000 (05:08 +0000)]
a testcase that doesn't crash GVN but could someday.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95851
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 11 Feb 2010 04:40:44 +0000 (04:40 +0000)]
Make jump threading honor x|undef -> true and x&undef -> false,
instead of considering x|undef -> x, which may not be true.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95850
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 11 Feb 2010 01:48:54 +0000 (01:48 +0000)]
Add ConstantExpr handling to Intrinsic::objectsize lowering.
Update testcase accordingly now that we can optimize another
section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95846
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 11 Feb 2010 01:31:01 +0000 (01:31 +0000)]
test case for r95842.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95844
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 11 Feb 2010 01:15:27 +0000 (01:15 +0000)]
Fix to get it to compile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95840
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 11 Feb 2010 01:13:02 +0000 (01:13 +0000)]
Don't print out a default newline when emitting the section offset. There are
almost always comments afterwards that need printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95839
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeffrey Yasskin [Thu, 11 Feb 2010 01:07:39 +0000 (01:07 +0000)]
Make it possible to create multiple JIT instances at the same time, by removing
the global TheJIT and TheJITResolver variables. Lazy compilation is supported
by a global map from a stub address to the JITResolver that knows how to
compile it.
Patch by Olivier Meurant!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95837
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 11 Feb 2010 00:34:33 +0000 (00:34 +0000)]
Reuse operand location when updating PHI instructions.
Calling RemoveOperand is very expensive on huge PHI instructions. This makes
early tail duplication run twice as fast on the Firefox JavaScript
interpreter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95832
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 11 Feb 2010 00:34:18 +0000 (00:34 +0000)]
Remove duplicate successors from indirectbr instructions before building the machine CFG.
This makes early tail duplication run 60 times faster when compiling the Firefox
JavaScript interpreter, see PR6186.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95831
91177308-0d34-0410-b5e6-
96231b3b80d8