Chris Lattner
5384b38ccc
1. If a double FP constant must be put into a constant pool, but it can be
...
precisely represented as a float, put it into the constant pool as a
float.
2. Use the cbw/cwd/cdq instructions instead of an explicit SAR for signed
division.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19291 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-05 16:30:14 +00:00
Chris Lattner
0539313fe5
Minor optimization to allocate R8 registers in a better order.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19289 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-05 16:09:16 +00:00
Jeff Cohen
1c32f79a82
Revert elimination of global variable hack... still needed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19273 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-03 16:34:19 +00:00
Chris Lattner
10197ff5cd
ADC and IMUL are also commutable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19264 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-03 01:27:59 +00:00
Chris Lattner
35e5c7c186
This hunk:
...
- unsigned TrueValue = getReg(TrueVal, BB, BB->begin());
+ unsigned TrueValue = getReg(TrueVal);
Fixes the PPC regressions from last night.
The other hunk is just a clarity improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19263 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 23:07:31 +00:00
Jeff Cohen
40296bdf27
Eliminate the use of the global variable hack in the X86 target that was used
...
to get Visual Studio to link in X86.lib to the executables that need it. There
is another way of doing it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19252 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 04:23:12 +00:00
Chris Lattner
5aee0b97aa
Disable 2->3 address promotion of add and inc instructions to LEA's. In
...
addition to being three address, LEA's don't set the flags.
This fixes 186.crafty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19251 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 04:18:17 +00:00
Chris Lattner
5dd350defd
Add a new method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19249 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:38:18 +00:00
Chris Lattner
eb96ec52ff
Add support for SETNPr to lower to memory form.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19248 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:37:46 +00:00
Chris Lattner
bcea4d6f28
Implement the convertToThreeAddress method, add support for inverting JP/JNP
...
branches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19247 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:37:07 +00:00
Chris Lattner
cc65beeb39
Two changes here:
...
1. Add new instructions for checking parity flags: JP, JNP, SETP, SETNP.
2. Set the isCommutable and isPromotableTo3Address bits on several
instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19246 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:35:46 +00:00
Chris Lattner
273f2280f2
Add some bits that can be set for instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19241 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 02:27:48 +00:00
Chris Lattner
6dec0b09d5
Fix a FIXME: Select instructions on longs were miscompiled.
...
While we're at it, improve codegen of select instructions. For this
testcase:
int %test(bool %C, int %A, int %B) {
%D = select bool %C, int %A, int %B
ret int %D
}
We used to generate this code:
_test:
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
b .LBB_test_3 ;
.LBB_test_2: ;
or r5, r4, r4
.LBB_test_3: ;
or r3, r5, r5
blr
Now we emit:
_test:
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
or r4, r5, r5
.LBB_test_2: ;
or r3, r4, r4
blr
-Chris
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19214 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-01 16:10:12 +00:00
Chris Lattner
e7f96c515e
Substantially improve the code generated by non-folded setcc instructions.
...
In particular, instead of compiling this:
bool %test(int %A, int %B) {
%C = setlt int %A, %B
ret bool %C
}
to this:
test:
save %sp, -96, %sp
subcc %i0, %i1, %g0
bl .LBBtest_1 !
nop
ba .LBBtest_2 !
nop
.LBBtest_1: !
or %g0, 1, %i0
ba .LBBtest_3 !
nop
.LBBtest_2: !
or %g0, 0, %i0
ba .LBBtest_3 !
nop
.LBBtest_3: !
restore %g0, %g0, %g0
retl
nop
We now compile it to this:
test:
save %sp, -96, %sp
subcc %i0, %i1, %g0
or %g0, 1, %i0
bl .LBBtest_2 !
nop
.LBBtest_1: !
or %g0, %g0, %i0
.LBBtest_2: !
restore %g0, %g0, %g0
retl
nop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19213 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-01 16:06:57 +00:00
Chris Lattner
f376e5e5f6
Fix PR490
...
Fix testcase CodeGen/CBackend/2004-12-28-LogicalConstantExprs.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19176 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-29 04:00:09 +00:00
Chris Lattner
6b4f501470
Remove unused enum value
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19024 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-17 22:41:46 +00:00
Chris Lattner
84c556e92a
Remove unused #include
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19021 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-17 19:07:04 +00:00
Chris Lattner
8cdbc35216
Change the sentinal
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19007 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-17 00:46:51 +00:00
Chris Lattner
11cf7aa775
Create a stack slot for the return address lazily instead of eagerly. This
...
save small amounts of time for functions that don't call llvm.returnaddress
or llvm.frameaddress (which is almost all functions).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19006 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-17 00:07:46 +00:00
Tanya Lattner
acd6782470
Chris is a pain ;) Removing reassociate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19005 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 23:16:16 +00:00
Tanya Lattner
78943f7edf
Removing commented out lines.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19004 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 23:13:16 +00:00
Tanya Lattner
9fde12b747
Removed LICM and GCSE.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19003 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 23:07:36 +00:00
Chris Lattner
7f2b41e316
Remove dead #include
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18994 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 19:32:38 +00:00
Chris Lattner
84b85c8262
Adjust to changes in asmwriter filenames
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18987 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 17:33:24 +00:00
Chris Lattner
47f9dd14b2
Specify all of the targets built.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18985 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 17:26:44 +00:00
Chris Lattner
42c7a16955
Use the rules in Makefile.rules to build SparcV9GenCodeEmitter.inc instead
...
of custom rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18984 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 16:47:56 +00:00
Chris Lattner
24d5d5d90b
Fix header
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18983 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 16:47:03 +00:00
Chris Lattner
be686a8897
Factor out common .td file chunks.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18982 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-16 16:31:57 +00:00
Chris Lattner
3e3b6f7a46
Fix PR485, instead of emitting zero sized arrays, emit arrays of size 1.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18974 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-15 23:13:15 +00:00
Brian Gaeke
5761805d27
The mystery of Olden/tsp solved, and more opportunities for speedup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18932 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-14 09:10:10 +00:00
Brian Gaeke
6b260e2638
Get rid of shifts by zero in most cases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18931 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-14 08:21:02 +00:00
Chris Lattner
395fd5949b
When generating code for X86 targets, make sure the fp control word is set
...
to 64-bit precision, not 80 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18915 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-13 21:52:52 +00:00
Chris Lattner
e171d5c812
Add some notes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18911 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-13 20:13:10 +00:00
Chris Lattner
c0354c904b
Set the rounding mode for the X86 FPU to 64-bits instead of 80-bits. We
...
don't support long double anyway, and this gives us FP results closer to
other targets.
This also speeds up 179.art from 41.4s to 18.32s, by eliminating a problem
with extra precision that causes an FP == comparison to fail (leading to
extra loop iterations).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18895 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-13 17:23:11 +00:00
Brian Gaeke
a04d959f0c
Add V8 SPEC status.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18844 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-13 00:27:35 +00:00
Chris Lattner
869f45937b
Fix Regression/CodeGen/PowerPC/2004-12-12-ZeroSizeCommon.ll, and all programs
...
when compiled with debug information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18835 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 20:36:19 +00:00
Chris Lattner
8363ad6bfc
CSE calls to getTypeSize.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18833 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 20:31:00 +00:00
Chris Lattner
3ea78c4276
Use the target triple to pick this target.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18830 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 17:40:28 +00:00
Brian Gaeke
367c137f6a
Complete the list of MultiSource failures.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18826 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 08:22:11 +00:00
Brian Gaeke
326f378a8f
hbd should be working now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18824 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 07:42:59 +00:00
Brian Gaeke
f731be0dd5
Finally enable the setcc-branch folding code.
...
Also, fix a bug where ubyte 255 would sometimes be output as -1. This
was afflicting hbd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18823 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 07:42:58 +00:00
Brian Gaeke
81cf150b5d
Add (currently disabled) code for canFoldSetCC
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18820 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 06:22:30 +00:00
Brian Gaeke
6a8c46cde3
Add stubs for setcc-branch folding support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18818 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-12 06:01:26 +00:00
Brian Gaeke
74be3a5794
Print llvm code one function at a time.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18805 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 22:17:07 +00:00
Brian Gaeke
b3a86a6d49
JIT should print LLVM each function before selecting instructions for it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18803 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 18:41:09 +00:00
Brian Gaeke
56c5d7369b
Bools are *also* not ints. Sigh. Furthermore, most of the TargetMachine
...
ctor parameters can be defaulted.
Print the transformed llvm code input to the instruction selector
when -print-machineinstrs is on, just like V9.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18794 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:04 +00:00
Brian Gaeke
4658ba13a8
Look for many more moves to fold (previously, we only
...
*or g0, x add g0, x recognized * as a move)
or x, g0 add x, g0
or 0, x add 0, x
or x, 0 add x, 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18793 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:03 +00:00
Brian Gaeke
4f70b63ebc
Make GEPs not suck so much:
...
* Don't emit the Index * ElementSize multiply if Index is a constant.
* Use a shift, not a multiply, if ElementSize is 1/2/4/8.
* If ElementSize fits in the immediate field of SMUL, then put it there.
Fix a bug where struct offsets might be truncated (ConstantSInt::get is
now used instead of ConstantInt::get).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18792 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:02 +00:00
Brian Gaeke
9d6ffb47b4
Update lists of failing benchmarks, including info on which
...
ones are failing in cbe.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18791 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-11 05:19:01 +00:00
Brian Gaeke
5aefa8a6fe
Move -lowerselect later in the chain; some select instructions were
...
slipping through into the instruction selector, which can't deal with
them yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18758 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-10 08:39:30 +00:00