summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/README.txt
Commit message (Collapse)AuthorAgeFilesLines
* [CodeGen] Unify MBB reference format in both MIR and debug outputFrancis Visoiu Mistrih2017-12-041-3/+3
| | | | | | | | | | | | | | | | As part of the unification of the debug format and the MIR format, print MBB references as '%bb.5'. The MIR printer prints the IR name of a MBB only for block definitions. * find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E 's/BB#" << ([a-zA-Z0-9_]+)->getNumber\(\)/" << printMBBReference(*\1)/g' * find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E 's/BB#" << ([a-zA-Z0-9_]+)\.getNumber\(\)/" << printMBBReference(\1)/g' * find . \( -name "*.txt" -o -name "*.s" -o -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E 's/BB#([0-9]+)/%bb.\1/g' * grep -nr 'BB#' and fix Differential Revision: https://reviews.llvm.org/D40422 llvm-svn: 319665
* Test commit permissionOren Ben Simhon2016-10-051-2/+2
| | | | llvm-svn: 283318
* Remove the ScalarReplAggregates passDavid Majnemer2016-06-151-1/+1
| | | | | | | | | | Nearly all the changes to this pass have been done while maintaining and updating other parts of LLVM. LLVM has had another pass, SROA, which has superseded ScalarReplAggregates for quite some time. Differential Revision: http://reviews.llvm.org/D21316 llvm-svn: 272737
* Rename all references to old mailing lists to new lists.llvm.org address.Tanya Lattner2015-08-051-1/+1
| | | | llvm-svn: 243999
* InstCombine: fold (A << C) == (B << C) --> ((A^B) & (~0U >> C)) == 0Benjamin Kramer2015-03-261-38/+0
| | | | | | | Anding and comparing with zero can be done in a single instruction on most archs so this is a bit cheaper. llvm-svn: 233291
* [SimplifyLibCalls] Turn memchr(const, C, const) into a bitfield check.Benjamin Kramer2015-03-211-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | strchr("123!", C) != nullptr is a common pattern to check if C is one of 1, 2, 3 or !. If the largest element of the string is smaller than the target's register size we can easily create a bitfield and just do a simple test for set membership. int foo(char C) { return strchr("123!", C) != nullptr; } now becomes cmpl $64, %edi ## range check sbbb %al, %al movabsq $0xE000200000001, %rcx btq %rdi, %rcx ## bit test sbbb %cl, %cl andb %al, %cl ## and the two conditions andb $1, %cl movzbl %cl, %eax ## returning an int ret (imho the backend should expand this into a series of branches, but that's a different story) The code is currently limited to bit fields that fit in a register, so usually 64 or 32 bits. Sadly, this misses anything using alpha chars or {}. This could be fixed by just emitting a i128 bit field, but that can generate really ugly code so we have to find a better way. To some degree this is also recreating switch lowering logic, but we can't simply emit a switch instruction and thus change the CFG within instcombine. llvm-svn: 232902
* Delete -std-compile-opts.Rafael Espindola2014-10-161-22/+22
| | | | | | These days -std-compile-opts was just a silly alias for -O3. llvm-svn: 219951
* Reassociate x + -0.1234 * y into x - 0.1234 * yErik Verbruggen2014-08-211-38/+0
| | | | | | | | | | | This does not require -ffast-math, and it gives CSE/GVN more options to eliminate duplicate expressions in, e.g.: return ((x + 0.1234 * y) * (x - 0.1234 * y)); Differential Revision: http://reviews.llvm.org/D4904 llvm-svn: 216169
* Remove testcase from README which we didn't get. We do get it now.Erik Verbruggen2014-08-151-1/+1
| | | | llvm-svn: 215699
* Revert "InstCombine: merge constants in both operands of icmp."Erik Verbruggen2014-03-281-0/+12
| | | | | | | | | This reverts commit r204912, and follow-up commit r204948. This introduced a performance regression, and the fix is not completely clear yet. llvm-svn: 205010
* InstCombine: merge constants in both operands of icmp.Erik Verbruggen2014-03-271-12/+0
| | | | | | | | | | Transform: icmp X+Cst2, Cst into: icmp X, Cst-Cst2 when Cst-Cst2 does not overflow, and the add has nsw. llvm-svn: 204912
* Remove two popcount patterns which we are already able to recognize.Shuxin Yang2012-12-131-15/+0
| | | | llvm-svn: 170158
* Move TargetData to DataLayout.Micah Villmow2012-10-081-1/+1
| | | | llvm-svn: 165402
* Fabs folding is implemented.Benjamin Kramer2012-08-191-5/+0
| | | | llvm-svn: 162186
* Test revert of test changes.Micah Villmow2012-07-231-1/+0
| | | | llvm-svn: 160632
* Test commit.Micah Villmow2012-07-231-0/+1
| | | | llvm-svn: 160631
* Add a microoptimization note.Benjamin Kramer2012-06-231-0/+6
| | | | llvm-svn: 159082
* Remove README entry obsoleted by register masks.Benjamin Kramer2012-04-121-16/+0
| | | | llvm-svn: 154588
* Add another note about a missed compare with nsw arithmetic instcombine.Benjamin Kramer2012-03-281-0/+7
| | | | llvm-svn: 153574
* Add a note about a cute little fabs optimization.Benjamin Kramer2012-03-271-0/+5
| | | | llvm-svn: 153543
* Add two missed instcombines related to compares with nsw arithmetic.Benjamin Kramer2012-03-271-0/+12
| | | | llvm-svn: 153542
* Add two notes for correlated-expression optimizations.Benjamin Kramer2011-09-071-0/+10
| | | | llvm-svn: 139263
* Don't emit a bit test if there is only one case the test can yield false. A ↵Benjamin Kramer2011-07-141-9/+4
| | | | | | simple SETNE is sufficient. llvm-svn: 135126
* InstCombine: Fold A-b == C --> b == A-C if A and C are constants.Benjamin Kramer2011-06-131-5/+0
| | | | | | The backend already knew this trick. llvm-svn: 132915
* clarify this, apparently it is confusing :)Chris Lattner2011-05-231-1/+3
| | | | llvm-svn: 131916
* add a note.Chris Lattner2011-05-221-0/+10
| | | | llvm-svn: 131863
* move PR9408 here.Chris Lattner2011-05-221-0/+40
| | | | llvm-svn: 131841
* Transform: "icmp eq (trunc (lshr(X, cst1)), cst" to "icmp (and X, mask), cst"Chris Lattner2011-04-261-46/+0
| | | | | | | | | | when X has multiple uses. This is useful for exposing secondary optimizations, but the X86 backend isn't ready for this when X has a single use. For example, this can disable load folding. This is inching towards resolving PR6627. llvm-svn: 130238
* add a missed bitfield instcombine.Chris Lattner2011-04-251-0/+47
| | | | llvm-svn: 130137
* DAGCombine: fold "(zext x) == C" into "x == (trunc C)" if the trunc is lossless.Benjamin Kramer2011-04-221-30/+1
| | | | | | | | | | | | On x86 this allows to fold a load into the cmp, greatly reducing register pressure. movzbl (%rdi), %eax cmpl $47, %eax -> cmpb $47, (%rdi) This shaves 8k off gcc.o on i386. I'll leave applying the patch in README.txt to Chris :) llvm-svn: 130005
* add a minor missed dag combine that is blocking mid-level optimizationChris Lattner2011-04-141-0/+76
| | | | | | improvements, that will lead to fixing PR6627. llvm-svn: 129504
* Add a note.Benjamin Kramer2011-03-251-0/+19
| | | | llvm-svn: 128286
* A bit more analysis of a memset-related README entry.Eli Friedman2011-03-221-4/+5
| | | | llvm-svn: 128107
* This README entry was fixed recently.Eli Friedman2011-03-211-28/+0
| | | | llvm-svn: 127982
* add a noteChris Lattner2011-03-011-0/+15
| | | | llvm-svn: 126719
* Add some DAGCombines for (adde 0, 0, glue), which are useful to optimize ↵Benjamin Kramer2011-02-261-37/+0
| | | | | | | | | | | legalized code for large integer arithmetic. 1. Inform users of ADDEs with two 0 operands that it never sets carry 2. Fold other ADDs or ADDCs into the ADDE if possible It would be neat if we could do the same thing for SETCC+ADD eventually, but we can't do that in target independent code. llvm-svn: 126557
* add a missed loop deletion case.Chris Lattner2011-02-211-0/+14
| | | | llvm-svn: 126103
* add an idiom that loop idiom could theoretically catch.Chris Lattner2011-02-211-0/+10
| | | | llvm-svn: 126101
* This has been implemented.Duncan Sands2011-02-171-10/+0
| | | | llvm-svn: 125738
* add some notes on compares + binops. Remove redundant entries.Chris Lattner2011-02-171-20/+47
| | | | llvm-svn: 125702
* Add a few missed xforms from GCC PR14753Chris Lattner2011-02-161-0/+29
| | | | llvm-svn: 125681
* Remove outdated README entry.Eli Friedman2011-02-161-12/+0
| | | | llvm-svn: 125660
* Remove outdated README entry.Eli Friedman2011-02-161-16/+0
| | | | llvm-svn: 125659
* Update README entry.Eli Friedman2011-02-161-13/+6
| | | | llvm-svn: 125658
* Remove a virtual inheritance case that clang can devirtualize fully now.Anders Carlsson2011-02-061-21/+0
| | | | llvm-svn: 124989
* SimplifyCFG: Turn switches into sub+icmp+branch if possible.Benjamin Kramer2011-02-021-48/+0
| | | | | | | | | | | | | | | | | This makes the job of the later optzn passes easier, allowing the vast amount of icmp transforms to chew on it. We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting binary on i386-linux. The testcase from README.txt now compiles into decl %edi cmpl $3, %edi sbbl %eax, %eax andl $1, %eax ret llvm-svn: 124724
* add a note, progress unblocked by PR8575 being fixed.Chris Lattner2011-01-311-0/+48
| | | | llvm-svn: 124599
* Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, ↵Benjamin Kramer2011-01-301-21/+0
| | | | | | | | | | | | | | | | | | c1+c2) when c1 equals the amount of bits that are truncated off. This happens all the time when a smul is promoted to a larger type. On x86-64 we now compile "int test(int x) { return x/10; }" into movslq %edi, %rax imulq $1717986919, %rax, %rax movq %rax, %rcx shrq $63, %rcx sarq $34, %rax <- used to be "shrq $32, %rax; sarl $2, %eax" addl %ecx, %eax This fires 96 times in gcc.c on x86-64. llvm-svn: 124559
* this isn't a memset, we do convert dest[i] to one though :)Chris Lattner2011-01-241-8/+0
| | | | llvm-svn: 124097
* with recent work, we now optimize this into:Chris Lattner2011-01-241-20/+0
| | | | | | | | | | | define i32 @foo(i32 %x) nounwind readnone ssp { entry: %tobool = icmp eq i32 %x, 0 %tmp5 = select i1 %tobool, i32 2, i32 1 ret i32 %tmp5 } llvm-svn: 124091
OpenPOWER on IntegriCloud