summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* decouple MMX check from regular splat checks. Some refactoring is coming, ↵Bruno Cardoso Lopes2010-09-071-4/+8
| | | | | | and MMX should be left alone to be easily removed after moving to intrinsics llvm-svn: 113247
* Remove now useless check, because the code can be matched below, no need to ↵Bruno Cardoso Lopes2010-09-071-1/+1
| | | | | | leave it for isel llvm-svn: 113242
* Issue a #error if the host doesn't have an implementation forDan Gohman2010-09-071-0/+2
| | | | | | GetMainExecutable yet. llvm-svn: 113240
* Minor change. Since the checks are equivalent, use isMMXBruno Cardoso Lopes2010-09-071-1/+1
| | | | llvm-svn: 113239
* Create PTX backend. Patch by Che-Liang Chiou!Nick Lewycky2010-09-0713-0/+230
| | | | llvm-svn: 113235
* Add patterns for MMX that use the new intrinsics.Dale Johannesen2010-09-072-16/+71
| | | | | | | Enable palignr intrinsic. These may need adjustment for a new VT in due course. llvm-svn: 113233
* Remove unused target specific nodeBruno Cardoso Lopes2010-09-072-10/+0
| | | | llvm-svn: 113224
* Don't leak the old operand when transforming "sldt" into "sldtw".Benjamin Kramer2010-09-071-1/+3
| | | | llvm-svn: 113200
* Add completely hokey binary-and and binary-or operations to ConstantRange andNick Lewycky2010-09-072-0/+32
| | | | | | teach LazyValueInfo to use them. llvm-svn: 113196
* Fix major bug in thunk detection. Also verify the calling convention.Nick Lewycky2010-09-071-22/+39
| | | | | | | | | Switch from isWeakForLinker to mayBeOverridden which is more accurate. Add more statistics and debugging info. Add comments. Move static function outside anonymous namespace. llvm-svn: 113190
* add missing cmov aliases, this resolves rdar://8208499Chris Lattner2010-09-071-13/+27
| | | | llvm-svn: 113189
* remove duplicated entryChris Lattner2010-09-061-1/+0
| | | | llvm-svn: 113188
* Add a new isSignWrappedSet() method to ConstantRange.Nick Lewycky2010-09-061-3/+15
| | | | | | | | | Fix zeroExtend and signExtend to support empty sets, and to return the smallest possible result set which contains the extension of each element in their inputs. For example zext i8 [100, 10) to i16 is now [0, 256), not i16 [100, 10) which contains 63446 members. llvm-svn: 113187
* "sldt <mem>" is ambiguous in 64-bit mode, but shouldChris Lattner2010-09-061-0/+7
| | | | | | | | always be disambiguated as sldtw. sldtw and sldtq with a mem operands have the same effect, but sldtw is more compact. Force it to sldtw, resolving rdar://8017530 llvm-svn: 113186
* fix rdar://8017621 - llvm-mc can't guess encoding for "push $(1000)"Chris Lattner2010-09-061-0/+1
| | | | llvm-svn: 113184
* fix the operand constraints of the immediate form of in/out,Chris Lattner2010-09-061-6/+6
| | | | | | allowing unsigned 8-bit operands. This fixes rdar://8208481 llvm-svn: 113182
* in the case where an instruction only has one implementationChris Lattner2010-09-062-9/+21
| | | | | | | | | | | | | | | | | | | | of a mneumonic, report operand errors with better location info. For example, we now report: t.s:6:14: error: invalid operand for instruction cwtl $1 ^ but we fail for common cases like: t.s:11:4: error: invalid operand for instruction addl $1, $1 ^ because we don't know if this is supposed to be the reg/imm or imm/reg form. llvm-svn: 113178
* Now that we know if we had a total fail on the instruction mnemonic, Chris Lattner2010-09-061-7/+27
| | | | | | | | | | | | | | | | | | | | | | | | give a more detailed error. Before: t.s:11:4: error: unrecognized instruction addl $1, $1 ^ t.s:12:4: error: unrecognized instruction f2efqefa $1 ^ After: t.s:11:4: error: invalid operand for instruction addl $1, $1 ^ t.s:12:4: error: invalid instruction mnemonic 'f2efqefa' f2efqefa $1 ^ This fixes rdar://8017912 - llvm-mc says "unrecognized instruction" when it means "invalid operands" llvm-svn: 113176
* simplify the hacks around jrcxz.Chris Lattner2010-09-061-4/+1
| | | | llvm-svn: 113167
* have tblgen detect when an instruction would have matched, butChris Lattner2010-09-061-34/+44
| | | | | | | | | | | | | failed because a subtarget feature was not enabled. Use this to remove a bunch of hacks from the X86AsmParser for rejecting things like popfl in 64-bit mode. Previously these hacks weren't needed, but were important to get a message better than "invalid instruction" when used in the wrong mode. This also fixes bugs where pushal would not be rejected correctly in 32-bit mode (just pusha). llvm-svn: 113166
* change MatchInstructionImpl to return an enum instead of bool.Chris Lattner2010-09-062-6/+6
| | | | llvm-svn: 113165
* have AsmMatcherEmitter.cpp produce the hunk of code that gets includedChris Lattner2010-09-063-20/+16
| | | | | | | into the middle of the class, and rework how the different sections of the generated file are conditionally included for simplicity. llvm-svn: 113163
* Redefine LOOP* instructions from I to Ii8PCRel as they take an i8 argument.Roman Divacky2010-09-061-3/+3
| | | | llvm-svn: 113158
* random cleanupsChris Lattner2010-09-061-9/+12
| | | | llvm-svn: 113157
* MCELF: Align symtab, relocation sections and section headers properly. Patch ↵Benjamin Kramer2010-09-061-12/+24
| | | | | | by Krister Wombell. llvm-svn: 113155
* compute the HasSSE3 bit correctly, patch by Nikolai Saoukh.Chris Lattner2010-09-061-9/+8
| | | | llvm-svn: 113147
* fix PR8067, an over-aggressive assertion in LICM.Chris Lattner2010-09-061-4/+4
| | | | llvm-svn: 113146
* cleanup some of the lifetime/invariant marker stuff, add a big fixme.Chris Lattner2010-09-061-6/+11
| | | | llvm-svn: 113144
* speed up -gvn 3.4% on the testcase in PR7023Chris Lattner2010-09-061-1/+1
| | | | llvm-svn: 113135
* Teach loop rotate to hoist trivially invariant instructionsChris Lattner2010-09-061-10/+27
| | | | | | | | | | | | | | | in the duplicated block instead of duplicating them. Duplicating them into the end of the loop and the preheader means that we got a phi node in the header of the loop, which prevented LICM from hoisting them. GVN would usually come around later and merge the duplicated instructions so we'd get reasonable output... except that anything dependent on the shoulda-been-hoisted value can't be hoisted. In PR5319 (which this fixes), a memory value didn't get promoted. llvm-svn: 113134
* pull a simple method out of LICM into a new Chris Lattner2010-09-062-22/+11
| | | | | | | | | | Loop::hasLoopInvariantOperands method. Remove a useless and confusing Loop::isLoopInvariant(Instruction) method, which didn't do what you thought it did. No functionality change. llvm-svn: 113133
* remove some dead code. t2addrmode_imm8s4 is never used in a Chris Lattner2010-09-052-32/+1
| | | | | | pattern, so there is no need to define a matching function. llvm-svn: 113122
* cleanups.Chris Lattner2010-09-051-22/+17
| | | | llvm-svn: 113119
* add a comment about where this should eventually move.Chris Lattner2010-09-051-0/+7
| | | | llvm-svn: 113117
* update this.Chris Lattner2010-09-051-10/+29
| | | | llvm-svn: 113116
* more cleanupsChris Lattner2010-09-051-52/+38
| | | | llvm-svn: 113115
* Change lower atomic pass to use IntrinsicInst to simplify it a bit.Chris Lattner2010-09-052-41/+30
| | | | llvm-svn: 113114
* eliminate some non-obvious casts. UndefValue isa Constant.Chris Lattner2010-09-051-4/+4
| | | | llvm-svn: 113113
* fix PR8063, a crash in globalopt in the malloc analysis code.Chris Lattner2010-09-051-20/+29
| | | | llvm-svn: 113109
* Added initialisers for reduction rule counters.Lang Hames2010-09-051-0/+4
| | | | llvm-svn: 113108
* Fix warning reported by MSVC++ builder.Nick Lewycky2010-09-051-2/+2
| | | | llvm-svn: 113106
* Switch FnSet to containing the ComparableFunction instead of a pointer to one.Nick Lewycky2010-09-051-36/+67
| | | | | | This reduces malloc traffic (yay!) and removes MergeFunctionsEqualityInfo. llvm-svn: 113105
* Fix many bugs when merging weak-strong and weak-weak pairs. We now merge allNick Lewycky2010-09-051-98/+183
| | | | | | | strong functions first to make sure they're the canonical definitions and then do a second pass looking only for weak functions. llvm-svn: 113104
* implement rdar://6653118 - fastisel should fold loads where possible.Chris Lattner2010-09-054-10/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since mem2reg isn't run at -O0, we get a ton of reloads from the stack, for example, before, this code: int foo(int x, int y, int z) { return x+y+z; } used to compile into: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx movl 4(%rsp), %esi addl %edx, %esi movl (%rsp), %edx addl %esi, %edx movl %edx, %eax addq $12, %rsp ret Now we produce: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx addl 4(%rsp), %edx ## Folded load addl (%rsp), %edx ## Folded load movl %edx, %eax addq $12, %rsp ret Fewer instructions and less register use = faster compiles. llvm-svn: 113102
* Remove dead code.Jakob Stoklund Olesen2010-09-041-97/+0
| | | | | | | Clobber ranges are no longer used when joining physical registers. Instead, all aliases are checked for interference. llvm-svn: 113084
* dead method.Chris Lattner2010-09-041-1/+0
| | | | llvm-svn: 113077
* zap dead code.Chris Lattner2010-09-0418-141/+4
| | | | llvm-svn: 113073
* remove dead code, mblaze uses SelectAddrRegImm/SelectAddrRegReg,Chris Lattner2010-09-041-54/+0
| | | | | | not SelectAddr llvm-svn: 113072
* Remove the last bit of isShuffleMaskLegal checks and improve the comment ↵Bruno Cardoso Lopes2010-09-041-5/+3
| | | | | | regarding mmx shuffles llvm-svn: 113059
* make explicit that we not handle several mmx shufflesBruno Cardoso Lopes2010-09-041-7/+7
| | | | llvm-svn: 113058
OpenPOWER on IntegriCloud