| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 63501
|
| |
|
|
| |
llvm-svn: 63499
|
| |
|
|
|
|
|
|
|
| |
--This line, and those below, will be ignaored--
A test/CodeGen/X86/nosse-error1.ll
A test/CodeGen/X86/nosse-error2.ll
llvm-svn: 63496
|
| |
|
|
|
|
| |
var-args, and don't allow FP return values
llvm-svn: 63495
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
turn icmp eq a+x, b+x into icmp eq a, b if a+x or b+x has other uses. This
may have been increasing register pressure leading to the bzip2 slowdown.
llvm-svn: 63487
|
| |
|
|
|
|
|
|
|
|
|
| |
improvements to the EvaluateInDifferentType code. This code works
by just inserted a bunch of new code and then seeing if it is
useful. Instcombine is not allowed to do this: it can only insert
new code if it is useful, and only when it is converging to a more
canonical fixed point. Now that we iterate when DCE makes progress,
this causes an infinite loop when the code ends up not being used.
llvm-svn: 63483
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
simplifydemandedbits to simplify instructions with *multiple
uses* in contexts where it can get away with it. This allows
it to simplify the code in multi-use-or.ll into a single 'add
double'.
This change is particularly interesting because it will cover
up for some common codegen bugs with large integers created due
to the recent SROA patch. When working on fixing those bugs,
this should be disabled.
llvm-svn: 63481
|
| |
|
|
|
|
|
| |
not doing so prevents it from properly iterating and prevents it
from deleting the entire body of dce-iterate.ll
llvm-svn: 63476
|
| |
|
|
|
|
| |
- a *b.
llvm-svn: 63475
|
| |
|
|
|
|
| |
when A==B, -0.0 != +0.0.
llvm-svn: 63474
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
be able to handle *ANY* alloca that is poked by loads and stores of
bitcasts and GEPs with constant offsets. Before the code had a number
of annoying limitations and caused it to miss cases such as storing into
holes in structs and complex casts (as in bitfield-sroa) where we had
unions of bitfields etc. This also handles a number of important cases
that are exposed due to the ABI lowering stuff we do to pass stuff by
value.
One case that is pretty great is that we compile
2006-11-07-InvalidArrayPromote.ll into:
define i32 @func(<4 x float> %v0, <4 x float> %v1) nounwind {
%tmp10 = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %v1)
%tmp105 = bitcast <4 x i32> %tmp10 to i128
%tmp1056 = zext i128 %tmp105 to i256
%tmp.upgrd.43 = lshr i256 %tmp1056, 96
%tmp.upgrd.44 = trunc i256 %tmp.upgrd.43 to i32
ret i32 %tmp.upgrd.44
}
which turns into:
_func:
subl $28, %esp
cvttps2dq %xmm1, %xmm0
movaps %xmm0, (%esp)
movl 12(%esp), %eax
addl $28, %esp
ret
Which is pretty good code all things considering :).
One effect of this is that SROA will start generating arbitrary bitwidth
integers that are a multiple of 8 bits. In the case above, we got a
256 bit integer, but the codegen guys assure me that it can handle the
simple and/or/shift/zext stuff that we're doing on these operations.
This addresses rdar://6532315
llvm-svn: 63469
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
information output. However, many target specific tool chains prefer to encode
only one compile unit in an object file. In this situation, the LLVM code
generator will include debugging information entities in the compile unit
that is marked as main compile unit. The code generator accepts maximum one main
compile unit per module. If a module does not contain any main compile unit
then the code generator will emit multiple compile units in the output object
file.
[Part 1]
Update DebugInfo APIs to accept optional boolean value while creating DICompileUnit to mark the unit as "main" unit. By defaults all units are considered non-main. Update SourceLevelDebugging.html to document "main" compile unit.
Update DebugInfo APIs to not accept and encode separate source file/directory entries while creating various llvm.dbg.* entities. There was a recent, yet to be documented, change to include this additional information so no documentation changes are required here.
Update DwarfDebug to handle "main" compile unit. If "main" compile unit is seen then all DIEs are inserted into "main" compile unit. All other compile units are used to find source location for llvm.dbg.* values. If there is not any "main" compile unit then create unique compile unit DIEs for each llvm.dbg.compile_unit.
[Part 2]
Create separate llvm.dbg.compile_unit for each input file. Mark compile unit create for main_input_filename as "main" compile unit. Use appropriate compile unit, based on source location information collected from the tree node, while creating llvm.dbg.* values using DebugInfo APIs.
---
This is Part 1.
llvm-svn: 63400
|
| |
|
|
|
|
|
|
| |
the LowerPartSet(). It didn't handle the situation correctly when
the low, high argument values are in reverse order (low > high)
with 'Val' type is i32 (a corner case).
llvm-svn: 63386
|
| |
|
|
| |
llvm-svn: 63361
|
| |
|
|
| |
llvm-svn: 63360
|
| |
|
|
| |
llvm-svn: 63356
|
| |
|
|
|
|
|
|
| |
selection code. Not deleting because
it should be possible to enhance the selection code to handle this in the future.
llvm-svn: 63340
|
| |
|
|
|
|
| |
basic blocks have live-ins.
llvm-svn: 63323
|
| |
|
|
|
|
|
| |
the element indices may be equal if either one is not a
constant.
llvm-svn: 63311
|
| |
|
|
| |
llvm-svn: 63304
|
| |
|
|
| |
llvm-svn: 63300
|
| |
|
|
| |
llvm-svn: 63267
|
| |
|
|
|
|
|
|
|
| |
dagcombines that help it match in several more cases. Add
several more cases to test/CodeGen/X86/bt.ll. This doesn't
yet include matching for BT with an immediate operand, it
just covers more register+register cases.
llvm-svn: 63266
|
| |
|
|
| |
llvm-svn: 63252
|
| |
|
|
| |
llvm-svn: 63247
|
| |
|
|
| |
llvm-svn: 63244
|
| |
|
|
| |
llvm-svn: 63233
|
| |
|
|
|
|
| |
after the others.
llvm-svn: 63227
|
| |
|
|
| |
llvm-svn: 63222
|
| |
|
|
|
|
| |
16-byte. That is overly strict. These instructions read / write f64 memory locations without alignment requirement.
llvm-svn: 63195
|
| |
|
|
| |
llvm-svn: 63194
|
| |
|
|
|
|
| |
Adds new option properties 'multi_val', 'one_or_more' and 'zero_or_one'.
llvm-svn: 63172
|
| |
|
|
| |
llvm-svn: 63149
|
| |
|
|
| |
llvm-svn: 63090
|
| |
|
|
| |
llvm-svn: 63089
|
| |
|
|
|
|
|
| |
to help verify that the feature may be disabled through
the -mno-red-zone option.
llvm-svn: 63079
|
| |
|
|
|
|
|
|
| |
- DW_AT_bit_size is only suitable for bitfields.
- Encode source location info for derived types.
- Source location and type size info is not useful for subroutine_type (info is included in respective DISubprogram) and array_type.
llvm-svn: 63077
|
| |
|
|
| |
llvm-svn: 63075
|
| |
|
|
| |
llvm-svn: 63067
|
| |
|
|
|
|
|
|
|
| |
checking logic. Rather than make the checking more
complicated, I've tweaked some logic to make things
conform to how the checking thought things ought to
be, since this results in a simpler "mental model".
llvm-svn: 63048
|
| |
|
|
| |
llvm-svn: 63042
|
| |
|
|
|
|
| |
callseq_start to allow it to be folded into a call. It was not considering the cases where a token factor is between the load and the callseq_start.
llvm-svn: 63022
|
| |
|
|
|
|
| |
has a different number of elements than the output.
llvm-svn: 62998
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Rename fcmp.ll test to fcmp32.ll, start adding new double tests to fcmp64.ll
- Fix select_bits.ll test
- Capitulate to the DAGCombiner and move i64 constant loads to instruction
selection (SPUISelDAGtoDAG.cpp).
<rant>DAGCombiner will insert all kinds of 64-bit optimizations after
operation legalization occurs and now we have to do most of the work that
instruction selection should be doing twice (once to determine if v2i64
build_vector can be handled by SelectCode(), which then runs all of the
predicates a second time to select the necessary instructions.) But,
CellSPU is a good citizen.</rant>
llvm-svn: 62990
|
| |
|
|
| |
llvm-svn: 62985
|
| |
|
|
|
|
| |
handling the flaw inherent in that assumption. :)
llvm-svn: 62984
|
| |
|
|
|
|
|
| |
other x86 segments. address space 0 is stack/default, 1-255 are reserved for
client use.
llvm-svn: 62980
|
| |
|
|
|
|
| |
for example in the case of va-args. XFAIL associated tests.
llvm-svn: 62972
|