cd81d94322a39503e4a3e87b6ee03d4fcb3465fb |
|
21-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for rebase to r212749. Includes a cherry-pick of: r212948 - fixes a small issue with atomic calls Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
dce4a407a24b04eebc6a376f8e62b41aaa7b071f |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for 3.5 rebase (r209712). Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
36b56886974eae4f9c5ebc96befd3e7bfe5de338 |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Update to LLVM 3.5a. Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
6dc5c6b8792dd599257eb78c5891ede95bbc6085 |
|
30-Sep-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Replace manual fast math flag copying with the new IRBuilder RAII helper. Defines away the issue where cast<Instruction> would fail because constant folding happened. Also slightly cleaner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
6ef4dd8cb6852fd0036244a07dc944dc8fb8933c |
|
30-Sep-2013 |
Joey Gouly <joey.gouly@arm.com> |
Fix a bug in InstCombine where it attempted to cast a Value* to an Instruction* when it was actually a Constant*. There are quite a few other casts to Instruction that might have the same problem, but this is the only one I have a test case for. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
b1ccfb3a548e122e282cd62c534c4d47f5310bf6 |
|
19-Sep-2013 |
Shuxin Yang <shuxin.llvm@gmail.com> |
[Fast-math] Disable "(C1/X)*C2 => (C1*C2)/X" if C1/X has multiple uses. If "C1/X" were having multiple uses, the only benefit of this transformation is to potentially shorten critical path. But it is at the cost of instroducing additional div. The additional div may or may not incur cost depending on how div is implemented. If it is implemented using Newton–Raphson iteration, it dosen't seem to incur any cost (FIXME). However, if the div blocks the entire pipeline, that sounds to be pretty expensive. Let CodeGen to take care this transformation. This patch sees 6% on a benchmark. rdar://15032743 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191037 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
3b6bb79578bcc09b6a588af488da4f6e6d958f01 |
|
26-Jul-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Correct case of m_UIToFp to m_UIToFP to match instruction name, add m_SIToFP for consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a98ce503b958821fd2530aad585c21e730695a9e |
|
20-Jul-2013 |
Stephen Lin <stephenwlin@gmail.com> |
InstCombine: call FoldOpIntoSelect for all floating binops, not just fmul git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186759 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
54bf58a0325993a423dbad337ff709080157faf2 |
|
17-Jul-2013 |
Stephen Lin <stephenwlin@gmail.com> |
Restore r181216, which was partially reverted in r182499. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186533 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
75681bb302e524460edb7c8c5c6e98792b5027a2 |
|
13-Jul-2013 |
Nick Lewycky <nicholas@mxc.ca> |
Add a microoptimization for urem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186235 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
e7006bb04bd881478fe24d6fbb3051ba3f63d746 |
|
04-Jul-2013 |
David Majnemer <david.majnemer@gmail.com> |
InstCombine: Reimplementation of visitUDivOperand This transform was originally added in r185257 but later removed in r185415. The original transform would create instructions speculatively and then discard them if the speculation was proved incorrect. This has been replaced with a scheme that splits the transform into two parts: preflight and fold. While we preflight, we build up fold actions that inform the folding stage on how to act. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
b19dd2bcaf219a3b5f144815c40b3f1b11a3d35d |
|
02-Jul-2013 |
Hal Finkel <hfinkel@anl.gov> |
Revert r185257 (InstCombine: Be more agressive optimizing 'udiv' instrs with 'select' denoms) I'm reverting this commit because: 1. As discussed during review, it needs to be rewritten (to avoid creating and then deleting instructions). 2. This is causing optimizer crashes. Specifically, I'm seeing things like this: While deleting: i1 % Use still stuck around after Def is destroyed: <badref> = select i1 <badref>, i32 0, i32 1 opt: /src/llvm-trunk/lib/IR/Value.cpp:79: virtual llvm::Value::~Value(): Assertion `use_empty() && "Uses remain when a value is destroyed!"' failed. I'd guess that these will go away once we're no longer creating/deleting instructions here, but just in case, I'm adding a regression test. Because the code is bring rewritten, I've just XFAIL'd the original regression test. Original commit message: InstCombine: Be more agressive optimizing 'udiv' instrs with 'select' denoms Real world code sometimes has the denominator of a 'udiv' be a 'select'. LLVM can handle such cases but only when the 'select' operands are symmetric in structure (both select operands are a constant power of two or a left shift, etc.). This falls apart if we are dealt a 'udiv' where the code is not symetric or if the select operands lead us to more select instructions. Instead, we should treat the LHS and each select operand as a distinct divide operation and try to optimize them independently. If we can to simplify each operation, then we can replace the 'udiv' with, say, a 'lshr' that has a new select with a bunch of new operands for the select. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185415 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
f723e5d1c290a00378d3fc10c7ef502692e0710e |
|
29-Jun-2013 |
David Majnemer <david.majnemer@gmail.com> |
InstCombine: Be more agressive optimizing 'udiv' instrs with 'select' denoms Real world code sometimes has the denominator of a 'udiv' be a 'select'. LLVM can handle such cases but only when the 'select' operands are symmetric in structure (both select operands are a constant power of two or a left shift, etc.). This falls apart if we are dealt a 'udiv' where the code is not symetric or if the select operands lead us to more select instructions. Instead, we should treat the LHS and each select operand as a distinct divide operation and try to optimize them independently. If we can to simplify each operation, then we can replace the 'udiv' with, say, a 'lshr' that has a new select with a bunch of new operands for the select. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c3cfe53b661533401017e39d22022656fc7c74c5 |
|
27-Jun-2013 |
Michael Gottesman <mgottesman@apple.com> |
In InstCombine{AddSub,MulDivRem} convert APFloat.isFiniteNonZero() && !APFloat.isDenormal => APFloat.isNormal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185037 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
07969dc8aed62fcd5c5760b2ec331275479f4a80 |
|
19-Jun-2013 |
Michael Gottesman <mgottesman@apple.com> |
[APFloat] Converted all references to APFloat::isNormal => APFloat::isFiniteNonZero. Turns out all the references were in llvm and not in clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
6a72c84b161c176da91ddae1bd97bae7aab6d968 |
|
07-Jun-2013 |
Jakub Staszak <kubastaszak@gmail.com> |
Simplify code. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
4f3d7eea048c5d665436b8bd7a59739bcba5ec0b |
|
31-May-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Simplify multiplications by vectors whose elements are powers of 2. Patch by Andrea Di Biagio. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183005 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
5e6cabd163c9c207df3778f3508b0de445578057 |
|
22-May-2013 |
Jean-Luc Duprat <jduprat@apple.com> |
This is an update to a previous commit (r181216). The earlier change list introduced the following inst combines: B * (uitofp i1 C) —> select C, B, 0 A * (1 - uitofp i1 C) —> select C, 0, A select C, 0, B + select C, A, 0 —> select C, A, B Together these 3 changes would simplify : A * (1 - uitofp i1 C) + B * uitofp i1 C down to : select C, B, A In practice we found that the first two substitutions can have a negative effect on performance, because they reduce opportunities to use FMA contractions; between the two options FMAs are often the better choice. This change list amends the previous one to enable just these inst combines: select C, B, 0 + select C, 0, A —> select C, B, A A * (1 - uitofp i1 C) + B * uitofp i1 C —> select C, B, A git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182499 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
da2ed458b4e7066fc414c403173b882ccc2c8833 |
|
15-May-2013 |
Sylvestre Ledru <sylvestre@debian.org> |
Fix two typo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181848 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
fa49d7d6e4384381e4307a0d2495e6e5b15821e3 |
|
12-May-2013 |
David Majnemer <david.majnemer@gmail.com> |
InstCombine: Flip the order of two urem transforms There are two transforms in visitUrem that conflict with each other. *) One, if a divisor is a power of two, subtracts one from the divisor and turns it into a bitwise-and. *) The other unwraps both operands if they are surrounded by zext instructions. Flipping the order allows the subtraction to go beneath the sign extension. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a8ccefc0a31c868c79cfc028e2a957269de5aba6 |
|
11-May-2013 |
David Majnemer <david.majnemer@gmail.com> |
InstCombine: Turn urem to bitwise-and more often Use isKnownToBeAPowerOfTwo in visitUrem so that we may more aggressively fold away urem instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
51dab6e3945a6d06a713869967ced3a8f9fb6294 |
|
10-May-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Verify the type before transforming uitofp into select. PR15952. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181586 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c5cf6e536598a3b1e30fce616b771d66a071a54c |
|
06-May-2013 |
Jean-Luc Duprat <jduprat@apple.com> |
Provide InstCombines for the following 3 cases: A * (1 - (uitofp i1 C)) -> select C, 0, A B * (uitofp i1 C) -> select C, B, 0 select C, 0, A + select C, B, 0 -> select C, B, A These come up in code that has been hand-optimized from a select to a linear blend, on platforms where that may have mattered. We want to undo such changes with the following transform: A*(1 - uitofp i1 C) + B*(uitofp i1 C) -> select C, A, B git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
03fceff6f69a0261a767aab8e62de8aa9301b86c |
|
05-Apr-2013 |
Jim Grosbach <grosbach@apple.com> |
Tidy up a bit. No functional change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178915 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c5a4c25b8780434a00968ed93634974a0b796a06 |
|
28-Feb-2013 |
Quentin Colombet <qcolombet@apple.com> |
Fix a bug in instcombine for fmul in fast math mode. The instcombine recognized pattern looks like: a = b * c d = a +/- Cst or a = b * c d = Cst +/- a When creating the new operands for fadd or fsub instruction following the related fmul, the first operand was created with the second original operand (M0 was created with C1) and the second with the first (M1 with Opnd0). The fix consists in creating the new operands with the appropriate original operand, i.e., M0 with Opnd0 and M1 with C1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a1444219b271cab6fbfe340c1328b0ab10d8f7b6 |
|
15-Jan-2013 |
Shuxin Yang <shuxin.llvm@gmail.com> |
1. Hoist minus sign as high as possible in an attempt to reveal some optimization opportunities (in the enclosing supper-expressions). rule 1. (-0.0 - X ) * Y => -0.0 - (X * Y) if expression "-0.0 - X" has only one reference. rule 2. (0.0 - X ) * Y => -0.0 - (X * Y) if expression "0.0 - X" has only one reference, and the instruction is marked "noSignedZero". 2. Eliminate negation (The compiler was already able to handle these opt if the 0.0s are replaced with -0.0.) rule 3: (0.0 - X) * (0.0 - Y) => X * Y rule 4: (0.0 - X) * C => X * -C if the expr is flagged "noSignedZero". 3. Rule 5: (X*Y) * X => (X*X) * Y if X!=Y and the expression is flagged with "UnsafeAlgebra". The purpose of this transformation is two-fold: a) to form a power expression (of X). b) potentially shorten the critical path: After transformation, the latency of the instruction Y is amortized by the expression of X*X, and therefore Y is in a "less critical" position compared to what it was before the transformation. 4. Remove the InstCombine code about simplifiying "X * select". The reasons are following: a) The "select" is somewhat architecture-dependent, therefore the higher level optimizers are not able to precisely predict if the simplification really yields any performance improvement or not. b) The "select" operator is bit complicate, and tends to obscure optimization opportunities. It is btter to keep it as low as possible in expr tree, and let CodeGen to tackle the optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172551 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
7d72cf892ec745d916af34cf9e68703010b4ded8 |
|
14-Jan-2013 |
Shuxin Yang <shuxin.llvm@gmail.com> |
This change is to implement following rules under the condition C_A and/or C_R --------------------------------------------------------------------------- C_A: reassociation is allowed C_R: reciprocal of a constant C is appropriate, which means - 1/C is exact, or - reciprocal is allowed and 1/C is neither a special value nor a denormal. ----------------------------------------------------------------------------- rule1: (X/C1) / C2 => X / (C2*C1) (if C_A) => X * (1/(C2*C1)) (if C_A && C_R) rule 2: X*C1 / C2 => X * (C1/C2) if C_A rule 3: (X/Y)/Z = > X/(Y*Z) (if C_A && at least one of Y and Z is symbolic value) rule 4: Z/(X/Y) = > (Z*Y)/X (similar to rule3) rule 5: C1/(X*C2) => (C1/C2) / X (if C_A) rule 6: C1/(X/C2) => (C1*C2) / X (if C_A) rule 7: C1/(C2/X) => (C1/C2) * X (if C_A) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
f279731b7629ff1add3dbc91a8a63720c9064230 |
|
07-Jan-2013 |
Shuxin Yang <shuxin.llvm@gmail.com> |
Cosmetical changne in order to conform to coding std. Thank Eric Christopher for figuring out these problems! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
d3ae2866d105f6da6375544eb41aea0dad75a9f2 |
|
07-Jan-2013 |
Shuxin Yang <shuxin.llvm@gmail.com> |
This change is to implement following rules: o. X/C1 * C2 => X * (C2/C1) (if C2/C1 is neither special FP nor denormal) o. X/C1 * C2 -> X/(C1/C2) (if C2/C1 is either specical FP or denormal, but C1/C2 is a normal Fp) Let MDC denote multiplication or dividion with one & only one operand being a constant o. (MDC ± C1) * C2 => (MDC * C2) ± (C1 * C2) (so long as the constant-folding doesn't yield any denormal or special value) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171793 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
0b8c9a80f20772c3793201ab5b251d3520b9cea3 |
|
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a5ed031fbcec67081d4857c9000f0180840fe2d5 |
|
14-Dec-2012 |
Shuxin Yang <shuxin.llvm@gmail.com> |
rdar://12753946 Implement rule : "x * (select cond 1.0, 0.0) -> select cond x, 0.0" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
dbaa2376f7b3c027e895ff4bee3ae08351f3ea88 |
|
13-Dec-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Rename isPowerOfTwo to isKnownToBeAPowerOfTwo. In a previous thread it was pointed out that isPowerOfTwo is not a very precise name since it can return false for powers of two if it is unable to show that they are powers of two. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
b09c146b116359616f6cbd4c8b3328607e00ff42 |
|
12-Dec-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
The TargetData is not used for the isPowerOfTwo determination. It has never been used in the first place. It simply was passed to the function and to the recursive invocations. Simply drop the parameter and update the callers for the new signature. Patch by Saleem Abdulrasool! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169988 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c244f381768e2e6ab9daa807adbee18de4756a07 |
|
12-Dec-2012 |
Michael Ilseman <milseman@apple.com> |
Remove redunant optimizations from InstCombine, instead call the appropriate functions from SimplifyInstruction git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169941 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f |
|
03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib. Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
ef2ef3e246aa7d0e048af2a1cf39189714b3ba0c |
|
30-Nov-2012 |
Pedro Artigas <partigas@apple.com> |
reversed the logic of the log2 detection routine to reduce the number of nested ifs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169049 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c2a08d28eb1199d67dff5b66061cf7f6a25d2527 |
|
30-Nov-2012 |
Pedro Artigas <partigas@apple.com> |
Addresses many style issues with prior checkin (r169025) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
84030dcb3f532f66b13d54da7bdef9621527c5c5 |
|
30-Nov-2012 |
Pedro Artigas <partigas@apple.com> |
Add fast math inst combine X*log2(Y*0.5)-->X*log2(Y)-X reviewed by Michael Ilseman <milseman@apple.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169025 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
3574eca1b02600bac4e625297f4ecf745f4c4f32 |
|
08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
94c22716d60ff5edf6a98a3c67e0faa001be1142 |
|
27-Sep-2012 |
Sylvestre Ledru <sylvestre@debian.org> |
Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
7e2c793a2b5c746344652b6579e958ee42fafdcc |
|
27-Sep-2012 |
Sylvestre Ledru <sylvestre@debian.org> |
Fix a typo 'iff' => 'if' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164767 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
e5bd3cf0006b7f5ec79533a827f5645197d75d2c |
|
21-Sep-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Make sure we use the pre-zext type when creating a constant of a value that is zext'd. Fixes PR13250. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164377 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c81fe9cab545a93a61c059b1c2813f622aef43ae |
|
30-Aug-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Fix comment to reflect the code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
639570c3117aaabb0c97b34a9bf05d09f8903ef4 |
|
30-Aug-2012 |
Nadav Rotem <nrotem@apple.com> |
It is illegal to transform (sdiv (ashr X c1) c2) -> (sdiv x (2^c1 * c2)), because C always rounds towards zero. Thanks Dirk and Ben. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
37dca6331d6bfadfb80b3c68a1cabd6bdf1a13be |
|
28-Aug-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Defensively avoid undefined shifts by limiting the amount to the bit width. No test case, undefined shifts get folded early, but can occur when other transforms generate a constant. Thanks to Duncan for bringing this up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
aac7c650a6cac09d42c5fda8d3761bc9c871ff03 |
|
28-Aug-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Guard the transform introduced in r162743 against large ints and non-const shifts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a694e2a6910a33596ca706e2c6fc713f02b64c50 |
|
28-Aug-2012 |
Nadav Rotem <nrotem@apple.com> |
Make sure that we don't call getZExtValue on values > 64 bits. Thanks Benjamin for noticing this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162749 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
9753f0b9b4ab33919c5010acb6a7b2dc1e875aff |
|
28-Aug-2012 |
Nadav Rotem <nrotem@apple.com> |
Teach InstCombine to canonicalize [SU]div+[AL]shl patterns. For example: %1 = lshr i32 %x, 2 %2 = udiv i32 %1, 100 rdar://12182093 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
2a5422b1a6955977d05af48222c86c77c7549484 |
|
22-Jun-2012 |
Evan Cheng <evan.cheng@apple.com> |
Look pass zext to strength reduce an udiv. Patch by David Majnemer. rdar://11721329 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
7302d80490feabfc8a01bee0fa698aab55169544 |
|
06-Feb-2012 |
Chris Lattner <sabre@nondot.org> |
Remove some dead code and tidy things up now that vectors use ConstantDataVector instead of always using ConstantVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a78fa8cc2dd6d2ffe5e4fe605f38aae7b3d2fb7a |
|
27-Jan-2012 |
Chris Lattner <sabre@nondot.org> |
continue making the world safe for ConstantDataVector. At this point, we should (theoretically optimize and codegen ConstantDataVector as well as ConstantVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149116 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
4ca829e89567f002fc74eb0e3e532a7c7662e031 |
|
25-Jan-2012 |
Chris Lattner <sabre@nondot.org> |
use ConstantVector::getSplat in a few places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148929 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a29fc806fe02cea76f7896b7e344bb919dd7ac25 |
|
08-Nov-2011 |
Pete Cooper <peter_cooper@apple.com> |
InstCombine now optimizes vector udiv by power of 2 to shifts Fixes r8429 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144036 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a9390a4d5f5d568059a80970d22194b165d097a7 |
|
27-Sep-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Stop emitting instructions with the name "tmp" they eat up memory and have to be uniqued, without any benefit. If someone prefers %tmp42 to %42, run instnamer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e |
|
18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
land David Blaikie's patch to de-constify Type, with a few tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
c73b24db5f6226ed44ebc44ce1c25bb357206623 |
|
15-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
start using the new helper methods a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135251 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
f1002828fdaffa4e005a81f269c77fe72951f39f |
|
01-Jun-2011 |
Stuart Hastings <stuart@apple.com> |
Reapply 132348 with fixes. rdar://problem/6501862 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
3200c4b53ca742bd0103454250ca89fec2776211 |
|
31-May-2011 |
Stuart Hastings <stuart@apple.com> |
Revert to pacify a buildbot. rdar://problem/6501862 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132351 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
df48e84b5bf0967c1fc397912c109f29475c791b |
|
31-May-2011 |
Stuart Hastings <stuart@apple.com> |
Followup to 132316; accept arbitrary constants, add with a constant, sub with a non-constant. Fix comments, enlarge test case. rdar://problem/6501862 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
acbf107d9b9ffeddbcc3d015107c6faff439ee9b |
|
30-May-2011 |
Stuart Hastings <stuart@apple.com> |
(1 - X) * (-2) -> (x - 1) * 2, for all positive nonzero powers of 2 rdar://problem/6501862 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132316 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
613f1a3994ef6f009c93264f6708830249130896 |
|
23-May-2011 |
Chris Lattner <sabre@nondot.org> |
rearrange two transforms, since one subsumes the other. Make the shift-exactness xform recurse. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
05cd88656135255b545d24adb51c2ba1b5c8b99e |
|
23-May-2011 |
Chris Lattner <sabre@nondot.org> |
Transform any logical shift of a power of two into an exact/NUW shift when in a known-non-zero context. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
6083bb935373020af240bdf8fbec1cdcf360303f |
|
23-May-2011 |
Chris Lattner <sabre@nondot.org> |
use the valuetracking isPowerOfTwo function, which is more powerful than checking for a constant directly. Thanks to Duncan for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
6c9b8d3d411b0ee65263dc41d2b953fe118cf31e |
|
22-May-2011 |
Chris Lattner <sabre@nondot.org> |
add some random notes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
1add46ddfa38f23669cb02de342fdb59a8709245 |
|
22-May-2011 |
Chris Lattner <sabre@nondot.org> |
Carve out a place in instcombine to put transformations which work knowing that their result is non-zero. Implement an example optimization (PR9814), which allows us to transform: A / ((1 << B) >>u 2) into: A >>u (B-2) which we compile into: _divu3: ## @divu3 leal -2(%rsi), %ecx shrl %cl, %edi movl %edi, %eax ret instead of: _divu3: ## @divu3 movb %sil, %cl movl $1, %esi shll %cl, %esi shrl $2, %esi movl %edi, %eax xorl %edx, %edx divl %esi, %eax ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
00676a6df1116f47a015de589f911d2b5b7f4117 |
|
02-May-2011 |
Duncan Sands <baldrick@free.fr> |
Remove unused variable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
f24ed77d2416b66178d8ff1d807858dfab37ca18 |
|
02-May-2011 |
Duncan Sands <baldrick@free.fr> |
Move some rem transforms out of instcombine and into instsimplify. This automagically provides a transform noticed by my super-optimizer as occurring quite often: "rem x, (select cond, x, 1)" -> 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130694 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
7d6eb5a018ef4352730d63dc202cfaf013f489fe |
|
30-Apr-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Turn (zext A) udiv (zext B) into (zext (A udiv B)). Same for urem or constant B. This obviously helps a lot if the division would be turned into a libcall (think i64 udiv on i386), but div is also one of the few remaining instructions on modern CPUs that become more expensive when the bitwidth gets bigger. This also helps register pressure on i386 when dividing chars, divb needs two 8-bit parts of a 16 bit register as input where divl uses two registers. int foo(unsigned char a) { return a/10; } int bar(unsigned char a, unsigned char b) { return a/b; } compiles into (x86_64) _foo: imull $205, %edi, %eax shrl $11, %eax ret _bar: movzbl %dil, %eax divb %sil, %al movzbl %al, %eax ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130615 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
23b02cd0315625d9d586118abcc972053298d50b |
|
30-Apr-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Use SimplifyDemandedBits on div instructions. This folds away silly stuff like (a&255)/1000 -> 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130614 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
546739656ec9469499d3866d87dca6fdbcf2eee0 |
|
30-Mar-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: If the divisor of an fdiv has an exact inverse, turn it into an fmul. Fixes PR9587. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128546 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
7a6aa1a3919af8ece92702c36dc552d81be9151a |
|
10-Feb-2011 |
Chris Lattner <sabre@nondot.org> |
Enhance a bunch of transformations in instcombine to start generating exact/nsw/nuw shifts and have instcombine infer them when it can prove that the relevant properties are true for a given shift without them. Also, a variety of refactoring to use the new patternmatch logic thrown in for good luck. I believe that this takes care of a bunch of related code quality issues attached to PR8862. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125267 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
35bda8914c0d1c02a6f90f42e7810c83150737e1 |
|
06-Feb-2011 |
Chris Lattner <sabre@nondot.org> |
enhance vmcore to know that udiv's can be exact, and add a trivial instcombine xform to exercise this. Nothing forms exact udivs yet though. This is progress on PR8862 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
31726c154dafa9fef08b1bcac9822c2a4618ec19 |
|
29-Jan-2011 |
Frits van Bommel <fvbommel@gmail.com> |
Call SimplifyFDivInst() in InstCombiner::visitFDiv(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124535 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
1fca2c32cc99197215d3fd32a4ad05214c74edd1 |
|
29-Jan-2011 |
Frits van Bommel <fvbommel@gmail.com> |
Move InstCombine's knowledge of fdiv to SimplifyInstruction(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124534 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
593faa53fa6d89841e601cc4571d143a6a05f0b4 |
|
28-Jan-2011 |
Duncan Sands <baldrick@free.fr> |
My auto-simplifier noticed that ((X/Y)*Y)/Y occurs several times in SPEC benchmarks, and that it can be simplified to X/Y. (In general you can only simplify (Z*Y)/Y to Z if the multiplication did not overflow; if Z has the form "X/Y" then this is the case). This patch implements that transform and moves some Div logic out of instcombine and into InstructionSimplify. Unfortunately instcombine gets in the way somewhat, since it likes to change (X/Y)*Y into X-(X rem Y), so I had to teach instcombine about this too. Finally, thanks to the NSW/NUW flags, sometimes we know directly that "Z*Y" does not overflow, because the flag says so, so I added that logic too. This eliminates a bunch of divisions and subtractions in 447.dealII, and has good effects on some other benchmarks too. It seems to have quite an effect on tramp3d-v4 but it's hard to say if it's good or bad because inlining decisions changed, resulting in massive changes all over. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
37bf92b5238434b00fde79347ba5336e7554e562 |
|
22-Dec-2010 |
Duncan Sands <baldrick@free.fr> |
Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C) if both A op B and A op C simplify. This fires fairly often but doesn't make that much difference. On gcc-as-one-file it removes two "and"s and turns one branch into a select. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
82fdab335881cd90f8f7ab3ad1f1ca0bb3ee886a |
|
21-Dec-2010 |
Duncan Sands <baldrick@free.fr> |
Pull a few more simplifications out of instcombine (there are still plenty left though!), in particular for multiplication. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122330 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
40f8f6264d5af2c38e797e0dc59827cd231e8ff7 |
|
07-Dec-2010 |
Jay Foad <jay.foad@gmail.com> |
PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method trunc(), to be const and to return a new value instead of modifying the object in place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121120 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
1951a5b721187ab85db0b2db55ae39eec3733c20 |
|
17-Nov-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
InstCombine: Add a missing irem identity (X % X -> 0). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
096aa79276b8527a3cbbb3691e40e729dea09523 |
|
13-Nov-2010 |
Duncan Sands <baldrick@free.fr> |
Generalize the reassociation transform in SimplifyCommutative (now renamed to SimplifyAssociativeOrCommutative) "(A op C1) op C2" -> "A op (C1 op C2)", which previously was only done if C1 and C2 were constants, to occur whenever "C1 op C2" simplifies (a la InstructionSimplify). Since the simplifying operand combination can no longer be assumed to be the right-hand terms, consider all of the possible permutations. When compiling "gcc as one big file", transform 2 (i.e. using right-hand operands) fires about 4000 times but it has to be said that most of the time the simplifying operands are both constants. Transforms 3, 4 and 5 each fired once. Transform 6, which is an existing transform that I didn't change, never fired. With this change, the testcase is now optimized perfectly with one run of instcombine (previously it required instcombine + reassociate + instcombine, and it may just have been luck that this worked). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
a9445e11c553855a6caacbbbf77a9b993ecc651e |
|
02-Mar-2010 |
Dan Gohman <gohman@apple.com> |
Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul, respectively. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
1df9859c40492511b8aa4321eb76496005d3b75b |
|
16-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
There are two ways of checking for a given type, for example isa<PointerType>(T) and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
b0bc6c361da9009e8414efde317d9bbff755f6c0 |
|
15-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
Uniformize the names of type predicates: rather than having isFloatTy and isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
5b39620e2da1451c5db50559085ae4b86a152936 |
|
17-Jan-2010 |
Owen Anderson <resistor@mac.com> |
Fix comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
11acaa374cdcebb161bf0de5f244265d78a749c1 |
|
05-Jan-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Convert a ton of simple integer type equality tests to the new predicate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92760 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|
d12c27ce0079ba14e73e0c422a30dac68c631a23 |
|
05-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
split mul/div/rem instructions out to their own file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
|