| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
getWhenValsUnresolved().
Document PFS argument to ParseValID() and ConvertGlobalOrMetadataValIDToValue().
llvm-svn: 93108
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 93106
|
| |
|
|
| |
llvm-svn: 93105
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
more expressions to be promoted and casts eliminated.
llvm-svn: 93096
|
| |
|
|
| |
llvm-svn: 93095
|
| |
|
|
| |
llvm-svn: 93093
|
| |
|
|
| |
llvm-svn: 93092
|
| |
|
|
| |
llvm-svn: 93091
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
boolean values were distinguishable from integers. The attached patch introduces "typedef int LLVMBool;", and uses LLVMBool instead of int throughout the C API, wherever a boolean value is called for."
Patch by James Y Knight!
llvm-svn: 93079
|
| |
|
|
| |
llvm-svn: 93067
|
| |
|
|
|
|
|
|
| |
R11, and then asserting that the target was in R9. Since R9 isn't reserved for
the target anymore, and is used as an argument, this patch changes the
assertion.
llvm-svn: 93065
|
| |
|
|
|
|
| |
so that unnamed blocks are handled.
llvm-svn: 93059
|
| |
|
|
|
|
|
|
| |
behaviour first tried to replace the aliases with the global that they aliased (rather than the bitcast), causing a crash on an assert because the types didn't match. When this was fixed, it then did the same thing creating the new alias (creating an alias with a different type to its aliasee).
Linking modules containing aliases to GEPs is still not quite right. GEPs that are equivalent to bitcasts will be replaced by bitcasts, GEPs that are not will just break. Aliases to GEPs that are not equivalent to bitcasts are horribly broken anyway (it might be worth adding an assert when creating the alias to prevent these being created; they just cause problems later).
llvm-svn: 93052
|
| |
|
|
| |
llvm-svn: 93046
|
| |
|
|
|
|
| |
base is the right expression type. This fixes PR5981.
llvm-svn: 93045
|
| |
|
|
|
|
|
|
|
|
| |
really does need to be a vector type, because
TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type,
and it needs to be able to distinguish between vectors and scalars.
Also, fix some more issues with legalization of vector casts.
llvm-svn: 93043
|
| |
|
|
| |
llvm-svn: 93042
|
| |
|
|
|
|
| |
Disable copy ctor and operator= for NamedMDSymTable. Hide typedef that should be public.
llvm-svn: 93041
|
| |
|
|
| |
llvm-svn: 93039
|
| |
|
|
| |
llvm-svn: 93038
|
| |
|
|
|
|
| |
NamedMDNode record.
llvm-svn: 93037
|
| |
|
|
| |
llvm-svn: 93032
|
| |
|
|
|
|
| |
ISD::DELETED_NODE is not safe. Use a DAGUpdateListener to remove dead nodes from work list instead.
llvm-svn: 93031
|
| |
|
|
|
|
| |
results of the cmpxchg8b instructions are being thrown away when it branches back to the top of the checking loop. This means the loop always compares against the old value and this can result in a dead lock.
llvm-svn: 93028
|
| |
|
|
| |
llvm-svn: 93026
|
| |
|
|
| |
llvm-svn: 93024
|
| |
|
|
|
|
| |
simplify it now that it is only used for truncates.
llvm-svn: 93021
|
| |
|
|
| |
llvm-svn: 93020
|
| |
|
|
|
|
| |
the input is already sign extended.
llvm-svn: 93019
|
| |
|
|
|
|
|
| |
result int by 8 for the first byte. While normally harmless,
if the result is smaller than a byte, this shift is invalid.
llvm-svn: 93018
|
| |
|
|
|
|
| |
remove some trailing whitespace while there.
llvm-svn: 93008
|
| |
|
|
| |
llvm-svn: 93007
|
| |
|
|
|
|
| |
T2I_bin_ii12rs definition.
llvm-svn: 93006
|
| |
|
|
|
|
|
|
|
|
|
| |
putting relocations into the constant pool - this isn't needed
for correctness and in the rare occasion it happens would pull
us out of fast isel for the block.
If fast-isel application startup time ever becomes an issue we
can add better support for these addresses instead of bailing.
llvm-svn: 92995
|
| |
|
|
|
|
| |
replaced. Do not delete dead nodes again.
llvm-svn: 92988
|
| |
|
|
|
|
|
| |
1. CMPXCHG8B and CMPXCHG16B did not specify implicit physical register defs and uses.
2. LCMPXCHG8B is loading 64 bit memory, not 32 bit.
llvm-svn: 92985
|
| |
|
|
| |
llvm-svn: 92972
|
| |
|
|
| |
llvm-svn: 92964
|
| |
|
|
|
|
|
| |
that feeds into a zext, similar to the patch I did yesterday for sext.
There is a lot of room for extension beyond this patch.
llvm-svn: 92962
|
| |
|
|
|
|
|
|
|
|
| |
When folding a and(any_ext(load)) both the any_ext and the
load have to have only a single use.
This removes the anyext-uses.ll testcase which started failing
because it is unreduced and unclear what it is testing.
llvm-svn: 92950
|
| |
|
|
|
|
| |
time, no functionality change.
llvm-svn: 92948
|
| |
|
|
| |
llvm-svn: 92943
|
| |
|
|
| |
llvm-svn: 92938
|
| |
|
|
|
|
|
| |
add it to the constant pool for fast-isel. We already
don't add it for the normal case.
llvm-svn: 92934
|
| |
|
|
|
|
| |
not-readonly segment on darwin.
llvm-svn: 92933
|