Chris Lattner
44ad85e0e8
new testcase.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35591 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 06:33:10 +00:00
Chris Lattner
aa43e9f73b
Fix a bug which caused us to never be able to use signed comparisons for
...
equality comparisons of a constant. This allows us to codegen the 'sintzero'
loop in PR1288 as:
LBB1_1: ;cond_next
li r4, 0
addi r2, r2, 1
stw r4, 0(r3)
addi r3, r3, 4
cmpwi cr0, r2, -1
bne cr0, LBB1_1 ;cond_next
instead of:
LBB1_1: ;cond_next
addi r2, r2, 1
li r4, 0
xoris r5, r2, 65535
stw r4, 0(r3)
addi r3, r3, 4
cmplwi cr0, r5, 65535
bne cr0, LBB1_1 ;cond_next
This implements CodeGen/PowerPC/compare-simm.ll, and also cuts 74
instructions out of kc++.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35590 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:59:42 +00:00
Chris Lattner
465b7157d1
new testcase
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35589 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:57:59 +00:00
Chris Lattner
cd1d6d5b03
Wrap long line
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35588 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:48:58 +00:00
Chris Lattner
acf4e074a9
use more obvious function name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35587 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:42:22 +00:00
Chris Lattner
2811f2a670
Treat xor of signbit like an add.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35586 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:41:38 +00:00
Chris Lattner
febabcc02a
add a helper function.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35585 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:41:00 +00:00
Chris Lattner
5c6e2db0c4
simplify (x+c)^signbit as (x+c+signbit), pointed out by PR1288. This implements
...
test/Transforms/InstCombine/xor.ll:test28
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35584 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:36:22 +00:00
Chris Lattner
7a32bc9b9b
creative way to add one.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35583 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:35:08 +00:00
Chris Lattner
028856dc39
my patch fixed the fixme.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35582 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 05:08:54 +00:00
Reid Spencer
443af5b65f
Fix illegal assembly syntax.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35581 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 03:24:47 +00:00
Reid Spencer
338ea097f2
bwsap -> bswap
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35580 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 02:25:19 +00:00
Reid Spencer
8166a6c61d
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35579 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 02:08:35 +00:00
Reid Spencer
8918cb42db
Upgrade the bit count intrinsics to have an i32 result.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35578 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 02:08:05 +00:00
Reid Spencer
f1b18a7bdb
Add a test case to make sure that constant folding of the bit counting
...
intrinsics works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35577 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:45:31 +00:00
Chris Lattner
c995123182
reduce use of std::set
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35576 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:44:59 +00:00
Chris Lattner
d9c3a0d7cc
Various passes before isel split edges and do other CFG-restructuring changes.
...
isel has its own particular features that it wants in the CFG, in order to
reduce the number of times a constant is computed, etc. Make sure that we
clean up the CFG before doing any other things for isel. Doing so can
dramatically reduce the number of split edges and reduce the number of
places that constants get computed. For example, this shrinks
CodeGen/Generic/phi-immediate-factoring.ll from 44 to 37 instructions on X86,
and from 21 to 17 MBB's in the output. This is primarily a code size win,
not a performance win.
This implements CodeGen/Generic/phi-immediate-factoring.ll and PR1296.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35575 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:35:34 +00:00
Chris Lattner
56371694bf
new testcase for PR1296
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35574 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:32:59 +00:00
Lauro Ramos Venancio
9996663fc6
- Divides the comparisons in two types: comparisons that only use N and Z
...
flags (ARMISD::CMPNZ) and comparisons that use all flags (ARMISD::CMP).
- Defines the instructions: TST, TEQ (ARM) and TST (Thumb).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35573 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:30:03 +00:00
Chris Lattner
086f186267
add range version of insert()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35572 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:21:19 +00:00
Reid Spencer
41b213e532
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35571 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:14:00 +00:00
Reid Spencer
de704f36c6
Don't upgrade functions that look like a bswap intrinsic but aren't.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35570 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:13:36 +00:00
Reid Spencer
9277e3bbd3
Let llvm-upgrade upgrade the bswap intrinsic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35569 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:09:19 +00:00
Reid Spencer
2b35c15487
Let llvm-upgrade upgrade bswap intrinsic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35568 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:08:02 +00:00
Reid Spencer
dc1966e6ba
For PR1297:
...
Make sure that the CTPOP result is casted to i32 as the bit counting
intrinsics all return i32 now (this affects CTLZ and CTTZ as well).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35567 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 01:01:49 +00:00
Reid Spencer
86189a4460
Revert the name changes for llvm.bswap to allow (and test) llvm-upgrade of
...
this intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35566 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 00:51:15 +00:00
Reid Spencer
1e70bb6660
Handle upgrade of llvm.bswap.iXX to llvm.bswap.iXX.iXX per new naming
...
rules for overloaded intrinsic functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35565 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 00:50:28 +00:00
Reid Spencer
543ab1d784
Fix some bswap typos that Chris noticed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35564 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-02 00:19:52 +00:00
Chris Lattner
fe35555d09
print the type of an inserted IV in -debug mode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35563 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 22:21:39 +00:00
Anton Korobeynikov
779dff1eee
Add testcase for correct sret handling.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35562 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 22:03:04 +00:00
Chris Lattner
55fc8c4c39
simplify this code, make it work for ap ints
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35561 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 20:57:36 +00:00
Chris Lattner
3e9f1d09c0
fix breakage from last night, simplify code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35560 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 20:49:36 +00:00
Chris Lattner
77c2af6b64
gcc 3.4.4 is known-bad on x86-64
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35559 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 20:14:46 +00:00
Reid Spencer
a13ba7d597
Preview documentation for additional intrinsic functions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35558 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 19:00:37 +00:00
Jeff Cohen
03d7ca14bb
Unbreak VC++ build.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35557 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 18:58:22 +00:00
Reid Spencer
e613555fd9
The bit counting intrinsics return i32 not the operand type. This fixes
...
last night's regression in SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35556 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 18:42:20 +00:00
Zhou Sheng
3a507fda84
Avoid unnecessary APInt construction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35555 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 17:13:37 +00:00
Duncan Sands
320c6e97df
Testcase for the problem worked around in
...
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070319/046204.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35554 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 15:29:02 +00:00
Zhou Sheng
770e1798e1
Remove unused methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35553 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 12:45:33 +00:00
Reid Spencer
497d93e61f
For PR1297:
...
Preview documentation for the llvm.bit.concat intrinsic (yet to be
implemented).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35552 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 08:27:01 +00:00
Evan Cheng
3074d9df96
Add i16 address mode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35551 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 08:06:46 +00:00
Reid Spencer
409e28f9cc
For PR1297:
...
Document changes to bswap and bit counting intrinsics. bswap's name now
requires two types in the suffix per overloaded intrinsic naming rules.
The ctpop, cttz, and ctlz intrinsics were changed to always return i32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35550 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 08:04:23 +00:00
Reid Spencer
c8d0636fef
Mention how to create overloaded intrinsics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35549 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:44:52 +00:00
Reid Spencer
a3c533a716
For PR1297:
...
Update these test cases to use proper signatures for bswap which is now
and overloaded intrinsic. Its name must be of the form llvm.bswap.i32.i32
since both the parameter and the result or of type "iAny". Also, the
bit counting intrinsics changed to always return i32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35548 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:36:28 +00:00
Reid Spencer
e9391fd9b5
For PR1297:
...
Support overloaded intrinsics bswap, ctpop, cttz, ctlz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35547 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:35:23 +00:00
Reid Spencer
a4f9c4d29a
For PR1297:
...
Adjust for changes in the bit counting intrinsics. They all return i32
now so we have to trunc/zext the DAG node accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35546 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:34:11 +00:00
Reid Spencer
577cc32d9a
For PR1297:
...
Change getOperationName to return std::string instead of const char*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35545 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:32:19 +00:00
Reid Spencer
dc722d6516
For PR1297:
...
Implement bswap, ctpop, ctlz, and cttz utilizing the new overloaded
intrinsic feature of tblgen. By defining llvm_int_ty to have an ValueType
of iAny, any intrinsic using that type becomes an overloaded intrinsic.
This signals that a) any integer type could be used for that argument and
b) the intrinsic needs a suffix to match each such argument for the
actual intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35544 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:30:57 +00:00
Reid Spencer
ded5ed873f
For PR1297:
...
Intrinsic functions might need to be generated (if they are overloaded) so
returning a const char* is no longer possible. Change getOperationName to
return a std::string instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35543 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:28:37 +00:00
Reid Spencer
d4d68ba4b8
For PR1297:
...
Change the interface to the getName, getType, getDeclaration methods to
include the "actual" types of the result/arguments. This is necessary to
support overloaded intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35542 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-01 07:26:35 +00:00