llvm-6502/lib/Target
Chris Lattner 8d2822e7f1 Use the fucomi[p] instructions to perform floating point comparisons instead
of the fucom[p][p] instructions.  This allows us to code generate this function

bool %test(double %X, double %Y) {
        %C = setlt double %Y, %X
        ret bool %C
}

... into:

test:
        fld QWORD PTR [%ESP + 4]
        fld QWORD PTR [%ESP + 12]
        fucomip %ST(1)
        fstp %ST(0)
        setb %AL
        movsx %EAX, %AL
        ret

where before we generated:

test:
        fld QWORD PTR [%ESP + 4]
        fld QWORD PTR [%ESP + 12]
        fucompp
**      fnstsw
**      sahf
        setb %AL
        movsx %EAX, %AL
        ret

The two marked instructions (which are the ones eliminated) are very bad,
because they serialize execution of the processor.  These instructions are
available on the PPRO and later, but since we already use cmov's we aren't
losing any portability.

I retained the old code for the day when we decide we want to support back
to the 386.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12852 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-12 01:43:36 +00:00
..
CBackend Add support for select constant expressions to the CBE, fixing SIOD 2004-04-01 05:28:26 +00:00
PowerPC fine grainify namespacification 2004-02-28 19:53:18 +00:00
Sparc Don't print [%reg + 0], just print [%reg] 2004-04-07 17:33:56 +00:00
SparcV8 Don't print [%reg + 0], just print [%reg] 2004-04-07 17:33:56 +00:00
SparcV9 Don't include InstrSelectionSupport.h. 2004-04-07 20:55:32 +00:00
X86 Use the fucomi[p] instructions to perform floating point comparisons instead 2004-04-12 01:43:36 +00:00
Makefile Remove ghostly directory from the build 2004-03-11 04:42:41 +00:00
MRegisterInfo.cpp
Target.td
TargetData.cpp Support getelementptr instructions which use uint's to index into structure 2004-04-05 01:30:19 +00:00
TargetFrameInfo.cpp Move implementations of functions here, which avoids #including <cstdlib> in the 2004-03-11 23:52:43 +00:00
TargetInstrInfo.cpp Adjust to change in TII ctor arguments 2004-02-29 06:31:44 +00:00
TargetMachine.cpp make -print-machineinstrs work for both SparcV9 and X86 2004-03-04 19:16:23 +00:00
TargetSchedInfo.cpp Eliminate the distinction between "real" and "unreal" instructions 2004-02-29 06:31:16 +00:00