| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
ComputeNumSignBits to SelectionDAG's ComputeNumSignBits.
llvm-svn: 51348
|
| |
|
|
| |
llvm-svn: 51345
|
| |
|
|
| |
llvm-svn: 51335
|
| |
|
|
|
|
| |
the contributed code.
llvm-svn: 51329
|
| |
|
|
|
|
| |
renaming to isnan2. Now that no test has llx ending there is no need to search for them from dg.exp too.
llvm-svn: 51328
|
| |
|
|
|
|
| |
Linux.
llvm-svn: 51327
|
| |
|
|
|
|
|
|
| |
wrong directory, this is the patch to fix it (also attached)."
Patch by 'OvermindDL1'
llvm-svn: 51323
|
| |
|
|
| |
llvm-svn: 51313
|
| |
|
|
|
|
| |
If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB.
llvm-svn: 51306
|
| |
|
|
| |
llvm-svn: 51305
|
| |
|
|
| |
llvm-svn: 51303
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(add (sext x), cst) --> (sext (add x, cst'))
(add (sext x), (sext y)) --> (sext (add int x, y))
(add double (sitofp x), fpcst) --> (sitofp (add int x, intcst))
(add double (sitofp x), (sitofp y)) --> (sitofp (add int x, y))
This generally reduces conversions. For example MiBench/telecomm-gsm
gets these simplifications:
HACK2: %tmp67.i142.i.i = sext i16 %tmp6.i141.i.i to i32 ; <i32> [#uses=1]
%tmp23.i139.i.i = sext i16 %tmp2.i138.i.i to i32 ; <i32> [#uses=1]
%tmp8.i143.i.i = add i32 %tmp67.i142.i.i, %tmp23.i139.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i121.i.i = sext i16 %tmp6.i120.i.i to i32 ; <i32> [#uses=1]
%tmp23.i118.i.i = sext i16 %tmp2.i117.i.i to i32 ; <i32> [#uses=1]
%tmp8.i122.i.i = add i32 %tmp67.i121.i.i, %tmp23.i118.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i.i190.i = sext i16 %tmp6.i.i189.i to i32 ; <i32> [#uses=1]
%tmp23.i.i187.i = sext i16 %tmp2.i.i186.i to i32 ; <i32> [#uses=1]
%tmp8.i.i191.i = add i32 %tmp67.i.i190.i, %tmp23.i.i187.i ; <i32> [#uses=3]
HACK2: %tmp67.i173.i.i.i = sext i16 %tmp6.i172.i.i.i to i32 ; <i32> [#uses=1]
%tmp23.i170.i.i.i = sext i16 %tmp2.i169.i.i.i to i32 ; <i32> [#uses=1]
%tmp8.i174.i.i.i = add i32 %tmp67.i173.i.i.i, %tmp23.i170.i.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i152.i.i.i = sext i16 %tmp6.i151.i.i.i to i32 ; <i32> [#uses=1]
%tmp23.i149.i.i.i = sext i16 %tmp2.i148.i.i.i to i32 ; <i32> [#uses=1]
%tmp8.i153.i.i.i = add i32 %tmp67.i152.i.i.i, %tmp23.i149.i.i.i ; <i32> [#uses=3]
HACK2: %tmp67.i.i.i.i = sext i16 %tmp6.i.i.i.i to i32 ; <i32> [#uses=1]
%tmp23.i.i5.i.i = sext i16 %tmp2.i.i.i.i to i32 ; <i32> [#uses=1]
%tmp8.i.i7.i.i = add i32 %tmp67.i.i.i.i, %tmp23.i.i5.i.i ; <i32> [#uses=3]
This also fixes a bug in ComputeNumSignBits handling select and
makes it more aggressive with and/or.
llvm-svn: 51302
|
| |
|
|
| |
llvm-svn: 51296
|
| |
|
|
|
|
| |
value as undef or untracked.
llvm-svn: 51295
|
| |
|
|
|
|
| |
will become first-class types.
llvm-svn: 51293
|
| |
|
|
|
|
|
|
| |
replaced is a PHI. This prevents it from inserting uses before defs
in the case that it isn't a PHI and it depends on other instructions
later in the block. This fixes the 447.dealII regression on x86-64.
llvm-svn: 51292
|
| |
|
|
|
|
| |
changed.
llvm-svn: 51291
|
| |
|
|
| |
llvm-svn: 51290
|
| |
|
|
| |
llvm-svn: 51289
|
| |
|
|
| |
llvm-svn: 51287
|
| |
|
|
| |
llvm-svn: 51280
|
| |
|
|
|
|
| |
code in SelectionDAG.
llvm-svn: 51279
|
| |
|
|
|
|
| |
$non_lazy_ptr's and $lazy_ptr's.
llvm-svn: 51277
|
| |
|
|
| |
llvm-svn: 51275
|
| |
|
|
| |
llvm-svn: 51274
|
| |
|
|
|
|
| |
produce a negative zero.
llvm-svn: 51272
|
| |
|
|
|
|
|
| |
to accurately represent the integer. This triggers 9 times in 471.omnetpp,
though 8 of those seem to be inlined from the same place.
llvm-svn: 51271
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
type and the other operand is a constant into integer comparisons.
This happens surprisingly frequently (e.g. 10 times in 471.omnetpp),
which are things like this:
%tmp8283 = sitofp i32 %tmp82 to double
%tmp1013 = fcmp ult double %tmp8283, 0.0
Clearly comparing tmp82 against i32 0 is cheaper here.
this also triggers 8 times in gobmk, including this one:
%tmp375376 = sitofp i32 %tmp375 to double
%tmp377 = fcmp ogt double %tmp375376, 8.150000e+01
which is comparing an integer against 81.5 :).
llvm-svn: 51268
|
| |
|
|
| |
llvm-svn: 51266
|
| |
|
|
| |
llvm-svn: 51264
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
intersecting bits. This triggers all over the place, for example in lencode,
with adds of stuff like:
%tmp580 = mul i32 %tmp579, 2
%tmp582 = and i32 %b8, 1
and
%tmp28 = shl i32 %abs.i, 1
%sign.0 = select i1 %tmp23, i32 1, i32 0
and
%tmp344 = shl i32 %tmp343, 2
%tmp346 = and i32 %tmp96, 3
etc.
llvm-svn: 51263
|
| |
|
|
|
|
|
|
| |
whether or not -funit-at-a-time is used (C++ uses
it, C doesn't) - it was working before only when
not doing unit-at-a-time.
llvm-svn: 51258
|
| |
|
|
|
|
| |
an i16! Cleaned up trailing whitespace while there.
llvm-svn: 51240
|
| |
|
|
| |
llvm-svn: 51239
|
| |
|
|
| |
llvm-svn: 51238
|
| |
|
|
|
|
| |
Patch by Dmitri Makarov!
llvm-svn: 51237
|
| |
|
|
| |
llvm-svn: 51236
|
| |
|
|
| |
llvm-svn: 51235
|
| |
|
|
| |
llvm-svn: 51234
|
| |
|
|
| |
llvm-svn: 51233
|
| |
|
|
| |
llvm-svn: 51232
|
| |
|
|
| |
llvm-svn: 51230
|
| |
|
|
| |
llvm-svn: 51229
|
| |
|
|
| |
llvm-svn: 51227
|
| |
|
|
| |
llvm-svn: 51226
|
| |
|
|
| |
llvm-svn: 51225
|
| |
|
|
| |
llvm-svn: 51223
|
| |
|
|
| |
llvm-svn: 51222
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"-Wshorten-64-to-32 -Werror" will cause a failure when compiling this complex
program:
#include <string>
class Path {
mutable std::string path;
public:
bool operator == (const Path &that) {
return path == that.path;
}
};
Using strcmp gets us past this annoying error.
llvm-svn: 51218
|
| |
|
|
| |
llvm-svn: 51217
|