summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Add a microoptimization note.Benjamin Kramer2012-06-231-0/+6
| | | | llvm-svn: 159082
* Add relocation types for Hexagon processor; patch by Sidney Manning ↵Marshall Clow2012-06-234-0/+200
| | | | | | <sidneym@codeaurora.org> llvm-svn: 159081
* Clean-up after r159077.Hans Wennborg2012-06-232-63/+6
| | | | | | | Remove temporary GlobalVariable constructors now that Clang has been updated (r159078). llvm-svn: 159079
* Extend the IL for selecting TLS models (PR9788)Hans Wennborg2012-06-2324-47/+706
| | | | | | | | | | | | | | | This allows the user/front-end to specify a model that is better than what LLVM would choose by default. For example, a variable might be declared as @x = thread_local(initialexec) global i32 42 if it will not be used in a shared library that is dlopen'ed. If the specified model isn't supported by the target, or if LLVM can make a better choice, a different model may be used. llvm-svn: 159077
* Optimized usage of new SwitchInst case values (IntegersSubset type) in ↵Stepan Dyatkovskiy2012-06-234-27/+64
| | | | | | | | Local.cpp, Execution.cpp and BitcodeWriter.cpp. I got about 1% of compile-time improvement on my machines (Ubuntu 11.10 i386 and Ubuntu 12.04 x64). llvm-svn: 159076
* Use correct memory types for (V)CVTDQ2PD instructions.Craig Topper2012-06-231-3/+3
| | | | llvm-svn: 159075
* Silence an unused variable warning on release builds.Craig Topper2012-06-231-2/+2
| | | | llvm-svn: 159074
* Compress flags in X86 op folding to reduce space in static tables.Craig Topper2012-06-231-16/+16
| | | | llvm-svn: 159073
* Make helper method static since it doesn't use anything in the class.Craig Topper2012-06-231-3/+3
| | | | llvm-svn: 159071
* Remove intrinsic specific instructions for 128-bit (V)CVTDQ2PD. Replace with ↵Craig Topper2012-06-232-26/+9
| | | | | | intrinsic patterns. Mem forms omitted because the load size is only 64-bits. llvm-svn: 159070
* Teach LiveVariables to handle <undef> operands.Jakob Stoklund Olesen2012-06-231-3/+5
| | | | | | | | It's simple: Don't treat <undef> operands as uses, and don't assume a virtual register has a defining instruction unless a real use has been seen. llvm-svn: 159061
* Handle aliases to tls variables in all architectures, not just x86.Rafael Espindola2012-06-233-8/+21
| | | | llvm-svn: 159058
* (sub X, imm) gets canonicalized to (add X, -imm)Evan Cheng2012-06-234-7/+33
| | | | | | | | | | | | | | | There are patterns to handle immediates when they fit in the immediate field. e.g. %sub = add i32 %x, -123 => sub r0, r0, #123 Add patterns to catch immediates that do not fit but should be materialized with a single movw instruction rather than movw + movt pair. e.g. %sub = add i32 %x, -65535 => movw r1, #65535 sub r0, r0, r1 rdar://11726136 llvm-svn: 159057
* BoundsChecking: attach debug info to traps to make my life a bit more saneNuno Lopes2012-06-231-9/+10
| | | | llvm-svn: 159055
* ARM: Add a better diagnostic for some out of range immediates.Jim Grosbach2012-06-224-10/+21
| | | | | | | | | | | As an example of how the custom DiagnosticType can be used to provide better operand-mismatch diagnostics, add a custom diagnostic for the imm0_15 operand class used for several system instructions. Update the tests to expect the improved diagnostic. rdar://8987109 llvm-svn: 159051
* TableGen: AsmMatcher support for better operand diagnostics.Jim Grosbach2012-06-222-16/+74
| | | | | | | | | | | | | "Invalid operand" may be a completely correct diagnostic, but it's often insufficiently specific to really help identify and fix the problem in assembly source. Allow a target to specify a more-specific diagnostic kind for each AsmOperandClass derived definition and use that to provide more detailed diagnostics when an operant of that class resulted in a match failure. rdar://8987109 llvm-svn: 159050
* Add support for the PPC isel instruction.Hal Finkel2012-06-229-14/+107
| | | | | | | The isel (integer select) instruction is supported on the 440 and A2 embedded cores and on the POWER7. llvm-svn: 159045
* FileCheckize tests.Chad Rosier2012-06-222-2/+10
| | | | llvm-svn: 159044
* Rename fp-op fusion option (yet again) for compatibility with GCC option.Lang Hames2012-06-225-7/+7
| | | | llvm-svn: 159042
* Remove ProcessImplicitDefs.h which was unused.Jakob Stoklund Olesen2012-06-222-53/+27
| | | | | | The ProcessImplicitDefs class can be local to its implementation file. llvm-svn: 159041
* Also verify the def index for early clobbers.Jakob Stoklund Olesen2012-06-221-2/+3
| | | | llvm-svn: 159039
* Whitespace.Chad Rosier2012-06-221-8/+8
| | | | llvm-svn: 159035
* Delete a boring statistic.Jakob Stoklund Olesen2012-06-222-8/+0
| | | | llvm-svn: 159030
* Store live intervals in an IndexedMap.Jakob Stoklund Olesen2012-06-222-42/+34
| | | | | | It is both smaller and faster than DenseMap. llvm-svn: 159029
* Forgot this patch in r159023.Evan Cheng2012-06-221-1/+1
| | | | llvm-svn: 159028
* Revert r158679 - use case is unclear (and it increases the memory footprint).Hal Finkel2012-06-228-18/+18
| | | | | | | | | | Original commit message: Allow up to 64 functional units per processor itinerary. This patch changes the type used to hold the FU bitset from unsigned to uint64_t. This will be needed for some upcoming PowerPC itineraries. llvm-svn: 159027
* EmitZerofill should take a 64-bit size or else it's chopping off large ↵Evan Cheng2012-06-228-11/+22
| | | | | | zero-filled global. rdar://11729134 llvm-svn: 159023
* Fix a crash in --debug code.Jakob Stoklund Olesen2012-06-221-2/+6
| | | | | | Don't try to print out the live range of a physreg. llvm-svn: 159021
* Don't depend on live ranges being present.Jakob Stoklund Olesen2012-06-221-3/+8
| | | | | | | DBG_VALUE instructions could be referring to non-existing virtual registers. llvm-svn: 159020
* Simplify handleMove() a bit.Jakob Stoklund Olesen2012-06-221-4/+4
| | | | | | | There is no need to check for physreg live ranges. They don't exist any more. llvm-svn: 159019
* Stop computing physreg live ranges.Jakob Stoklund Olesen2012-06-222-203/+2
| | | | | | Everyone is using on-demand regunit ranges now. llvm-svn: 159018
* Reverting makefile change wile I figure out what the heck happenedMarshall Clow2012-06-221-1/+1
| | | | llvm-svn: 159017
* Remove some redundant LIS->hasInterval() checks.Jakob Stoklund Olesen2012-06-221-22/+0
| | | | | | | These functions only operate on virtual registers now, and they all have live ranges. llvm-svn: 159015
* Added building yaml2obj to the configure+make build systemMarshall Clow2012-06-222-2/+2
| | | | llvm-svn: 159014
* Use MRI::isConstantPhysReg() to check remat feasibility.Jakob Stoklund Olesen2012-06-221-4/+8
| | | | | | | Don't depend on LiveIntervals::hasInterval() to determine if a physreg is reserved and constant. llvm-svn: 159013
* Remove a variable that is unused when assertions aren't enabled.Kaelyn Uhrain2012-06-221-2/+1
| | | | llvm-svn: 159011
* Use regunit liveness to guide LiveDebugVariables.Jakob Stoklund Olesen2012-06-221-5/+18
| | | | | | This should produce the same results as using physreg liveness directly. llvm-svn: 159009
* Remove LiveIntervals::trackingRegUnits().Jakob Stoklund Olesen2012-06-224-76/+13
| | | | | | | | | With regunit liveness permanently enabled, this function would always return true. Also remove now obsolete code for checking physreg interference. llvm-svn: 159006
* Revert remaining part of r93200: "Disable folding sext(trunc(x)) -> x"Jakob Stoklund Olesen2012-06-222-15/+11
| | | | | | | | | | | This fixes PR5997. These transforms were disabled because codegen couldn't deal with other uses of trunc(x). This is now handled by the peephole pass. This causes no regressions on x86-64. llvm-svn: 159003
* Change comment into proper Doxygen member comment.Dmitri Gribenko2012-06-221-1/+2
| | | | llvm-svn: 159000
* simplify code from previous commits (Thanks Duncan)Nuno Lopes2012-06-221-7/+2
| | | | llvm-svn: 158999
* Fixed r158979.Stepan Dyatkovskiy2012-06-224-56/+180
| | | | | | | | | | Original message: Performance optimizations: - SwitchInst: case values stored separately from Operands List. It allows to make faster access to individual case value numbers or ranges. - Optimized IntItem, added APInt value caching. - Optimized IntegersSubsetGeneric: added optimizations for cases when subset is single number or when subset consists from single numbers only. llvm-svn: 158997
* test/CodeGen/Generic/asm-large-immediate.ll: Mark it as XFAIL: powerpc, ↵NAKAMURA Takumi2012-06-221-1/+3
| | | | | | possibly due to r158939. llvm-svn: 158994
* Remove another duplicated variable. We only need one to tell us if the linkerRafael Espindola2012-06-224-10/+1
| | | | | | knows dwarf or not. llvm-svn: 158993
* Fix a FIXME: DwarfRequiresRelocationForSectionOffset is the same asRafael Espindola2012-06-225-14/+3
| | | | | | DwarfUsesRelocationsAcrossSections. llvm-svn: 158992
* Revert commit 158979 (dyatkovskiy) since it is causing several buildbots toDuncan Sands2012-06-223-170/+52
| | | | | | | | | | | | | fail. Original commit message: Performance optimizations: - SwitchInst: case values stored separately from Operands List. It allows to make faster access to individual case value numbers or ranges. - Optimized IntItem, added APInt value caching. - Optimized IntegersSubsetGeneric: added optimizations for cases when subset is single number or when subset consists from single numbers only. On my machine these optimizations gave about 4-6% of compile-time improvement. llvm-svn: 158986
* Performance optimizations:Stepan Dyatkovskiy2012-06-223-52/+170
| | | | | | | | | | - SwitchInst: case values stored separately from Operands List. It allows to make faster access to individual case value numbers or ranges. - Optimized IntItem, added APInt value caching. - Optimized IntegersSubsetGeneric: added optimizations for cases when subset is single number or when subset consists from single numbers only. On my machine these optimizations gave about 4-6% of compile-time improvement. llvm-svn: 158979
* Use "NoItineraries" for processors with no itineraries.Andrew Trick2012-06-226-47/+45
| | | | | | | | This makes it explicit when ScoreboardHazardRecognizer will be used. "GenericItineraries" would only make sense if it contained real itinerary values and still required ScoreboardHazardRecognizer. llvm-svn: 158963
* Functions calling __builtin_eh_return must have a frame pointer.Jakob Stoklund Olesen2012-06-222-4/+25
| | | | | | | | | | | | | | The code in X86TargetLowering::LowerEH_RETURN() assumes that a frame pointer exists, but the frame pointer was forced by the presence of llvm.eh.unwind.init which isn't guaranteed. If llvm.eh.unwind.init is actually required in functions calling eh.return (is it?), we should diagnose that instead of emitting bad machine code. This should fix the dragonegg-x86_64-linux-gcc-4.6-test bot. llvm-svn: 158961
* ARM scheduling fix: don't guess at implicit operand latency.Andrew Trick2012-06-221-5/+9
| | | | | | | | | | This is a minor drive-by fix with no robust way to unit test. As an example see neon-div.ll: SU(16): %Q8<def> = VMOVLsv4i32 %D17, pred:14, pred:%noreg, %Q8<imp-use,kill> val SU(1): Latency=2 Reg=%Q8 ...should be latency=1 llvm-svn: 158960
OpenPOWER on IntegriCloud