| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
undef operands.
llvm-svn: 32899
|
| |
|
|
|
|
| |
InstCombine/xor.ll:test27
llvm-svn: 32893
|
| |
|
|
| |
llvm-svn: 32890
|
| |
|
|
| |
llvm-svn: 32866
|
| |
|
|
| |
llvm-svn: 32858
|
| |
|
|
| |
llvm-svn: 32827
|
| |
|
|
| |
llvm-svn: 32803
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
correctly and emit "may be used uninitialized" warnings.
llvm-svn: 32756
|
| |
|
|
|
|
|
| |
Don't allow CmpInst instances to be processed in FoldSelectOpOp because
you can't easily swap their operands.
llvm-svn: 32753
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 32750
|
| |
|
|
| |
llvm-svn: 32730
|
| |
|
|
| |
llvm-svn: 32729
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 32709
|
| |
|
|
| |
llvm-svn: 32696
|
| |
|
|
| |
llvm-svn: 32695
|
| |
|
|
|
|
| |
delete some dead ones.
llvm-svn: 32694
|
| |
|
|
| |
llvm-svn: 32693
|
| |
|
|
| |
llvm-svn: 32692
|
| |
|
|
|
|
|
| |
converted, we lose a static initializer. This also allows GCC to emit warnings
about unused statistics.
llvm-svn: 32690
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
form so we can remove that method from ConstantExpr.
llvm-svn: 32652
|
| |
|
|
|
|
|
| |
rework the hacks that had us passing OStream in. We pass in std::ostream*
instead, check for null, and then dispatch to the correct print() method.
llvm-svn: 32636
|
| |
|
|
|
|
| |
zero arg vararg functions, pass undef instead of 'int 0', which is cheaper.
llvm-svn: 32634
|
| |
|
|
| |
llvm-svn: 32595
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
cast instructions. A few are bug fixes.
llvm-svn: 32544
|
| |
|
|
|
|
|
| |
make sure to also check that it is a zext from bool, not any other cast
operation type.
llvm-svn: 32539
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 32534
|
| |
|
|
|
|
|
| |
obscure bugs affecting the X86 code generator. I will reenable this
when fixed.
llvm-svn: 32524
|
| |
|
|
|
|
| |
creation calls.
llvm-svn: 32521
|
| |
|
|
|
|
|
| |
Rename getZeroExtend and getSignExtend to getZExt and getSExt to match
the the casting mnemonics in the rest of LLVM.
llvm-svn: 32514
|
| |
|
|
| |
llvm-svn: 32487
|
| |
|
|
| |
llvm-svn: 32486
|
| |
|
|
| |
llvm-svn: 32479
|
| |
|
|
| |
llvm-svn: 32477
|
| |
|
|
| |
llvm-svn: 32469
|
| |
|
|
| |
llvm-svn: 32468
|
| |
|
|
| |
llvm-svn: 32426
|
| |
|
|
|
|
| |
This implements Transforms/ScalarRepl/union-packed.ll
llvm-svn: 32422
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
| |
MarkAliveBlocks.
llvm-svn: 32375
|
| |
|
|
| |
llvm-svn: 32333
|
| |
|
|
| |
llvm-svn: 32320
|
| |
|
|
|
|
| |
now cerr, cout, and NullStream resp.
llvm-svn: 32298
|