summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Add getNode() to post dominators.Tobias Grosser2010-01-111-0/+4
| | | | | | Implement the same interface as already available for dominators. llvm-svn: 93194
* Extend r93152 to work on OR r, r. If the source set bits are known not to ↵Evan Cheng2010-01-114-10/+51
| | | | | | overlap, then select as an ADD instead. llvm-svn: 93191
* reduce this to a sensible testcase.Chris Lattner2010-01-111-18/+5
| | | | llvm-svn: 93189
* Shorten up this testcase.David Greene2010-01-111-378/+0
| | | | llvm-svn: 93187
* Revert 93158. It's breaking quite a few x86_64 tests.Evan Cheng2010-01-116-44/+38
| | | | llvm-svn: 93185
* Avoid adding PHI arguments for a predecessor that has gone away when a ↵Jakob Stoklund Olesen2010-01-112-14/+116
| | | | | | | | BRCOND was constant folded. This fixes PR5980. llvm-svn: 93184
* Remove unused string functions.Benjamin Kramer2010-01-112-83/+0
| | | | llvm-svn: 93183
* Do not turn 8-bit OR to ADD since ADD8ri is not 3-addressfiable.Evan Cheng2010-01-111-4/+1
| | | | llvm-svn: 93182
* Disable transformation of select of two loads to a select of address and ↵Mon P Wang2010-01-111-28/+41
| | | | | | | | then a load if the loads are not in the default address space because the transformation discards src value info. llvm-svn: 93180
* Add StrInStrNoCase, a StringRef version of CStrInCStrNoCase.Benjamin Kramer2010-01-112-0/+18
| | | | llvm-svn: 93174
* Add top level section for named metadata.Devang Patel2010-01-111-8/+35
| | | | llvm-svn: 93172
* Improve unclear bits and inaccuracies in structure and insertvalueJeffrey Yasskin2010-01-111-6/+9
| | | | | | | | documentation. Patch by Dustin Laurence! llvm-svn: 93170
* Update the -tailcallopt description to match djg's improvements to the callingJeffrey Yasskin2010-01-111-5/+0
| | | | | | convention. llvm-svn: 93167
* s/NextValueNo/NextMDValueNo while processing metadata.Devang Patel2010-01-112-12/+12
| | | | llvm-svn: 93165
* Turns out llvm-gcc still uses SplitString with a vector. Add it back until IBenjamin Kramer2010-01-112-0/+18
| | | | | | have a fix. llvm-svn: 93163
* Reimplement getToken and SplitString as "StringRef helper functions"Benjamin Kramer2010-01-116-49/+44
| | | | | | | | | - getToken is modeled after StringRef::split but it can split on multiple separator chars and skips leading seperators. - SplitString is a StringRef::split variant for more than 2 elements with the same behaviour as getToken. llvm-svn: 93161
* Use a 32-bit and with implicit zero-extension instead of a 64-bit and if itDan Gohman2010-01-112-3/+51
| | | | | | | | | | | has an immediate with at least 32 bits of leading zeros, to avoid needing to materialize that immediate in a register first. FileCheckize, tidy, and extend a testcase to cover this case. This fixes rdar://7527390. llvm-svn: 93160
* Re-instate MOV64r0 and MOV16r0, with adjustments to work with theDan Gohman2010-01-116-37/+57
| | | | | | | | new AsmPrinter. This is perhaps less elegant than describing them in terms of MOV32r0 and subreg operations, but it allows the current register to rematerialize them. llvm-svn: 93158
* Generalize this check to avoid depending on a specific register assignment.Dan Gohman2010-01-111-1/+1
| | | | llvm-svn: 93157
* Make this test less trivial, to avoid spurious failures.Dan Gohman2010-01-111-2/+2
| | | | llvm-svn: 93156
* Pattern top-level operators don't need to be restricted to aDan Gohman2010-01-112-2/+2
| | | | | | single user. The _su forms are intended for non-top-level nodes. llvm-svn: 93155
* Reword this comment to reference a more fundamental issue.Dan Gohman2010-01-111-2/+2
| | | | llvm-svn: 93154
* Select an OR with immediate as an ADD if the input bits are known zero. This ↵Evan Cheng2010-01-114-10/+64
| | | | | | allow the instruction to be 3address-fied if needed. llvm-svn: 93152
* Implement a feature (-vector-unaligned-mem) to allow targets toDavid Greene2010-01-115-4/+418
| | | | | | | | ignore alignment requirements for SIMD memory operands. This is useful on architectures like the AMD 10h that do not trap on unaligned references if a status bit is twiddled at startup time. llvm-svn: 93151
* Respond to Chris' review:Victor Hernandez2010-01-114-14/+23
| | | | | | | Make InsertDbgValueIntrinsic() and get Offset take and recieve a uint64_t. Get constness correct for getVariable() and getValue(). llvm-svn: 93149
* add one more bitfield optimization, allowing clang to generateChris Lattner2010-01-112-2/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | good code on PR4216: _test_bitfield: ## @test_bitfield orl $32962, %edi movl $4294941946, %eax andq %rdi, %rax ret instead of: _test_bitfield: movl $4294941696, %ecx movl %edi, %eax orl $194, %edi orl $32768, %eax andq $250, %rdi andq %rax, %rcx movq %rdi, %rax orq %rcx, %rax ret Evan is looking into the remaining andq+imm -> andl optimization. llvm-svn: 93147
* Extend CanEvaluateZExtd to handle and/or/xor more aggressively in theChris Lattner2010-01-112-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BitsToClear case. This allows it to promote expressions which have an and/or/xor after the lshr, promoting cases like test2 (from PR4216) and test3 (random extample extracted from a spec benchmark). clang now compiles the code in PR4216 into: _test_bitfield: ## @test_bitfield movl %edi, %eax orl $194, %eax movl $4294902010, %ecx andq %rax, %rcx orl $32768, %edi andq $39936, %rdi movq %rdi, %rax orq %rcx, %rax ret instead of: _test_bitfield: ## @test_bitfield movl %edi, %eax orl $194, %eax movl $4294902010, %ecx andq %rax, %rcx shrl $8, %edi orl $128, %edi shlq $8, %rdi andq $39936, %rdi movq %rdi, %rax orq %rcx, %rax ret which is still not great, but is progress. llvm-svn: 93145
* Remove the dead TD argument to CanEvaluateZExtd, and add aChris Lattner2010-01-112-15/+81
| | | | | | | | | new BitsToClear result which allows us to start promoting expressions that end with a lshr-by-constant. This is conservatively correct and better than what we had before (see testcases) but still needs to be extended further. llvm-svn: 93144
* improve comments, remove dead TD argument to CanEvaluateSExtd.Chris Lattner2010-01-111-11/+12
| | | | llvm-svn: 93143
* teach sext optimization to handle truncs from types that are notChris Lattner2010-01-102-3/+30
| | | | | | the dest of the sext. llvm-svn: 93128
* teach zext optimization how to deal with truncs that don't come fromChris Lattner2010-01-102-13/+37
| | | | | | | | | | | | | | | | | the zext dest type. This allows us to handle test52/53 in cast.ll, and allows llvm-gcc to generate much better code for PR4216 in -m64 mode: _test_bitfield: ## @test_bitfield orl $32962, %edi movl %edi, %eax andl $-25350, %eax ret This also fixes a bug handling vector extends, ensuring that the mask produced is a vector constant, not an integer constant. llvm-svn: 93127
* fix a buggy assertion, CreateIntegerCast should allow Chris Lattner2010-01-101-1/+2
| | | | | | integer vectors as well as just integers. llvm-svn: 93126
* Suppress a warning on gcc 4.4.Mikhail Glushenkov2010-01-101-26/+26
| | | | | warning: suggest parentheses around ‘&&’ within ‘||’. llvm-svn: 93121
* simplify CanEvaluateSExtd to return a bool now that we have aChris Lattner2010-01-101-63/+22
| | | | | | simpler profitability predicate. llvm-svn: 93111
* the NumCastsRemoved argument to CanEvaluateSExtd is dead, remove it.Chris Lattner2010-01-101-26/+13
| | | | llvm-svn: 93110
* now that the cost model has changed, we can always consider Chris Lattner2010-01-102-27/+60
| | | | | | | | elimination of a sign extend to be a win, which simplifies the client of CanEvaluateSExtd, and allows us to eliminate more casts (examples taken from real code). llvm-svn: 93109
* Compute isFunctionLocal in MDNode ctor or via argument in new function ↵Victor Hernandez2010-01-107-29/+80
| | | | | | | | getWhenValsUnresolved(). Document PFS argument to ParseValID() and ConvertGlobalOrMetadataValIDToValue(). llvm-svn: 93108
* change the preferred canonical form for a sign extension to beChris Lattner2010-01-103-30/+8
| | | | | | | | lshr+ashr instead of trunc+sext. We want to avoid type conversions whenever possible, it is easier to codegen expressions without truncates and extensions. llvm-svn: 93107
* fix indentation of switch statements, no functionality change.Chris Lattner2010-01-101-79/+79
| | | | llvm-svn: 93106
* fix pasto that broke bootstrap.Chris Lattner2010-01-101-1/+1
| | | | llvm-svn: 93105
* simplify CanEvaluateZExtd now that we don't care about the number of Chris Lattner2010-01-101-89/+23
| | | | | | | bits known clear in the result and don't care about the # casts eliminated. TD is also dead but keeping it for now. llvm-svn: 93098
* two changes: Chris Lattner2010-01-102-25/+53
| | | | | | | | | | | 1) don't try to optimize a sext or zext that is only used by a trunc, let the trunc get optimized first. This avoids some pointless effort in some common cases since instcombine scans down a block in the first pass. 2) Change the cost model for zext elimination to consider an 'and' cheaper than a zext. This allows us to do it more aggressively, and for the next patch to simplify the code quite a bit. llvm-svn: 93097
* enhance CanEvaluateZExtd to handle shift left and sext, allowingChris Lattner2010-01-102-3/+45
| | | | | | more expressions to be promoted and casts eliminated. llvm-svn: 93096
* remove an xform subsumed by EvaluateInDifferentType.Chris Lattner2010-01-101-27/+0
| | | | llvm-svn: 93095
* Fix nondeterministic behavior.Julien Lerouge2010-01-101-9/+3
| | | | llvm-svn: 93093
* clean up this xform by using m_Trunc.Chris Lattner2010-01-101-12/+9
| | | | llvm-svn: 93092
* inline and remove the rest of commonIntCastTransforms.Chris Lattner2010-01-102-18/+18
| | | | llvm-svn: 93091
* Inline the expression type promotion/demotion stuff out ofChris Lattner2010-01-101-417/+417
| | | | | | | | | commonIntCastTransforms into the callers, eliminating a switch, and allowing the static predicate methods to be moved down to live next to the corresponding function. No functionality change. llvm-svn: 93089
* hopefully unbreak the ocaml bindings.Chris Lattner2010-01-091-1/+1
| | | | llvm-svn: 93082
* add 3 passes which have been added but aren't used afaik.Chris Lattner2010-01-091-0/+1
| | | | llvm-svn: 93080
OpenPOWER on IntegriCloud