Commit Graph

12560 Commits

Author SHA1 Message Date
Chris Lattner 7011d35594 Remove support for llvm.isnan. Alkis wins :)
llvm-svn: 14189
2004-06-15 21:48:07 +00:00
Chris Lattner ee92bfca97 This testcase is a bit silly now, but oh well :)
llvm-svn: 14188
2004-06-15 21:46:16 +00:00
Chris Lattner de2f567a20 Remove isnan support, correct isunordered support
llvm-svn: 14187
2004-06-15 21:42:23 +00:00
Chris Lattner 5a542aadc8 Remove support for the isnan intrinsic
llvm-svn: 14186
2004-06-15 21:37:54 +00:00
Chris Lattner 70dfc06e02 Add basic support for the isunordered intrinsic. The isnan stuff still needs to go
llvm-svn: 14185
2004-06-15 21:36:44 +00:00
Chris Lattner 75bcc59f1c Right, stop being silly
llvm-svn: 14184
2004-06-15 21:29:40 +00:00
Chris Lattner ce4ac095f0 Add a nan, stop testing isnan
llvm-svn: 14183
2004-06-15 21:29:01 +00:00
Brian Gaeke 476c73b241 Fix thinko in visitor... ShiftInsts should currently be delegated
to visitBinaryOperator.

llvm-svn: 14182
2004-06-15 21:09:46 +00:00
Chris Lattner b1f0478f1d Do not dereference end iterators. It's really bad for the asmwriter's health.
This possibly fixes PR370

llvm-svn: 14181
2004-06-15 21:07:32 +00:00
Brian Gaeke 675c0e9701 I think we'll use the standard lowering passes for now.
llvm-svn: 14179
2004-06-15 20:37:12 +00:00
Brian Gaeke 0c8ee30d53 Fix bug generating code for void call instructions: don't call
getReg() on void value.

llvm-svn: 14178
2004-06-15 20:06:32 +00:00
Brian Gaeke 065a6cb93a Squash a warning from the Solaris assembler by aligning the stack
on a double-word boundary instead of a single-word boundary.

llvm-svn: 14177
2004-06-15 19:53:10 +00:00
Brian Gaeke ad98a9b526 Allow special-casing of operand printing based on opcode. Print
non-register, non-immed. arguments to SETHI and OR using %hi() and
%lo() respectively.

llvm-svn: 14176
2004-06-15 19:52:59 +00:00
Brian Gaeke 19fbd28a06 Support constant GEP expressions.
Support copying long constants to register pairs.
Support copying ConstantPointerNulls and ConstantPointerRefs to registers.

llvm-svn: 14175
2004-06-15 19:16:07 +00:00
Misha Brukman 342693e35b The correct prototype is `int atoi(CONST char*)'. Unbroke AIX build.
llvm-svn: 14173
2004-06-14 16:30:05 +00:00
Misha Brukman bba0f0e492 Add file comment.
llvm-svn: 14172
2004-06-14 15:13:59 +00:00
Brian Gaeke 21370771ba 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().

llvm-svn: 14171
2004-06-14 06:33:19 +00:00
Brian Gaeke 99c6539bce 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.

llvm-svn: 14170
2004-06-14 05:05:45 +00:00
Reid Spencer d5a21b0575 Get rid of "might be uninitialized" warnings when compiling with GCC 3.3.2
llvm-svn: 14169
2004-06-13 19:17:49 +00:00
Alkis Evlogimenos e395468ae5 Add constant folding capabilities to the isunordered intrinsic.
llvm-svn: 14168
2004-06-13 01:23:56 +00:00
Alkis Evlogimenos 0fa392310a Really add the docs this time :-)
llvm-svn: 14167
2004-06-13 01:16:15 +00:00
Alkis Evlogimenos cf9f8f1762 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 9d740629a0 Add the isunordered intrinsic.
llvm-svn: 14159
2004-06-12 19:19:14 +00:00
Reid Spencer 0a70ceb55f 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 27f44fe1f8 It is no longer 2001
llvm-svn: 14157
2004-06-11 21:12:22 +00:00
Brian Gaeke 787ed2f377 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 fb35b09738 Fix grammar: 's is for possessive only.
llvm-svn: 14155
2004-06-11 16:50:21 +00:00
Reid Spencer c0999e134e 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 80ae844ea8 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 5888b5d4b1 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 66f313725c llvm.isnan doesn't access memory
llvm-svn: 14151
2004-06-11 06:17:13 +00:00
Chris Lattner ec941f7abb Constant fold the isnan intrinsic
llvm-svn: 14150
2004-06-11 06:16:23 +00:00
Chris Lattner b82f707e30 Add tests for isnan
llvm-svn: 14149
2004-06-11 06:16:13 +00:00
Chris Lattner 1c2be0e5a9 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 858cb55a5c 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 71186e2fb6 Fix bug in previous checkin
llvm-svn: 14146
2004-06-11 05:22:44 +00:00
Chris Lattner 5ed9113e14 No really, these are dead now
llvm-svn: 14145
2004-06-11 04:50:14 +00:00
Chris Lattner b35f47627d 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 0876edf122 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 4e71aa84d5 Bug fixed, new feature
llvm-svn: 14142
2004-06-11 04:35:21 +00:00
Chris Lattner 26a964f88e 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 a0cfedef3a Add support for the setp instructions
llvm-svn: 14140
2004-06-11 04:30:06 +00:00
Chris Lattner 94ff2c3210 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 95290c7d33 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 c22be9f9d5 Revert an unneeded interface change to Instruction.h
llvm-svn: 14137
2004-06-11 03:06:43 +00:00
Chris Lattner a5ddab2779 Testcase for PR369
llvm-svn: 14136
2004-06-11 02:59:47 +00:00
Chris Lattner 434cc49bca 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 0c6db524d6 Fix lowering to work correctly
llvm-svn: 14134
2004-06-11 02:54:02 +00:00
Chris Lattner 8f40e35934 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 8f69c9e439 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