Chris Lattner
6c07f30dbe
Add a nan, stop testing isnan
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14183 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 21:29:01 +00:00
Brian Gaeke
d6a1053745
Fix thinko in visitor... ShiftInsts should currently be delegated
...
to visitBinaryOperator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14182 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 21:09:46 +00:00
Chris Lattner
d1cd328560
Do not dereference end iterators. It's really bad for the asmwriter's health.
...
This possibly fixes PR370
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14181 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 21:07:32 +00:00
Brian Gaeke
f405280acb
I think we'll use the standard lowering passes for now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14179 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 20:37:12 +00:00
Brian Gaeke
e14e338724
Fix bug generating code for void call instructions: don't call
...
getReg() on void value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14178 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 20:06:32 +00:00
Brian Gaeke
5eb64744d0
Squash a warning from the Solaris assembler by aligning the stack
...
on a double-word boundary instead of a single-word boundary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14177 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 19:53:10 +00:00
Brian Gaeke
446ae11d7c
Allow special-casing of operand printing based on opcode. Print
...
non-register, non-immed. arguments to SETHI and OR using %hi() and
%lo() respectively.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14176 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 19:52:59 +00:00
Brian Gaeke
9df92825e1
Support constant GEP expressions.
...
Support copying long constants to register pairs.
Support copying ConstantPointerNulls and ConstantPointerRefs to registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14175 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-15 19:16:07 +00:00
Misha Brukman
8238c27371
The correct prototype is `int atoi(CONST char*)'. Unbroke AIX build.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14173 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-14 16:30:05 +00:00
Misha Brukman
5478c7a18a
Add file comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14172 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-14 15:13:59 +00:00
Brian Gaeke
fda2cce3bf
Quick hack to get this file compiling again on Mac OS X. The right thing to do
...
is write an autoconf macro that checks whether __isnan or isnan actually works
**using the C++ compiler after #include <cmath>**, instead of doing it the easy
way with AC_CHECK_FUNCS().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14171 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-14 06:33:19 +00:00
Brian Gaeke
f3210d2c53
Make -print-machineinstrs even stronger. You get to see the final code after
...
peepholing, and make it work the same way in the JIT as in LLC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14170 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-14 05:05:45 +00:00
Reid Spencer
4a4bfd87a4
Get rid of "might be uninitialized" warnings when compiling with GCC 3.3.2
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14169 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-13 19:17:49 +00:00
Alkis Evlogimenos
df497317f1
Add constant folding capabilities to the isunordered intrinsic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14168 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-13 01:23:56 +00:00
Alkis Evlogimenos
26bbe93ec9
Really add the docs this time :-)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14167 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-13 01:16:15 +00:00
Alkis Evlogimenos
ac700ca926
Make assertions more consistent with the rest of the intrinsic
...
function verification and make it a requirement that both arguments to
llvm.isunordered are of the same type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14165 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-13 00:55:26 +00:00
Alkis Evlogimenos
9685372062
Add the isunordered intrinsic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14159 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-12 19:19:14 +00:00
Reid Spencer
06a3db0b0f
Reduce the number of columns in the alpha index to 4 so that it fits
...
on a 1280x1024 screen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14158 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-12 14:46:02 +00:00
Chris Lattner
51a54e6f1b
It is no longer 2001
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14157 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 21:12:22 +00:00
Brian Gaeke
253231eb39
Don't trim @PrevDays (causing an error) if it isn't long enough.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14156 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 19:55:30 +00:00
Misha Brukman
6e404b897b
Fix grammar: 's is for possessive only.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14155 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 16:50:21 +00:00
Reid Spencer
1cf5024de1
Implement tracking of bytecode instruction size and the number of long
...
instructions generated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14154 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 15:10:38 +00:00
Reid Spencer
f6d023312f
Add two options to the program:
...
-release causes ENABLE_OPTIMIZED=1 to be added to the make line so that
the test runs against optimized code.
-pedantic causes the CompileOptimizeOpts variable to be overridden to
add several additional warnings not picked up by -Wall. This
should help catch additional programming faux pas. See the diff
for the specific details.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14153 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 07:06:22 +00:00
Chris Lattner
7f7bbc2fdb
Fix fallout from getOffsetOfLocalArea() being negated. Debugging dumps were being
...
printed incorrectly, and we were reserving 8 extra bytes of stack space for functions
on X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14152 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 06:37:11 +00:00
Chris Lattner
9f35196fc2
llvm.isnan doesn't access memory
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14151 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 06:17:13 +00:00
Chris Lattner
cf11035a6f
Constant fold the isnan intrinsic
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14150 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 06:16:23 +00:00
Chris Lattner
7ba02f1115
Add tests for isnan
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14149 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 06:16:13 +00:00
Chris Lattner
01cdb1b367
By far, one of the most common uses of isnan is to make 'isunordered'
...
comparisons. In an 'isunordered' predicate, which looks like this at
the LLVM level:
%a = call bool %llvm.isnan(double %X)
%b = call bool %llvm.isnan(double %Y)
%COM = or bool %a, %b
We used to generate this code:
fxch %ST(1)
fucomip %ST(0), %ST(0)
setp %AL
fucomip %ST(0), %ST(0)
setp %AH
or %AL, %AH
With this patch, we generate this code:
fucomip %ST(0), %ST(1)
fstp %ST(0)
setp %AL
Which should make alkis happy. Tested as X86/compare_folding.llx:test1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14148 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 05:33:49 +00:00
Chris Lattner
c31ae50c04
Test that the X86 backend is only emitting one fucom instruction
...
for each 'COM =' line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14147 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 05:30:34 +00:00
Chris Lattner
57790422ca
Fix bug in previous checkin
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14146 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 05:22:44 +00:00
Chris Lattner
899dbdcdb0
No really, these are dead now
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14145 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:50:14 +00:00
Chris Lattner
0ca2c8e02c
Now that compare instructions aren't lumped in with the other twoargfp instructions,
...
we can get rid of the FpUCOM/FpUCOMi pseudo instructions, which makes stuff simpler
and faster.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14144 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:49:02 +00:00
Chris Lattner
ab8deccb82
Introduce a new FP instruction type to separate the compare cases from the
...
twoarg cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14143 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:41:24 +00:00
Chris Lattner
00cda7a32d
Bug fixed, new feature
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14142 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:35:21 +00:00
Chris Lattner
b4fe76cbb5
Add direct support for the isnan intrinsic, implementing test/Regression/CodeGen/X86/isnan.llx
...
testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14141 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:31:10 +00:00
Chris Lattner
665e661384
Add support for the setp instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14140 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:30:06 +00:00
Chris Lattner
d62d5d7e5b
Split compare instruction handling OUT of handleTwoArgFP into handleCompareFP.
...
This makes the code much simpler, and the two cases really do belong apart.
Once we do it, it's pretty obvious how flawed the logic was for A != A case,
so I fixed it (fixing PR369).
This also uses freeStackSlotAfter instead of inserting an fxchg then
popStackAfter'ing in the case where there is a dead result (unlikely, but
possible), producing better code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14139 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 04:25:06 +00:00
Reid Spencer
431c8767d9
Change tags rule to pipe output from find through etags command so that it
...
doesn't break on machines with limited command line lengths.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14138 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 03:10:27 +00:00
Reid Spencer
8a9a3706ff
Revert an unneeded interface change to Instruction.h
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14137 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 03:06:43 +00:00
Chris Lattner
4d091e0a52
Testcase for PR369
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14136 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:59:47 +00:00
Chris Lattner
a32579b8f8
Check to make sure that isnan doesn't require calling a function
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14135 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:54:54 +00:00
Chris Lattner
02348caffc
Fix lowering to work correctly
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14134 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:54:02 +00:00
Chris Lattner
86ee776681
I misled Alkis: LLVM should have isnan, not isunordered.
...
isunordered(X, Y) === isnan(X) | isnan(Y)
Remove isunordered, add isnan.
Modernize testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14133 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:29:57 +00:00
Chris Lattner
137cc4fc8c
I misled Alkis: LLVM should have isnan, not isunordered.
...
isunordered(X, Y) === isnan(X) | isnan(Y)
Remove isunordered, add isnan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14132 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:29:43 +00:00
Chris Lattner
320062845b
Document the llvm.isnan intrinsic
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14131 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:28:03 +00:00
Brian Gaeke
11074e3355
Bug fixed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14130 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:15:39 +00:00
Brian Gaeke
51f148f394
Test case for PR368
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14129 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:11:43 +00:00
Brian Gaeke
46bf5afa01
Turn loads of ConstantPointerNulls into loads of zero... don't spill
...
them into the constant pool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14128 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 02:03:48 +00:00
Alkis Evlogimenos
f616f22e81
Add the isunordered intrinsic.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14127 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 01:08:18 +00:00
Alkis Evlogimenos
fd39b30a7a
Add feature test for llvm intrinsics. It currently contains only the "isunordered" intrinsic
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14126 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-11 01:06:40 +00:00