summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Use reloc_absolute_word_sext relocation for X86::MOV64(ri/mi)32 ↵Bruno Cardoso Lopes2009-08-081-2/+2
| | | | | | | | | instructions, since they are in 64 bit mode with i64immSExt32 imms. JIT is not affected since it handles both word absolute relocations in the same way llvm-svn: 78479
* More ProfileInfo improvements.Daniel Dunbar2009-08-085-68/+97
| | | | | | | | | | | | - Part of optimal static profiling patch sequence by Andreas Neustifter. - Store edge, block, and function information separately for each functions (instead of in one giant map). - Return frequencies as double instead of int, and use a sentinel value for missing information. llvm-svn: 78477
* ELF improvements:Bruno Cardoso Lopes2009-08-083-58/+94
| | | | | | | | | | | Handle large integers, x86_fp80, ConstantAggregateZero, and two more ConstantExpr: GetElementPtr and IntToPtr Set SHF_MERGE bit for mergeable strings Avoid zero initialized strings to be classified as a bss symbol Don't allow common symbols to be classified as STB_WEAK Add a constant to be used as a global value offset in data relocations llvm-svn: 78476
* Update CMakeDaniel Dunbar2009-08-081-0/+1
| | | | llvm-svn: 78475
* Clean out per-function data after the machine code verifier is done with it.Jakob Stoklund Olesen2009-08-081-0/+8
| | | | | | | | | | | | | | | Also don't dereference old pointers after they have been deleted causing random crashes when enabling the machine code verifier. Ahem... I have not included a test case for the crash. It hapened when enabling the verifier on CodeGen/X86/2009-08-06-branchfolder-crash.ll. The crash depends on an MBB being allocated at the same address as a previously deleted MBB. I don't think that can be reproduced reliably. llvm-svn: 78472
* Add insert_elt / extract_elt patterns for v4f32 stuff.Anton Korobeynikov2009-08-081-19/+30
| | | | | | Did anyone tests v4f32 ever? llvm-svn: 78470
* Lane number should be printed w/o hashAnton Korobeynikov2009-08-082-11/+11
| | | | llvm-svn: 78469
* Use VLDM / VSTM to spill/reload 128-bit Neon registersAnton Korobeynikov2009-08-085-10/+30
| | | | llvm-svn: 78468
* Update the machine code verifier to keep up with the scavenger.Jakob Stoklund Olesen2009-08-081-12/+22
| | | | | | | | | * Cleaner handling of <undef>. * <def> takes precedence over <def,dead>. * Implement the OK-to-redefine-a-register-that-was- live-in-but-has-not-been-used-before rule. llvm-svn: 78467
* Remove RegisterScavenger::isSuperRegUsed(). This completely reverses the ↵Jakob Stoklund Olesen2009-08-082-38/+9
| | | | | | | | | | | | | | | mistaken commit r77904. Now there is no special treatment of instructions that redefine part of a super-register. Instead, the super-register is marked with <imp-use,kill> and <imp-def>. For instance, from LowerSubregs on ARM: subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1<undef>, %D1<kill>, 5 subreg: %D2<def> = FCPYD %D1<kill>, 14, %reg0, %Q1<imp-def> subreg: CONVERTING: %Q1<def> = INSERT_SUBREG %Q1, %D0<kill>, 6 subreg: %D3<def> = FCPYD %D0<kill>, 14, %reg0, %Q1<imp-use,kill>, %Q1<imp-def> llvm-svn: 78466
* Simplify RegScavenger::forward a bit more.Jakob Stoklund Olesen2009-08-081-65/+53
| | | | | | | | | | | Verify that early clobber registers and their aliases are not used. All changes to RegsAvailable are now done as a transaction so the order of operands makes no difference. The included test case is from PR4686. It has behaviour that was dependent on the order of operands. llvm-svn: 78465
* move this fp select into a patternAndrew Lenharth2009-08-082-22/+9
| | | | llvm-svn: 78464
* llvm-mc/AsmMatcher: Improve match code.Daniel Dunbar2009-08-081-23/+1
| | | | | | | | | | | | | | - This doesn't actually improve the algorithm (its still linear), but the generated (match) code is now fairly compact and table driven. Still need a generic string matcher. - The table still needs to be compressed, this is quite simple to do and should shrink it to under 16k. - This also simplifies and restructures the code to make the match classes more explicit, in anticipation of resolving ambiguities. llvm-svn: 78461
* Implement Neon VZIP and VUZP instructions. These are very similar to VTRN,Bob Wilson2009-08-082-16/+70
| | | | | | so I generalized the class for VTRN in the .td file to handle all 3 of them. llvm-svn: 78460
* Implement Neon VTRN instructions. For now, anyway, these are selectedBob Wilson2009-08-082-0/+48
| | | | | | | | directly from the intrinsics produced by the frontend. If it is more convenient to have a custom DAG node for using these to implement shuffles, we can add that later. llvm-svn: 78459
* Add a skeleton Thumb2 instruction size reduction pass.Evan Cheng2009-08-082-1/+219
| | | | llvm-svn: 78456
* Code refactoring. No functionality change.Evan Cheng2009-08-084-22/+31
| | | | llvm-svn: 78455
* tADDhirr should target GPR, not tGPR.Evan Cheng2009-08-081-1/+1
| | | | llvm-svn: 78454
* I can type.Evan Cheng2009-08-081-1/+1
| | | | llvm-svn: 78453
* make printInstruction return void since its result is omitted. Make the Chris Lattner2009-08-0813-14/+14
| | | | | | error condition get trapped with an assert. llvm-svn: 78449
* Fix some -Asserts unused variable warnings.Daniel Dunbar2009-08-082-6/+5
| | | | llvm-svn: 78447
* don't check the result of printInstruction anymore.Chris Lattner2009-08-085-19/+5
| | | | llvm-svn: 78444
* Do not generate 32-bit call on win64 when imm does not fitAnton Korobeynikov2009-08-071-2/+2
| | | | llvm-svn: 78443
* code cleanupChris Lattner2009-08-071-20/+18
| | | | llvm-svn: 78432
* Make NEON single-precision FP support the default for cortex-a8 (again).David Goodwin2009-08-071-1/+1
| | | | llvm-svn: 78430
* remove a bunch of now-dead crud from the asmprinter and TAI interfaces.Chris Lattner2009-08-072-34/+0
| | | | llvm-svn: 78428
* Fix copy-pasto.Andreas Bolka2009-08-071-2/+2
| | | | llvm-svn: 78426
* Unbreak the stuffAnton Korobeynikov2009-08-071-2/+2
| | | | llvm-svn: 78425
* Back out some of recent register scavenger change by John Mosby. It broke a ↵Evan Cheng2009-08-071-27/+14
| | | | | | number of ARM tests. llvm-svn: 78421
* avoid this libcall with long inline expansionAndrew Lenharth2009-08-071-1/+30
| | | | llvm-svn: 78420
* 2 more vdup.32 casesAnton Korobeynikov2009-08-072-0/+19
| | | | llvm-svn: 78419
* A big oops. Thumb1 default CC is a def of CPSR, not a use of CPSR.Evan Cheng2009-08-071-1/+1
| | | | llvm-svn: 78418
* tidy upChris Lattner2009-08-071-7/+4
| | | | llvm-svn: 78416
* Reformatting of lines. Put multiple DEBUG statements under one DEBUG statement.Bill Wendling2009-08-071-45/+78
| | | | llvm-svn: 78411
* Thumb2 32-bit ldm / stm needs .w suffix if submode is ia.Evan Cheng2009-08-072-3/+7
| | | | llvm-svn: 78410
* MSVC warning fixes; patch by Stein Roger!Daniel Dunbar2009-08-071-0/+11
| | | | llvm-svn: 78405
* llvm-mc/AsmMatcher: Tweaks in response to feedback.Daniel Dunbar2009-08-071-1/+1
| | | | llvm-svn: 78404
* To catch bugs like the one fixed inJeffrey Yasskin2009-08-071-13/+18
| | | | | | | | | | | | | http://llvm.org/viewvc/llvm-project?view=rev&revision=78127, I'm changing the ExecutionEngine's global mappings to hold AssertingVH<const GlobalValue>. That way, if unregistering a mapping fails to actually unregister it, we'll get an assert. Running the jit nightly tests didn't uncover any actual instances of the problem. This also uncovered the fact that AssertingVH<const X> didn't work, so I fixed that too. llvm-svn: 78400
* This is done.Evan Cheng2009-08-071-2/+0
| | | | llvm-svn: 78399
* Use 16-bit tMOVgpr2gpr instead of tMOVr to copy GPR registers in Thumb2 mode.Evan Cheng2009-08-072-8/+1
| | | | llvm-svn: 78398
* Fix support to use NEON for single precision fp math.Evan Cheng2009-08-072-46/+90
| | | | llvm-svn: 78397
* SIV/MIV classification for LDA.Andreas Bolka2009-08-071-6/+35
| | | | | | | | | | LoopDependenceAnalysis::getLoops is currently O(N*M) for a loop-nest of depth N and a compound SCEV of M atomic SCEVs. As both N and M will typically be very small, this should not be a problem. If it turns out to be one, rewriting getLoops as SCEVVisitor will reduce complexity to O(M). llvm-svn: 78394
* Rewrite previous patch to follow Chris' stylisticDale Johannesen2009-08-071-14/+22
| | | | | | preference; no functional change. llvm-svn: 78391
* Fix dom frontier update. This fixes PR4667.Devang Patel2009-08-071-19/+23
| | | | | | Patch by Jakub Staszak. llvm-svn: 78388
* Minor fixes to avoid using invalid debugloc.Sanjiv Gupta2009-08-071-5/+9
| | | | llvm-svn: 78383
* Simplify code and avoid allocations.Benjamin Kramer2009-08-071-10/+3
| | | | llvm-svn: 78382
* Improve disabling of X86 AsmMatcher.Daniel Dunbar2009-08-071-0/+1
| | | | llvm-svn: 78381
* Disable X86 AsmMatcher for now, it is causing gcc-4.0 to run out of memory onDaniel Dunbar2009-08-071-0/+19
| | | | | | | i386-apple-darwin9. This presumably will get fixed once the generated code improves. llvm-svn: 78379
* llvm-mc/AsmMatcher: Move to a slightly more sane matching design.Daniel Dunbar2009-08-071-139/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Still not very sane, but a least its not 60k lines on X86. :) - In terms of correctness, currently some things are hard wired for X86, and we still don't properly resolve ambiguities (this is ignoring the instructions we don't even match due to funny .td stuff or other corner cases). The high level changes: 1. Represent tokens which are significant for matching explicitly as separate operands. This uniformly handles not only the instruction mnemonic, but also 'signficiant' syntax like the '*' in "call * ...". 2. Separate the matching of operands to an instruction from the construction of the MCInst. In theory this can be done during matching, but since the number of variations is small I think it makes sense to decompose the problems. 3. Improved a few of the mechanisms to at least successfully flatten / tokenize the assembly strings for PowerPC and ARM. 4. The comment at the top of AsmMatcherEmitter.cpp explains the approach I'm moving towards for handling ambiguous instructions. The high-bit is to infer a partial ordering of the operand classes (and force the user to specify one if we can't) and use that to resolve ambiguities. llvm-svn: 78378
* Error out, rather than infinite looping, if constant island pass can't converge.Evan Cheng2009-08-071-4/+12
| | | | llvm-svn: 78377
OpenPOWER on IntegriCloud