| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
failures.
To support this, add some utility functions to Type to help support
vector/scalar-independent code. Change ConstantInt::get and
ConstantFP::get to support vector types, and add an overload to
ConstantInt::get that uses a static IntegerType type, for
convenience.
Introduce a new getConstant method for ScalarEvolution, to simplify
common use cases.
llvm-svn: 73431
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.
For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.
This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt
llvm-svn: 72897
|
| |
|
|
|
|
|
| |
shift constant expressions, and add support for folding vector
shift constant expressions. This fixes PR3802.
llvm-svn: 67010
|
| |
|
|
|
|
|
| |
has never been run!).
- Sorry, don't know how to make an LLVM test case for this.
llvm-svn: 65383
|
| |
|
|
|
|
| |
fires during the Ada build).
llvm-svn: 63731
|
| |
|
|
|
|
|
| |
i80 to x86 long double (this was presumably generated
by sroa).
llvm-svn: 63730
|
| |
|
|
|
|
|
|
| |
Besides APFloat, this involved removing code
from two places that thought they knew the
result of frem(0., x) but were wrong.
llvm-svn: 62645
|
| |
|
|
|
|
|
| |
langref. Constant fold them to undef instead of trying to preserve
the trap. This fixes PR3354.
llvm-svn: 62534
|
| |
|
|
|
|
| |
<result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask>
llvm-svn: 58964
|
| |
|
|
| |
llvm-svn: 58653
|
| |
|
|
| |
llvm-svn: 57625
|
| |
|
|
|
|
|
| |
and APFloat::convertToInteger. Restore return value to
IEEE754. Adjust all users accordingly.
llvm-svn: 57329
|
| |
|
|
|
|
|
| |
make it clearer what the function does. No functional
change.
llvm-svn: 57325
|
| |
|
|
|
|
| |
equivalence.
llvm-svn: 55694
|
| |
|
|
|
|
|
|
|
| |
be folded. Instead, fail to fold the entire vector.
We could also return a vector with some elements folded and some not. If anyone
thinks that's a better approach, please speak up!
llvm-svn: 55689
|
| |
|
|
|
|
| |
infinite recursion. part of PR2529
llvm-svn: 53383
|
| |
|
|
|
|
| |
it for PR2529
llvm-svn: 53380
|
| |
|
|
| |
llvm-svn: 53243
|
| |
|
|
|
|
|
|
|
|
|
| |
1) evaluate [v]fcmp true/false with undefs to true or false instead
of undef.
2) fix vector comparisons with undef to return a vector result instead
of i1
3) fix vector comparisons with evaluatable results to return vector
true/false instead of i1 true/false (PR2529)
llvm-svn: 53220
|
| |
|
|
| |
llvm-svn: 51889
|
| |
|
|
| |
llvm-svn: 51223
|
| |
|
|
| |
llvm-svn: 51217
|
| |
|
|
| |
llvm-svn: 51216
|
| |
|
|
|
|
| |
moving toward making structs and arrays first-class types.
llvm-svn: 51157
|
| |
|
|
| |
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
|