| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 34639
|
| |
|
|
| |
llvm-svn: 34638
|
| |
|
|
| |
llvm-svn: 34637
|
| |
|
|
|
|
| |
conventions. This doesn't do anything yet, but may in the future.
llvm-svn: 34636
|
| |
|
|
|
|
| |
easier to comprehend and might be useful elsewhere.
llvm-svn: 34635
|
| |
|
|
| |
llvm-svn: 34634
|
| |
|
|
| |
llvm-svn: 34633
|
| |
|
|
| |
llvm-svn: 34632
|
| |
|
|
|
|
|
| |
mechanics that process it. I'm still not happy with this, but it's a step
in the right direction.
llvm-svn: 34631
|
| |
|
|
| |
llvm-svn: 34630
|
| |
|
|
|
|
|
|
|
|
| |
2. Fix countTrailingZeros to use a faster algorithm.
3. Simplify sext() slightly by using isNegative().
4. Implement ashr using word-at-a-time logic instead of bit-at-a-time
5. Rename locals named isNegative so they don't clash with method name.
6. Fix fromString to compute negated value correctly.
llvm-svn: 34629
|
| |
|
|
| |
llvm-svn: 34628
|
| |
|
|
| |
llvm-svn: 34627
|
| |
|
|
| |
llvm-svn: 34626
|
| |
|
|
| |
llvm-svn: 34625
|
| |
|
|
| |
llvm-svn: 34624
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Capture this so that downstream zext/sext's are optimized out. This
compiles:
int test(short X) { return (int)X; }
to:
_test:
movl %edi, %eax
ret
instead of:
_test:
movswl %di, %eax
ret
GCC produces this bizarre code:
_test:
movw %di, -12(%rsp)
movswl -12(%rsp),%eax
ret
llvm-svn: 34623
|
| |
|
|
| |
llvm-svn: 34622
|
| |
|
|
|
|
|
|
|
| |
sextinreg if not needed. This is useful in two cases: before legalize,
it avoids creating a sextinreg that will be trivially removed. After legalize
if the target doesn't support sextinreg, the trunc/sext would not have been
removed before.
llvm-svn: 34621
|
| |
|
|
| |
llvm-svn: 34620
|
| |
|
|
|
|
| |
This is much less expensive than a test against zero.
llvm-svn: 34619
|
| |
|
|
|
|
| |
This makes it much more efficient.
llvm-svn: 34618
|
| |
|
|
| |
llvm-svn: 34617
|
| |
|
|
|
|
|
| |
2. Implement the trunc, sext, and zext operations.
3. Improve fromString to accept negative values as input.
llvm-svn: 34616
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
void foo(short);
void bar(unsigned short A) {
foo(A);
}
into:
_bar:
subq $8, %rsp
movswl %di, %edi
call _foo
addq $8, %rsp
ret
instead of:
_bar:
subq $8, %rsp
call _foo
addq $8, %rsp
ret
Testcase here: test/CodeGen/X86/x86-64-shortint.ll
llvm-svn: 34615
|
| |
|
|
| |
llvm-svn: 34614
|
| |
|
|
|
|
| |
night: fastcc returns should only go in XMM0 if we have SSE2 or above.
llvm-svn: 34613
|
| |
|
|
| |
llvm-svn: 34612
|
| |
|
|
| |
llvm-svn: 34611
|
| |
|
|
| |
llvm-svn: 34610
|
| |
|
|
| |
llvm-svn: 34609
|
| |
|
|
|
|
|
|
|
|
| |
exprs hanging off a global, even if the global is not otherwise dead. This
requires some tricky iterator gymnastics.
This implements Transforms/GlobalOpt/constantexpr-dangle.ll by deleting a
constantexpr that made it appear that the address of the function was taken.
llvm-svn: 34608
|
| |
|
|
| |
llvm-svn: 34607
|
| |
|
|
| |
llvm-svn: 34606
|
| |
|
|
| |
llvm-svn: 34605
|
| |
|
|
| |
llvm-svn: 34604
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
2. Move comments for methods to .h file, delete them in .cpp file.
3. All places that were doing manual clear of high order bits now call the
clearUnusedBits() method in order to not depend on undefined behavior
of the >> operator when the number of bits shifted equals the word size.
4. Reduced # of loc by using the new result of clearUnusedBits() method.
5. Simplified logic (decreased indentation) in a few places.
6. Added code comments to larger functions that needed them.
7. Added FIXME notes about weak implementations of things (e.g. bit-by-bit
shift right is sub-optimal).
llvm-svn: 34603
|
| |
|
|
|
|
|
|
|
|
|
| |
when the bit size is equal to the word size. This happens to work out okay
on x86, but might not on other platforms. The change just detects when
there are no bits to clear (because BitWidth is a multiple of the word size)
and returns early.
Also, move some comments from .cpp file into header.
llvm-svn: 34602
|
| |
|
|
|
|
|
|
|
| |
external symbols and global addresses. Add the missing ones.
one important workaround: PPCISD::CALL is matched by both PPCcall_ELF
and PPCcall_Macho, disable the _ELF patterns for now.
llvm-svn: 34601
|
| |
|
|
| |
llvm-svn: 34600
|
| |
|
|
| |
llvm-svn: 34599
|
| |
|
|
| |
llvm-svn: 34598
|
| |
|
|
|
|
| |
last kill should be updated accordingly.
llvm-svn: 34597
|
| |
|
|
| |
llvm-svn: 34596
|
| |
|
|
| |
llvm-svn: 34595
|
| |
|
|
|
|
| |
IsKill marker.
llvm-svn: 34594
|
| |
|
|
| |
llvm-svn: 34593
|
| |
|
|
|
|
| |
This implements CodeGen/X86/fp-stack-ret.ll:test[23]
llvm-svn: 34592
|
| |
|
|
| |
llvm-svn: 34591
|
| |
|
|
| |
llvm-svn: 34590
|