Nick Lewycky
5d6ede524a
Quiet compiler warning. The only reason the function is marked virtual
...
is so that it can be called from inside a debugger.
llvm-svn: 33067
2007-01-11 02:38:21 +00:00
Nick Lewycky
2fc338f923
New predicate simplifier!
...
Please do not enable, there is still some known miscompile problem.
llvm-svn: 33066
2007-01-11 02:32:38 +00:00
Jeff Cohen
223004cd12
Unbreak VC++ build.
...
llvm-svn: 33021
2007-01-08 20:17:17 +00:00
Reid Spencer
8f166b0ef3
Comparison of primitive type sizes should now be done in bits, not bytes.
...
This patch converts getPrimitiveSize to getPrimitiveSizeInBits where it is
appropriate to do so (comparison of integer primitive types).
llvm-svn: 33012
2007-01-08 16:32:00 +00:00
Reid Spencer
bf96e02a54
For PR1097:
...
Enable complex addressing modes on 64-bit platforms involving two induction
variables by keeping a size and scale in 64-bits not 32.
Patch by Dan Gohman.
llvm-svn: 33011
2007-01-08 16:17:51 +00:00
Chris Lattner
fbc524fe87
relax some types
...
llvm-svn: 32980
2007-01-07 06:58:05 +00:00
Chris Lattner
0816559b13
add -debug output for -indvars.
...
llvm-svn: 32971
2007-01-07 01:14:12 +00:00
Chris Lattner
7051d758de
Fix regressions in InstCombine/call-cast-target.ll and InstCombine/2003-11-13-ConstExprCastCall.ll
...
llvm-svn: 32959
2007-01-06 19:53:32 +00:00
Chris Lattner
c343a99786
this final call to canLosslesslyBitCastTo is dead, because ValueRequiresCast
...
is only called on integers.
llvm-svn: 32949
2007-01-06 02:11:56 +00:00
Chris Lattner
400f959a0c
simplify some more code now that there are not multiple different integer
...
types of the same size
llvm-svn: 32948
2007-01-06 02:09:32 +00:00
Chris Lattner
64d87b0215
eliminate some uses of canLosslesslyBitCastTo, this actually makes the code stronger, by nuking
...
relational pointer comparisons with casts.
llvm-svn: 32947
2007-01-06 01:45:59 +00:00
Chris Lattner
3fe98ae10a
no need to worry about int vs uint any more.
...
llvm-svn: 32946
2007-01-06 01:37:35 +00:00
Chris Lattner
d7b6ea166d
Implement InstCombine/vec_shuffle.ll:%test7, simplifying shuffles with
...
undef operands.
llvm-svn: 32899
2007-01-05 07:36:08 +00:00
Chris Lattner
17c7c030c2
fold things like a^b != c^a -> b != c. This implements InstCombine/xor.ll:test27
...
llvm-svn: 32893
2007-01-05 03:04:57 +00:00
Chris Lattner
23eb8ec78b
Compile X + ~X to -1. This implements Instcombine/add.ll:test34
...
llvm-svn: 32890
2007-01-05 02:17:46 +00:00
Reid Spencer
6ff3e73db6
Death to useless bitcast instructions!
...
llvm-svn: 32866
2007-01-04 05:23:51 +00:00
Chris Lattner
806adafd95
Enable a couple xforms for packed vectors (undef | v) -> -1 for packed.
...
llvm-svn: 32858
2007-01-04 02:12:40 +00:00
Jim Laskey
c4ba9c161b
Vectors are not supported by ConstantInt::getAllOnesValue.
...
llvm-svn: 32827
2007-01-03 00:11:03 +00:00
Reid Spencer
e8a74ee5ea
Fix a typo.
...
llvm-svn: 32803
2006-12-31 22:26:06 +00:00
Reid Spencer
c635f47d9a
For PR950:
...
This patch replaces signed integer types with signless ones:
1. [US]Byte -> Int8
2. [U]Short -> Int16
3. [U]Int -> Int32
4. [U]Long -> Int64.
5. Removal of isSigned, isUnsigned, getSignedVersion, getUnsignedVersion
and other methods related to signedness. In a few places this warranted
identifying the signedness information from other sources.
llvm-svn: 32785
2006-12-31 05:48:39 +00:00
Reid Spencer
193df25eb9
For PR1066:
...
Fix this by ensuring that a bitcast is inserted to do sign switching. This
is only temporarily needed as the merging of signed and unsigned is next
on the SignlessTypes plate.
llvm-svn: 32757
2006-12-24 00:40:59 +00:00
Reid Spencer
910f23f7d7
Shut up some compilers that can't accurately analyze variable usage
...
correctly and emit "may be used uninitialized" warnings.
llvm-svn: 32756
2006-12-23 19:17:57 +00:00
Reid Spencer
43c77d53ff
For PR1065:
...
Don't allow CmpInst instances to be processed in FoldSelectOpOp because
you can't easily swap their operands.
llvm-svn: 32753
2006-12-23 18:58:04 +00:00
Reid Spencer
266e42b312
For PR950:
...
This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.
llvm-svn: 32751
2006-12-23 06:05:41 +00:00
Chris Lattner
f171af97d5
add a simple fast-path for dead allocas
...
llvm-svn: 32750
2006-12-22 23:14:42 +00:00
Chris Lattner
1847f6ddbd
handle undef values much more carefully: generalize the resolveundefbranches
...
code to handle instructions as well, so that we properly fold things like
X & undef -> 0.
This fixes Transforms/SCCP/2006-12-19-UndefBug.ll
llvm-svn: 32715
2006-12-20 06:21:33 +00:00
Chris Lattner
0e5255bdc6
Convert more Statistic's over to STATISTIC
...
llvm-svn: 32692
2006-12-19 21:49:03 +00:00
Chris Lattner
79a42ac941
Switch over Transforms/Scalar to use the STATISTIC macro. For each statistic
...
converted, we lose a static initializer. This also allows GCC to emit warnings
about unused statistics.
llvm-svn: 32690
2006-12-19 21:40:18 +00:00
Reid Spencer
668d90f289
Convert the last uses of CastInst::createInferredCast to a normal cast
...
creation. These changes are still temporary but at least this pushes
knowledge of signedness out closer to where it can be determined properly
and allows signedness to be removed from VMCore.
llvm-svn: 32654
2006-12-18 08:47:13 +00:00
Chris Lattner
8f7b775bf4
re-enable a temporarily-reverted patch
...
llvm-svn: 32595
2006-12-15 07:32:38 +00:00
Reid Spencer
74a528b427
Fix a bug in EvaluateInDifferentType. The type of operand should not be
...
used to determine whether a ZExt or SExt cast is performed. Instead, pass
an "isSigned" bool to the function and determine its value from the opcode
of the cast involved.
Also, clean up some cruft from previous patches.
llvm-svn: 32548
2006-12-13 18:21:21 +00:00
Reid Spencer
2a499b0b6c
Implement review feedback. Most of this has to do with removing unnecessary
...
cast instructions. A few are bug fixes.
llvm-svn: 32544
2006-12-13 17:19:09 +00:00
Reid Spencer
612683b0d7
For mul transforms, when checking for a cast from bool as either operand,
...
make sure to also check that it is a zext from bool, not any other cast
operation type.
llvm-svn: 32539
2006-12-13 08:33:33 +00:00
Reid Spencer
799b5bfc71
Fix and/or/xor (cast A), (cast B) --> cast (and/or/xor A, B)
...
The cast patch introduced the possibility that the wrong cast opcode
could be used and that this transform could trigger on different kinds
of cast operations. This patch rectifies that.
llvm-svn: 32538
2006-12-13 08:27:15 +00:00
Reid Spencer
df1f19a8ef
Change the interface to SCEVExpander::InsertCastOfTo to take a cast opcode
...
so the decision of which opcode to use is pushed upward to the caller.
Adjust the callers to pass the expected opcode.
llvm-svn: 32535
2006-12-13 08:06:42 +00:00
Chris Lattner
7c1dff99dc
revert my recent int<->fp and vector union promotion changes, they expose
...
obscure bugs affecting the X86 code generator. I will reenable this
when fixed.
llvm-svn: 32524
2006-12-13 02:26:45 +00:00
Reid Spencer
bfe26ffcfc
Replace CastInst::createInferredCast calls with more accurate cast
...
creation calls.
llvm-svn: 32521
2006-12-13 00:50:17 +00:00
Reid Spencer
bb65ebf9a1
Replace inferred getCast(V,Ty) calls with more strict variants.
...
Rename getZeroExtend and getSignExtend to getZExt and getSExt to match
the the casting mnemonics in the rest of LLVM.
llvm-svn: 32514
2006-12-12 23:36:14 +00:00
Chris Lattner
2dc148e89d
this can be trunc or bitcast, per line 3092.
...
llvm-svn: 32487
2006-12-12 19:11:20 +00:00
Chris Lattner
ade1f6894d
Fix regression on 400.perlbench last night.
...
llvm-svn: 32486
2006-12-12 18:41:03 +00:00
Reid Spencer
13bc5d7b57
Fix numerous inferred casts.
...
llvm-svn: 32479
2006-12-12 09:18:51 +00:00
Reid Spencer
b341b0861d
Change inferred getCast into specific getCast. Passes all tests.
...
llvm-svn: 32469
2006-12-12 05:05:00 +00:00
Chris Lattner
6e5fe376ec
Patch for PR1045 and Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll
...
llvm-svn: 32468
2006-12-12 04:24:41 +00:00
Chris Lattner
e810140c4b
trunc to integer, not to FP.
...
llvm-svn: 32426
2006-12-11 01:17:00 +00:00
Chris Lattner
23f4b68f7e
implement promotion of unions containing two packed types of the same width.
...
This implements Transforms/ScalarRepl/union-packed.ll
llvm-svn: 32422
2006-12-11 00:35:08 +00:00
Chris Lattner
216c3028e6
* Eliminate calls to CastInst::createInferredCast.
...
* Add support for promoting unions with fp values in them. This produces
our new int<->fp bitcast instructions, implementing
Transforms/ScalarRepl/union-fp-int.ll
As an example, this allows us to compile this:
union intfloat { int i; float f; };
float invsqrt(const float arg_x) {
union intfloat x = { .f = arg_x };
const float xhalf = arg_x * 0.5f;
x.i = 0x5f3759df - (x.i >> 1);
return x.f * (1.5f - xhalf * x.f * x.f);
}
into:
_invsqrt:
movss 4(%esp), %xmm0
movd %xmm0, %eax
sarl %eax
movl $1597463007, %ecx
subl %eax, %ecx
movd %ecx, %xmm1
mulss LCPI1_0, %xmm0
mulss %xmm1, %xmm0
movss LCPI1_1, %xmm2
mulss %xmm1, %xmm0
subss %xmm0, %xmm2
movl 8(%esp), %eax
mulss %xmm2, %xmm1
movss %xmm1, (%eax)
ret
instead of:
_invsqrt:
subl $4, %esp
movss 8(%esp), %xmm0
movss %xmm0, (%esp)
movl (%esp), %eax
movl $1597463007, %ecx
sarl %eax
subl %eax, %ecx
movl %ecx, (%esp)
mulss LCPI1_0, %xmm0
movss (%esp), %xmm1
mulss %xmm1, %xmm0
mulss %xmm1, %xmm0
movss LCPI1_1, %xmm2
subss %xmm0, %xmm2
mulss %xmm2, %xmm1
movl 12(%esp), %eax
movss %xmm1, (%eax)
addl $4, %esp
ret
llvm-svn: 32418
2006-12-10 23:56:50 +00:00
Reid Spencer
efe5c862f1
Incorporate any changes in the successor blocks into the result of
...
MarkAliveBlocks.
llvm-svn: 32375
2006-12-08 21:52:01 +00:00
Bill Wendling
22e978a736
Removing even more <iostream> includes.
...
llvm-svn: 32320
2006-12-07 20:04:42 +00:00
Bill Wendling
f3baad3ee1
Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
...
now cerr, cout, and NullStream resp.
llvm-svn: 32298
2006-12-07 01:30:32 +00:00
Reid Spencer
4ae56f3086
Update ConstantIntegral Max/Min tests for new interface.
...
llvm-svn: 32288
2006-12-06 20:39:57 +00:00