Evan Cheng
d3713a9b9a
Prevent folding of a node with multiple uses if the node already folds a load!
...
Here is an example where the load ended up being done twice:
%A = global uint 0
uint %test(uint %B, ubyte %C) {
%tmp = load uint *%A;
%X = shl uint %tmp, ubyte %C
%Cv = sub ubyte 32, %C
%Y = shr uint %B, ubyte %Cv
%Z = or uint %Y, %X
store uint %Z, uint* %A
ret uint %Z
}
==>
subl $4, %esp
movl %ebx, (%esp)
movl 8(%esp), %edx
movl A, %eax
movb 12(%esp), %bl
movb %bl, %cl
shldl %cl, %edx, %eax
movb %bl, %cl
shldl %cl, %edx, A
movl (%esp), %ebx
addl $4, %esp
ret
llvm-svn: 25471
2006-01-20 01:11:03 +00:00
Robert Bocchino
40c6c91f56
ConstantFoldLoadThroughGEPConstantExpr wasn't handling pointers to
...
packed types correctly.
llvm-svn: 25470
2006-01-19 23:53:23 +00:00
Evan Cheng
d2c0ccedd3
Didn't mean to commit the last one.
...
llvm-svn: 25469
2006-01-19 23:27:08 +00:00
Evan Cheng
e0f6454c5e
Added i16 SH{L|R}D patterns.
...
llvm-svn: 25468
2006-01-19 23:26:24 +00:00
Chris Lattner
3158146649
add support for ConstantPacked to the linker
...
llvm-svn: 25467
2006-01-19 23:15:58 +00:00
Chris Lattner
38c4921912
Don't include generated lexer .cpp files.
...
llvm-svn: 25466
2006-01-19 22:01:51 +00:00
Evan Cheng
4a3ee9d5a6
Bug fix. Flag operand number may be calculated incorrectly.
...
llvm-svn: 25465
2006-01-19 21:57:10 +00:00
Andrew Lenharth
96520cb68d
typo
...
llvm-svn: 25464
2006-01-19 21:10:38 +00:00
Andrew Lenharth
9abecccdcb
nasty nasty patterns
...
llvm-svn: 25463
2006-01-19 20:49:37 +00:00
Duraid Madina
069b517767
fix boolean XOR (which fixes up comparisons..)
...
llvm-svn: 25462
2006-01-19 15:18:56 +00:00
Duraid Madina
4b75614c9c
BOOM!
...
llvm-svn: 25460
2006-01-19 14:14:11 +00:00
Duraid Madina
08771721f9
click click
...
llvm-svn: 25459
2006-01-19 14:13:11 +00:00
Evan Cheng
f168c680e5
Use pattern information to determine whether the use expects this
...
instruction to produce a result. e.g MUL8m, the instruction does not
produce a explicit result. However it produces an implicit result in
AL which would be copied to a temp. The root operator of the matching
pattern is a mul so the use would expect it to produce a result.
llvm-svn: 25458
2006-01-19 10:12:58 +00:00
Evan Cheng
680a8e070b
Avoid generating a redundant setcc.
...
llvm-svn: 25457
2006-01-19 08:52:46 +00:00
Reid Spencer
585019f629
For PR696:
...
Don't do floor->floorf conversion if floorf is not available. This checks
the compiler's host, not its target, which is incorrect for cross-compilers
Not sure that's important as we don't build many cross-compilers.
llvm-svn: 25456
2006-01-19 08:36:56 +00:00
Duraid Madina
1946b2ff30
fix calls that return f32
...
llvm-svn: 25455
2006-01-19 08:31:51 +00:00
Reid Spencer
ae31d4858b
Make sure that libm is used during config tests so that ceil, floor, and
...
friends are actually detected.
llvm-svn: 25454
2006-01-19 08:31:08 +00:00
Reid Spencer
effe3e54e4
For PR696:
...
Add checks for ceil, ceilf, floor, and floorf
llvm-svn: 25453
2006-01-19 08:22:40 +00:00
Chris Lattner
6e4d8741d5
Implement casts.ll:test26: a cast from float -> double -> integer, doesn't
...
need the float->double part.
llvm-svn: 25452
2006-01-19 07:40:22 +00:00
Chris Lattner
ad5c08f99e
Add a new testcase for an eliminable cast
...
llvm-svn: 25451
2006-01-19 07:39:20 +00:00
Chris Lattner
b15de45374
implement support for f32 arguments past the first 6 words
...
llvm-svn: 25450
2006-01-19 07:22:29 +00:00
Reid Spencer
7af5947344
This test passes now.
...
llvm-svn: 25449
2006-01-19 07:15:47 +00:00
Reid Spencer
f2454f5cd2
1. Identify bytecode modules that have upgraded intrinsics by setting a
...
boolean flag if we read a function prototype that needs upgrading.
2. Don't upgrade the CallInst instruction until after its been inserted
into the basic block, and only if we know that we have seen an
upgraded intrinsic function.
llvm-svn: 25448
2006-01-19 07:02:16 +00:00
Reid Spencer
ff84512a3f
Don't forget about casting the result of an upgraded call to an intrinsic
...
in the case where it needs to cast back to a signed type.
llvm-svn: 25447
2006-01-19 07:00:29 +00:00
Reid Spencer
c2e3662a89
1. Documentation upgrade.
...
2. Have UpgradeInstrinicCall return an Instruction* instead of a CallInst*
and return the needed CastInst* if the result of the upgraded call needs
to be casted back to a signed type.
llvm-svn: 25446
2006-01-19 06:59:26 +00:00
Reid Spencer
997e2d7b3c
Add a flag to identify bytecode files that have intrinsic functions that
...
need to be upgraded.
llvm-svn: 25445
2006-01-19 06:57:58 +00:00
Evan Cheng
cfe9d47379
adc and sbb need an incoming flag to ensure it reads the carry flag
...
from add / sub.
llvm-svn: 25444
2006-01-19 06:53:20 +00:00
Chris Lattner
8d6787c392
make this work for Reid, who renamed his CVS module dir :)
...
llvm-svn: 25443
2006-01-19 06:49:46 +00:00
Chris Lattner
49bc00e644
new testcase the autoupgrader in the bc reader fails to handle
...
llvm-svn: 25442
2006-01-19 06:15:34 +00:00
Reid Spencer
8fd4d8e166
Make get_suffix faster by using a switch on getTypeID rather than a series
...
of comparisons on the various type objects.
llvm-svn: 25441
2006-01-19 05:37:27 +00:00
Evan Cheng
3f6b496700
Another typo
...
llvm-svn: 25440
2006-01-19 04:54:52 +00:00
Chris Lattner
60bc56e930
add a note
...
llvm-svn: 25439
2006-01-19 02:09:38 +00:00
Evan Cheng
be2cf5f948
Two peepholes:
...
(or (x >> c) | (y << (32 - c))) ==> (shrd x, y, c)
(or (x << c) | (y >> (32 - c))) ==> (shld x, y, c)
llvm-svn: 25438
2006-01-19 01:56:29 +00:00
Evan Cheng
49fa8f2cea
Prevent unnecessary CopyToReg when the same HW register appears in two spots
...
in the pattern.
llvm-svn: 25437
2006-01-19 01:55:45 +00:00
Evan Cheng
ddb170b73e
Didn't mean to check that in.
...
llvm-svn: 25436
2006-01-19 01:52:56 +00:00
Evan Cheng
aebece2f7b
A obvious typo
...
llvm-svn: 25435
2006-01-19 01:46:14 +00:00
Reid Spencer
fd0ae0047a
Make sure intrinsic auto-upgrade is invoked correctly.
...
llvm-svn: 25434
2006-01-19 01:21:04 +00:00
Reid Spencer
e14cf26e04
Don't accept the ctpop, cttz, or ctlz intrinsics with signed arguments. The
...
interface requires unsigned arguments.
llvm-svn: 25433
2006-01-19 01:20:03 +00:00
Reid Spencer
7ee9a0016a
Add a new interface function to AutoUpgrade for simultaneously upgrading
...
the Function and the CallInst: UpgradeCallsToIntrinsic(Function*). Also,
re-factor the AutoUpgrade implementation to eliminate some duplication of
code.
llvm-svn: 25432
2006-01-19 01:18:29 +00:00
Reid Spencer
21bfb7f6cb
Expand test to cover the non-overloaded variants of the arithmetic and
...
floating point intrinsics.
llvm-svn: 25431
2006-01-19 01:17:06 +00:00
Chris Lattner
d5a7ceda96
If not internalizing, don't mark llvm.global[cd]tors const, as a fix for a
...
hypothetical future boog.
llvm-svn: 25430
2006-01-19 00:46:54 +00:00
Chris Lattner
197d33ce21
Don't internalize llvm.global[cd]tor unless there are uses of it. This
...
unbreaks front-ends that don't use __main (like the new CFE).
llvm-svn: 25429
2006-01-19 00:40:39 +00:00
Andrew Lenharth
c7a7422412
was ignoring the legalized chain in this case, fixed SPASS on alpha
...
llvm-svn: 25428
2006-01-18 23:19:08 +00:00
Andrew Lenharth
00b74b6d92
a reduced test case, the GlobalAddress is never legalized
...
llvm-svn: 25427
2006-01-18 22:59:33 +00:00
Nate Begeman
6b2bebd70a
Get rid of code in the DAGCombiner that is duplicated in SelectionDAG.cpp
...
Now all constant folding in the code generator is in one place.
llvm-svn: 25426
2006-01-18 22:35:16 +00:00
Chris Lattner
9bc0f6cd90
Temporary work around for a libcall insertion bug: If a target doesn't
...
support FSIN/FCOS nodes, do not lower sin/cos to them.
llvm-svn: 25425
2006-01-18 21:50:14 +00:00
Chris Lattner
f7623e2065
Make sure that cloning a module clones its target triple and dependent
...
library list as well. This should help bugpoint.
llvm-svn: 25424
2006-01-18 21:32:45 +00:00
Chris Lattner
23da2dc2ac
Don't assert on 'select_cc SETUO'
...
llvm-svn: 25423
2006-01-18 19:42:35 +00:00
Chris Lattner
00a483f966
fix out of date comment
...
llvm-svn: 25422
2006-01-18 19:37:44 +00:00
Chris Lattner
b0d3080ca8
Fix Regression/CodeGen/PowerPC/2006-01-18-InvalidBranchOpcodeAssert.ll
...
llvm-svn: 25421
2006-01-18 19:35:21 +00:00