Alkis Evlogimenos
dd550dc9cd
Add constant folding capabilities to the isunordered intrinsic.
...
llvm-svn: 14168
2004-06-13 01:23:56 +00:00
Alkis Evlogimenos
dcf5341b61
Really add the docs this time :-)
...
llvm-svn: 14167
2004-06-13 01:16:15 +00:00
Alkis Evlogimenos
173e9e832c
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.
llvm-svn: 14165
2004-06-13 00:55:26 +00:00
Alkis Evlogimenos
9b28aef6cb
Add the isunordered intrinsic.
...
llvm-svn: 14159
2004-06-12 19:19:14 +00:00
Reid Spencer
5310ad2ad5
Reduce the number of columns in the alpha index to 4 so that it fits
...
on a 1280x1024 screen!
llvm-svn: 14158
2004-06-12 14:46:02 +00:00
Chris Lattner
a8fd205112
It is no longer 2001
...
llvm-svn: 14157
2004-06-11 21:12:22 +00:00
Brian Gaeke
a4caf3f4f1
Don't trim @PrevDays (causing an error) if it isn't long enough.
...
llvm-svn: 14156
2004-06-11 19:55:30 +00:00
Misha Brukman
4fdc92647b
Fix grammar: 's is for possessive only.
...
llvm-svn: 14155
2004-06-11 16:50:21 +00:00
Reid Spencer
efdd7cd3ac
Implement tracking of bytecode instruction size and the number of long
...
instructions generated.
llvm-svn: 14154
2004-06-11 15:10:38 +00:00
Reid Spencer
1c1bf98896
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.
llvm-svn: 14153
2004-06-11 07:06:22 +00:00
Chris Lattner
84269aa91e
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.
llvm-svn: 14152
2004-06-11 06:37:11 +00:00
Chris Lattner
8dd2380de4
llvm.isnan doesn't access memory
...
llvm-svn: 14151
2004-06-11 06:17:13 +00:00
Chris Lattner
66790212ba
Constant fold the isnan intrinsic
...
llvm-svn: 14150
2004-06-11 06:16:23 +00:00
Chris Lattner
81db12e7d7
Add tests for isnan
...
llvm-svn: 14149
2004-06-11 06:16:13 +00:00
Chris Lattner
3a8e675c03
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
llvm-svn: 14148
2004-06-11 05:33:49 +00:00
Chris Lattner
e010d3c940
Test that the X86 backend is only emitting one fucom instruction
...
for each 'COM =' line.
llvm-svn: 14147
2004-06-11 05:30:34 +00:00
Chris Lattner
f78e3e7f63
Fix bug in previous checkin
...
llvm-svn: 14146
2004-06-11 05:22:44 +00:00
Chris Lattner
7d8093efb1
No really, these are dead now
...
llvm-svn: 14145
2004-06-11 04:50:14 +00:00
Chris Lattner
a8e603b719
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.
llvm-svn: 14144
2004-06-11 04:49:02 +00:00
Chris Lattner
b050f778ca
Introduce a new FP instruction type to separate the compare cases from the
...
twoarg cases.
llvm-svn: 14143
2004-06-11 04:41:24 +00:00
Chris Lattner
f9117d37fd
Bug fixed, new feature
...
llvm-svn: 14142
2004-06-11 04:35:21 +00:00
Chris Lattner
edb06042b9
Add direct support for the isnan intrinsic, implementing test/Regression/CodeGen/X86/isnan.llx
...
testcase
llvm-svn: 14141
2004-06-11 04:31:10 +00:00
Chris Lattner
4c8b57ea31
Add support for the setp instructions
...
llvm-svn: 14140
2004-06-11 04:30:06 +00:00
Chris Lattner
c66e996765
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.
llvm-svn: 14139
2004-06-11 04:25:06 +00:00
Reid Spencer
810a005b40
Change tags rule to pipe output from find through etags command so that it
...
doesn't break on machines with limited command line lengths.
llvm-svn: 14138
2004-06-11 03:10:27 +00:00
Reid Spencer
7172b26a18
Revert an unneeded interface change to Instruction.h
...
llvm-svn: 14137
2004-06-11 03:06:43 +00:00
Chris Lattner
6fc9e8dd94
Testcase for PR369
...
llvm-svn: 14136
2004-06-11 02:59:47 +00:00
Chris Lattner
c90dfb64dd
Check to make sure that isnan doesn't require calling a function
...
llvm-svn: 14135
2004-06-11 02:54:54 +00:00
Chris Lattner
94a66c3038
Fix lowering to work correctly
...
llvm-svn: 14134
2004-06-11 02:54:02 +00:00
Chris Lattner
145f2e2936
I misled Alkis: LLVM should have isnan, not isunordered.
...
isunordered(X, Y) === isnan(X) | isnan(Y)
Remove isunordered, add isnan.
Modernize testcase
llvm-svn: 14133
2004-06-11 02:29:57 +00:00
Chris Lattner
b07bf147cd
I misled Alkis: LLVM should have isnan, not isunordered.
...
isunordered(X, Y) === isnan(X) | isnan(Y)
Remove isunordered, add isnan.
llvm-svn: 14132
2004-06-11 02:29:43 +00:00
Chris Lattner
99dc0a4bda
Document the llvm.isnan intrinsic
...
llvm-svn: 14131
2004-06-11 02:28:03 +00:00
Brian Gaeke
b368ff8ad4
Bug fixed.
...
llvm-svn: 14130
2004-06-11 02:15:39 +00:00
Brian Gaeke
270a6ba455
Test case for PR368
...
llvm-svn: 14129
2004-06-11 02:11:43 +00:00
Brian Gaeke
c5bb88c934
Turn loads of ConstantPointerNulls into loads of zero... don't spill
...
them into the constant pool.
llvm-svn: 14128
2004-06-11 02:03:48 +00:00
Alkis Evlogimenos
1ae8b4e7c4
Add the isunordered intrinsic.
...
llvm-svn: 14127
2004-06-11 01:08:18 +00:00
Alkis Evlogimenos
792243f603
Add feature test for llvm intrinsics. It currently contains only the "isunordered" intrinsic
...
llvm-svn: 14126
2004-06-11 01:06:40 +00:00
Reid Spencer
b2f8a70990
Updated the BytecodeAnalysis data structure to contain additional fields
...
needed for analysis of individual functions.
llvm-svn: 14125
2004-06-10 22:28:11 +00:00
Reid Spencer
aa6ccbcdee
Added an isPhiNode(unsigned) static method to determine if an opcode is
...
a PhiNode or not. Needed by Bytecode Analyzer.
llvm-svn: 14124
2004-06-10 22:27:10 +00:00
Reid Spencer
35e67bbc91
Remove tabs.
...
llvm-svn: 14123
2004-06-10 22:03:00 +00:00
Reid Spencer
024d735433
Implement detailed function level data collection and reporting.
...
llvm-svn: 14122
2004-06-10 22:00:54 +00:00
Reid Spencer
4a21e2053a
Adjust prototypes to new Handler interface.
...
llvm-svn: 14121
2004-06-10 22:00:29 +00:00
Reid Spencer
11466e62a7
Make the parser deal with functions instead of just function types.
...
llvm-svn: 14120
2004-06-10 21:59:20 +00:00
Reid Spencer
1cdaa55cda
Clean up documentation and naming of variables.
...
llvm-svn: 14119
2004-06-10 18:38:44 +00:00
Misha Brukman
d3374cf482
Remove extra space.
...
llvm-svn: 14117
2004-06-10 12:51:35 +00:00
Reid Spencer
4dcaebd069
Doxygenize a comment.
...
llvm-svn: 14115
2004-06-10 08:27:00 +00:00
Reid Spencer
49b2fca671
Made detailed output the default and changed -details option to -nodetails.
...
llvm-svn: 14114
2004-06-10 08:24:42 +00:00
Reid Spencer
ce1adf1ff0
Implemented the bulk of the functionality. Cleaned up the code.
...
llvm-svn: 14113
2004-06-10 08:09:13 +00:00
Brian Gaeke
e24e40500f
Allow dates with slashes in them in $DateRE.
...
Don't match on $Filename (which will be unset) if we hit 'UNMATCHABLE:'.
llvm-svn: 14112
2004-06-10 07:44:28 +00:00
Chris Lattner
71f351ddf9
Fix the prolog epilog code inserter to match the documentation and support
...
targets whose stack grows up.
Patch contributed by Vladimir Prus
llvm-svn: 14111
2004-06-10 06:23:35 +00:00