| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 50943
|
|
|
|
| |
llvm-svn: 49999
|
|
|
|
| |
llvm-svn: 49995
|
|
|
|
|
|
| |
long doubles.
llvm-svn: 49976
|
|
|
|
| |
llvm-svn: 49967
|
|
|
|
|
|
|
| |
a few new cases( see Integer/a1.ll), but not anything that
would happen in practice.
llvm-svn: 49965
|
|
|
|
| |
llvm-svn: 49964
|
|
|
|
| |
llvm-svn: 48971
|
|
|
|
|
|
| |
transformed to undef. But this is such a common idiom (misuse) we are going to handle it.
llvm-svn: 48792
|
|
|
|
| |
llvm-svn: 47744
|
|
|
|
|
|
| |
annoying warnings.
llvm-svn: 47367
|
|
|
|
| |
llvm-svn: 47314
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
|
|
| |
of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space.
llvm-svn: 45082
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows us to compile:
#include <emmintrin.h>
typedef __m128i VSInt16;
typedef short vSInt16 __attribute__ ((__vector_size__ (16)));
VSInt16 t3() {
return (VSInt16)((vSInt16)_mm_set1_epi16(6518));
}
into:
_t3:
movaps LCPI1_0, %xmm0
ret
instead of:
_t3:
movl $6518, %eax
movd %eax, %xmm0
pextrw $0, %xmm0, %eax
xorps %xmm0, %xmm0
pinsrw $0, %eax, %xmm0
punpcklwd %xmm0, %xmm0
pshufd $0, %xmm0, %xmm0
ret
llvm-svn: 44856
|
|
|
|
| |
llvm-svn: 44850
|
|
|
|
| |
llvm-svn: 44849
|
|
|
|
|
|
|
|
| |
Reimplement the xform in Analysis/ConstantFolding.cpp where we can use
targetdata to validate that it is safe. While I'm in there, fix some const
correctness issues and generalize the interface to the "operand folder".
llvm-svn: 44817
|
|
|
|
| |
llvm-svn: 44204
|
|
|
|
|
|
|
| |
by r43510. Gracefully handle constants with vector type that aren't
ConstantVector or ConstantAggregateZero.
llvm-svn: 43579
|
|
|
|
| |
llvm-svn: 43510
|
|
|
|
|
|
|
| |
Remove the assumption that this will happen from
various places.
llvm-svn: 43053
|
|
|
|
| |
llvm-svn: 42979
|
|
|
|
|
|
| |
long double.
llvm-svn: 42958
|
|
|
|
|
|
|
|
| |
input. APInt unfortunately zero-extends signed integers, so Dale
modified the function to expect zero-extended input. Make this
assumption explicit in the function name.
llvm-svn: 42732
|
|
|
|
|
|
|
|
| |
use APFloat for int-to-float/double; use
round-to-nearest for these (implementation-defined,
seems to match gcc).
llvm-svn: 42484
|
|
|
|
| |
llvm-svn: 42329
|
|
|
|
|
|
| |
cases with undefined behavior.
llvm-svn: 42328
|
|
|
|
|
|
| |
Fixes PR1698.
llvm-svn: 42273
|
|
|
|
|
|
| |
-1. / -0.
llvm-svn: 42254
|
|
|
|
| |
llvm-svn: 42165
|
|
|
|
| |
llvm-svn: 42133
|
|
|
|
|
|
|
| |
fold that were missed in the fix for PR1646. Probably
this null/not-null logic should be factorized somewhere.
llvm-svn: 42131
|
|
|
|
|
|
|
| |
Next round of x87 long double stuff.
Getting close now, basically works.
llvm-svn: 41875
|
|
|
|
|
|
|
|
|
| |
access to bits). Use them in place of float and
double interfaces where appropriate.
First bits of x86 long double constants handling
(untested, probably does not work).
llvm-svn: 41858
|
|
|
|
| |
llvm-svn: 41818
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use APFloat in UpgradeParser and AsmParser.
Change all references to ConstantFP to use the
APFloat interface rather than double. Remove
the ConstantFP double interfaces.
Use APFloat functions for constant folding arithmetic
and comparisons.
(There are still way too many places APFloat is
just a wrapper around host float/double, but we're
getting there.)
llvm-svn: 41747
|
|
|
|
|
|
| |
GLIBCXX_DEBUG issues.
llvm-svn: 41697
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Into: inttoptr (i64 0 to i8*) -> null
This occurs in the example in PR1602. With this fixed, we now compile
the example in PR1602 into fully "devirtualized" code:
define void @_Z1g1S(%struct.S* noalias %s) {
entry: %tmp131415 = getelementptr %struct.S* %s, i32 0, i32 0 ; <i32 (...)***> [#uses=1] %tmp16 = load i32 (...)*** %tmp131415, align 4 ; <i32 (...)**> [#uses=1]
%tmp26277 = load i32 (...)** %tmp16 ; <i32 (...)*> [#uses=1]
%tmp2829 = bitcast i32 (...)* %tmp26277 to void (%struct.S*)* ; <void (%struct.S*)*> [#uses=1]
tail call void %tmp2829( %struct.S* %s )
ret void
}
This still has the vtable dispatch (as required) but does not have any pointer
to method cruft left.
llvm-svn: 41046
|
|
|
|
| |
llvm-svn: 40849
|
|
|
|
|
|
| |
This hopefully fixes a miscompilation of TargetData.cpp when self hosting.
llvm-svn: 40125
|
|
|
|
| |
llvm-svn: 39921
|
|
|
|
| |
llvm-svn: 35360
|
|
|
|
| |
llvm-svn: 35336
|
|
|
|
|
|
|
| |
requirements. We must return NaN in some cases and correctly signed
infinity in other cases. Passes CFP2006 (not that that says much).
llvm-svn: 35277
|
|
|
|
| |
llvm-svn: 34880
|
|
|
|
|
|
| |
Constant::isNullValue() in situations where it is possible.
llvm-svn: 34821
|
|
|
|
|
|
|
|
| |
and back. While this is not strictly necessary, it does pave the way for
future changes in casting. It should now be possible to improve vector
casting to deal with un-equal fp/int sizes.
llvm-svn: 34808
|
|
|
|
| |
llvm-svn: 34793
|
|
|
|
| |
llvm-svn: 34703
|