llvm-6502/lib/Target
Chris Lattner 8571637ee9 Codegen long >> 2 to this:
foo:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EDX, DWORD PTR [%ESP + 8]
        shrd %EAX, %EDX, 2
        sar %EDX, 2
        ret

instead of this:

test1:
        mov %ECX, DWORD PTR [%ESP + 4]
        shr %ECX, 2
        mov %EDX, DWORD PTR [%ESP + 8]
        mov %EAX, %EDX
        shl %EAX, 30
        or %EAX, %ECX
        sar %EDX, 2
        ret

and long << 2 to this:

foo:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %ECX, DWORD PTR [%ESP + 8]
***     mov %EDX, %EAX
        shrd %EDX, %ECX, 30
        shl %EAX, 2
        ret

instead of this:

foo:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %ECX, %EAX
        shr %ECX, 30
        mov %EDX, DWORD PTR [%ESP + 8]
        shl %EDX, 2
        or %EDX, %ECX
        shl %EAX, 2
        ret

The extra copy (marked ***) can be eliminated when I teach the code generator
that shrd32rri8 is really commutative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19681 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-19 06:18:43 +00:00
..
CBackend Fix CBE code so that it compiles with VC++. 2005-01-06 04:21:49 +00:00
PowerPC Fix Regression/CodeGen/PowerPC/2005-01-14-UndefLong.ll 2005-01-14 20:22:02 +00:00
Skeleton ignore generated files 2004-11-21 00:01:54 +00:00
Sparc Substantially improve the code generated by non-folded setcc instructions. 2005-01-01 16:06:57 +00:00
SparcV8 Substantially improve the code generated by non-folded setcc instructions. 2005-01-01 16:06:57 +00:00
SparcV9 Minor changes. 2005-01-18 04:15:41 +00:00
X86 Codegen long >> 2 to this: 2005-01-19 06:18:43 +00:00
Makefile Add SparcV8 target back into the build 2004-12-10 04:54:21 +00:00
MRegisterInfo.cpp Move destructor out of line to avoid vtable emission in every file that includes the header. Thanks to sabre. 2004-10-27 06:00:53 +00:00
Target.td Add some bits that can be set for instructions. 2005-01-02 02:27:48 +00:00
TargetData.cpp Initial support for packed types, contributed by Morten Ofstad 2004-12-01 17:14:28 +00:00
TargetFrameInfo.cpp Remove dead methods 2004-08-12 18:37:15 +00:00
TargetInstrInfo.cpp ConstantTypeMustBeLoaded has been incorporated into SparcV9PreSelection, its 2004-07-27 21:43:38 +00:00
TargetMachine.cpp Add a new target-independent code generator flag. 2005-01-15 06:00:32 +00:00
TargetMachineRegistry.cpp Implement TargetRegistrationListener 2004-07-11 06:03:21 +00:00
TargetSchedInfo.cpp Improve compatiblity with HPUX on Itanium, patch by Duraid Madina 2005-01-16 01:31:31 +00:00