| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
lowered using a series of shifts.
Fixes <rdar://problem/8285015>.
llvm-svn: 114599
|
|
|
|
|
|
|
|
|
| |
target-dependent, by using
the predicate to discover the number of sign bits. Enhance X86's target lowering to provide
a useful response to this query.
llvm-svn: 114473
|
|
|
|
| |
llvm-svn: 114461
|
|
|
|
|
|
| |
MachinePointerInfo around more.
llvm-svn: 114452
|
|
|
|
|
|
| |
SelectionDAG::getExtLoad overload, and eliminate it.
llvm-svn: 114446
|
|
|
|
|
|
| |
with SVOffset computation.
llvm-svn: 114442
|
|
|
|
| |
llvm-svn: 114437
|
|
|
|
|
|
| |
no functionality change (step #1)
llvm-svn: 114436
|
|
|
|
|
|
|
| |
pass a completely incorrect SrcValue, which would result in a miscompile with
combiner-aa.
llvm-svn: 114411
|
|
|
|
|
|
|
|
|
|
|
|
| |
Therefore,
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use
MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing.
This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll
when CombinerAA is enabled, modulo a different register allocation sequence.
llvm-svn: 114348
|
|
|
|
| |
llvm-svn: 114313
|
|
|
|
|
|
|
| |
r114268 fixed the last of the blockers to enabling it. I will be monitoring
for failures.
llvm-svn: 114312
|
|
|
|
|
|
|
|
|
|
| |
there are clearly no stores between the load and the store. This fixes
this miscompile reported as PR7833.
This breaks the test/CodeGen/X86/narrow_op-2.ll optimization, which is
safe, but awkward to prove safe. Move it to X86's README.txt.
llvm-svn: 112861
|
|
|
|
|
|
|
|
| |
ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself
recursively and returning a SCALAR_TO_VECTOR node, but assuming the input was always a BUILD_VECTOR.
llvm-svn: 109519
|
|
|
|
| |
llvm-svn: 108688
|
|
|
|
|
|
|
|
|
|
| |
conversions around sqrt instructions.
I am assured by people more knowledgeable than me that there are no rounding issues in eliminating this.
This fixed <rdar://problem/8197504>.
llvm-svn: 108639
|
|
|
|
| |
llvm-svn: 108130
|
|
|
|
|
|
|
|
| |
disabled and then never turned back on again. Adjust some tests, one because
this change avoids an unnecessary instruction, and the other to make it
continue testing what it was intended to test.
llvm-svn: 107941
|
|
|
|
|
|
| |
few more idioms.
llvm-svn: 107868
|
|
|
|
|
|
| |
for consistency sake.
llvm-svn: 107820
|
|
|
|
| |
llvm-svn: 107710
|
|
|
|
|
|
|
| |
can't be changed arbitrarily by the DAGCombiner without checking if it is
running after legalization.
llvm-svn: 107097
|
|
|
|
|
|
| |
is not used. Spotted by gcc-4.6.
llvm-svn: 106854
|
|
|
|
| |
llvm-svn: 106746
|
|
|
|
|
|
| |
DAGCombiner pass,"... it was causing both 'file' (with clang) and 176.gcc (with llvm-gcc) to be miscompiled.
llvm-svn: 106634
|
|
|
|
|
|
|
|
| |
atomic intrinsics, either because the use locking instructions for the
atomics, or because they perform the locking directly. Add support in the
DAG combiner to fold away the fences.
llvm-svn: 106630
|
|
|
|
|
|
| |
which is faster, simpler, and less surprising.
llvm-svn: 106263
|
|
|
|
|
|
|
|
| |
Mon Ping provided; unfortunately bugpoint failed to
reduce it, but I think it's important to have a test for
this in the suite. 8023512.
llvm-svn: 104624
|
|
|
|
|
|
|
| |
(oye, a word which should be better known to people writing tree
traversals, means grandchild.)
llvm-svn: 104619
|
|
|
|
| |
llvm-svn: 104410
|
|
|
|
|
|
|
|
| |
so that it will continue to test what it was meant to test when I commit a
separate change for better support of BUILD_VECTOR and VECTOR_SHUFFLE for Neon.
Fix a DAG combiner crash exposed by this test change.
llvm-svn: 104380
|
|
|
|
|
|
|
| |
test/Codegen/ARM/reg_sequence.ll but it doesn't affect the generated code
because the coalescer cleans it up. Radar 7998853.
llvm-svn: 104185
|
|
|
|
|
|
|
|
|
|
| |
modeled as icmp / fcmp + sext. This is turned into a vsetcc by dag combine (yes, not a good long term solution). The targets can then isel the vsetcc to the appropriate instruction.
The trouble arises when the result of a vector cmp + sext is then and'ed with all ones. Instcombine will turn it into a vector cmp + zext, dag combiner will miss turning it into a vsetcc and hell breaks loose after that.
Teach dag combine to turn a vector cpm + zest into a vsetcc + and 1. This fixes rdar://7923010.
llvm-svn: 104094
|
|
|
|
|
|
| |
into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649
llvm-svn: 104060
|
|
|
|
|
|
| |
(build_vector), (build_vector)).
llvm-svn: 104004
|
|
|
|
|
|
| |
operands may be the same. PR7018. rdar://7939869.
llvm-svn: 103419
|
|
|
|
|
|
|
| |
comparisons sign-extended to a different bitwidth than the
comparison operands.
llvm-svn: 102721
|
|
|
|
|
|
| |
failed to do anything.
llvm-svn: 102492
|
|
|
|
|
|
| |
- Catch more further dag combine opportunities as result of operand promotion, e.g. (i32 anyext (i16 trunc (i32 x))) -> (i32 x)
llvm-svn: 102455
|
|
|
|
|
|
| |
of extload result truncated.
llvm-svn: 102236
|
|
|
|
|
|
| |
testcase yet, as the testcase now fails downstream.
llvm-svn: 102228
|
|
|
|
| |
llvm-svn: 102202
|
|
|
|
|
|
| |
- Some code refactoring.
llvm-svn: 102111
|
|
|
|
|
|
| |
it as it's not dead.
llvm-svn: 101855
|
|
|
|
| |
llvm-svn: 101808
|
|
|
|
| |
llvm-svn: 101621
|
|
|
|
|
|
| |
case until -promote-16bit is enabled.
llvm-svn: 101551
|
|
|
|
|
|
|
|
|
|
| |
requires target specific queries. For example, x86 should promote i16 to i32 when it does not impact load folding.
x86 support is off by default. It can be enabled with -promote-16bit.
Work in progress.
llvm-svn: 101448
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tokenfactor in between the load/store. This allows us to
optimize test7 into:
_test7: ## @test7
## BB#0: ## %entry
movl (%rdx), %eax
## kill: SIL<def> ESI<kill>
movb %sil, 5(%rdi)
ret
instead of:
_test7: ## @test7
## BB#0: ## %entry
movl 4(%esp), %ecx
movl $-65281, %eax ## imm = 0xFFFFFFFFFFFF00FF
andl 4(%ecx), %eax
movzbl 8(%esp), %edx
shll $8, %edx
addl %eax, %edx
movl 12(%esp), %eax
movl (%eax), %eax
movl %edx, 4(%ecx)
ret
llvm-svn: 101355
|
|
|
|
|
|
|
|
| |
This doesn't occur much at all, it only seems to formed in the case
when the trunc optimization kicks in due to phase ordering. In that
case it is saves a few bytes on x86-32.
llvm-svn: 101350
|