| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
except LegalizeOp itself.
llvm-svn: 63560
|
|
|
|
|
|
| |
among others.
llvm-svn: 63555
|
|
|
|
| |
llvm-svn: 63543
|
|
|
|
| |
llvm-svn: 63537
|
|
|
|
|
|
|
|
|
| |
crashes or wrong code with codegen of large integers:
eliminate the legacy getIntegerVTBitMask and
getIntegerVTSignBit methods, which returned their
value as a uint64_t, so couldn't handle huge types.
llvm-svn: 63494
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
returned by getShiftAmountTy may be too small
to hold shift values (it is an i8 on x86-32).
Before and during type legalization, use a large
but legal type for shift amounts: getPointerTy;
afterwards use getShiftAmountTy, fixing up any
shift amounts with a big type during operation
legalization. Thanks to Dan for writing the
original patch (which I shamelessly pillaged).
llvm-svn: 63482
|
|
|
|
|
|
| |
argument. Adjust all callers and overloaded versions.
llvm-svn: 63444
|
|
|
|
| |
llvm-svn: 63442
|
|
|
|
|
|
| |
BUILD_VECTOR and conversions to stack operations.
llvm-svn: 63333
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
new isOperationLegalOrCustom, which does what isOperationLegal
previously did.
Update a bunch of callers to use isOperationLegalOrCustom
instead of isOperationLegal. In some case it wasn't obvious
which behavior is desired; when in doubt I changed then to
isOperationLegalOrCustom as that preserves their previous
behavior.
This is for the second half of PR3376.
llvm-svn: 63212
|
|
|
|
| |
llvm-svn: 63170
|
|
|
|
|
|
|
| |
shift amounts, to avoid implicitly assuming that
target architectures will ignore the high bits.
llvm-svn: 63169
|
|
|
|
|
|
|
|
| |
a uint64_t to verify that the value is in range for the given type,
to help catch accidental overflow. Fix a few places that relied on
getConstant implicitly truncating the value.
llvm-svn: 63128
|
|
|
|
| |
llvm-svn: 62940
|
|
|
|
|
|
|
| |
corresponding to the "not" and "vnot" PatFrags. Use the new method
in some places where it seems appropriate.
llvm-svn: 62768
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Ensure that (operation) legalization emits proper FDIV libcall when needed.
- Fix various bugs encountered during llvm-spu-gcc build, along with various
cleanups.
- Start supporting double precision comparisons for remaining libgcc2 build.
Discovered interesting DAGCombiner feature, which is currently solved via
custom lowering (64-bit constants are not legal on CellSPU, but DAGCombiner
insists on inserting one anyway.)
- Update README.
llvm-svn: 62664
|
|
|
|
| |
llvm-svn: 62262
|
|
|
|
| |
llvm-svn: 62260
|
|
|
|
| |
llvm-svn: 62127
|
|
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
|
|
|
|
|
|
|
|
|
| |
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).
llvm-svn: 61542
|
|
|
|
| |
llvm-svn: 61463
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.
This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.
llvm-svn: 61389
|
|
|
|
| |
llvm-svn: 61209
|
|
|
|
| |
llvm-svn: 61129
|
|
|
|
|
|
|
| |
target constants are allowed to have an illegal
type.
llvm-svn: 61006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Running /Users/void/llvm/llvm.src/test/CodeGen/Generic/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll | llc | /usr/bin/grep 68719476738
Assertion failed: ((TypesNeedLegalizing || getTypeAction(VT) == Legal) && "Illegal type introduced after type legalization?"), function HandleOp, file /Users/void/llvm/llvm.src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp, line 493.
0 llc 0x0085392e char const* std::find<char const*, char>(char const*, char const*, char const&) + 98
1 llc 0x00853e63 llvm::sys::PrintStackTraceOnErrorSignal() + 593
2 libSystem.B.dylib 0x96cac09b _sigtramp + 43
3 libSystem.B.dylib 0xffffffff _sigtramp + 1765097359
4 libSystem.B.dylib 0x96d24ec2 raise + 26
5 libSystem.B.dylib 0x96d3447f abort + 73
6 libSystem.B.dylib 0x96d26063 __assert_rtn + 101
7 llc 0x004f9018 llvm::cast_retty<llvm::SubprogramDesc, llvm::DebugInfoDesc*>::ret_type llvm::cast<llvm::Sub
...
llvm-svn: 61001
|
|
|
|
|
|
|
| |
types into the DAG if they were not already there.
Check this with an assertion.
llvm-svn: 60997
|
|
|
|
| |
llvm-svn: 60974
|
|
|
|
|
|
|
|
|
|
| |
width register load followed by a truncating
store for the copy, since the load will not place
the value in the lower bits. Probably partial
loads/stores can never happen here, but fix it
anyway.
llvm-svn: 60972
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
use of illegal integer types: instead, use a stack slot
and copying via integer registers. The existing code
is still used if the bitconvert is to a legal integer
type.
This fires on the PPC testcases 2007-09-08-unaligned.ll
and vec_misaligned.ll. It looks like equivalent code
is generated with these changes, just permuted, but
it's hard to tell.
With these changes, nothing in LegalizeDAG produces
illegal integer types anymore. This is a prerequisite
for removing the LegalizeDAG type legalization code.
While there I noticed that the existing code doesn't
handle trunc store of f64 to f32: it turns this into
an i64 store, which represents a 4 byte stack smash.
I added a FIXME about this. Hopefully someone more
motivated than I am will take care of it.
llvm-svn: 60964
|
|
|
|
|
|
| |
everyone is doing this these days :-). Patch by Daniel M Gessel!
llvm-svn: 60958
|
|
|
|
|
|
|
|
| |
do an extending load of the 4 bytes rather than a
potentially illegal (type) i32 load followed by a
sign extend.
llvm-svn: 60945
|
|
|
|
|
|
| |
Added support for TRUNC v8i16 to v8i8 for X86 (MMX)
llvm-svn: 60916
|
|
|
|
| |
llvm-svn: 60866
|
|
|
|
| |
llvm-svn: 60826
|
|
|
|
|
|
|
| |
target-independent way of determining overflow on multiplication. It's very
tricky. Patch by Zoltan Varga!
llvm-svn: 60800
|
|
|
|
|
|
| |
one of its operand.
llvm-svn: 60749
|
|
|
|
|
|
|
|
| |
Fix the shift amount when unrolling a vector shift into scalar shifts.
Fix problem in getShuffleScalarElt where it assumes that the input of
a bit convert must be a vector.
llvm-svn: 60740
|
|
|
|
|
|
| |
consistent with the way it's generally done in other places.
llvm-svn: 60439
|
|
|
|
| |
llvm-svn: 60409
|
|
|
|
| |
llvm-svn: 60406
|
|
|
|
|
|
|
|
| |
MERGE_VALUES node with only one operand, so get
rid of special code that only existed to handle
that possibility.
llvm-svn: 60349
|
|
|
|
|
|
|
|
|
|
|
| |
ReplaceNodeResults: rather than returning a node which
must have the same number of results as the original
node (which means mucking around with MERGE_VALUES,
and which is also easy to get wrong since SelectionDAG
folding may mean you don't get the node you expect),
return the results in a vector.
llvm-svn: 60348
|
|
|
|
| |
llvm-svn: 60149
|
|
|
|
| |
llvm-svn: 60102
|
|
|
|
|
|
| |
differ. Thanks, Duncan.
llvm-svn: 60043
|
|
|
|
| |
llvm-svn: 60016
|
|
|
|
| |
llvm-svn: 60015
|
|
|
|
|
|
|
| |
if the operands have the same sign and the sum has sign opposite to that of the
operands."
llvm-svn: 60014
|