1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/lib/Target/ARM
Rafael Espindola 80c7461ada implement CallingConv::Fast as CallingConv::C
llvm-svn: 31034
2006-10-18 12:03:07 +00:00
..
.cvsignore
ARM.h
ARM.td
ARMAsmPrinter.cpp initial implementation of addressing mode 5 2006-10-17 18:04:53 +00:00
ARMFrameInfo.h
ARMInstrInfo.cpp
ARMInstrInfo.h
ARMInstrInfo.td add the FPUnaryOp and DFPUnaryOp classes 2006-10-17 20:45:22 +00:00
ARMISelDAGToDAG.cpp implement CallingConv::Fast as CallingConv::C 2006-10-18 12:03:07 +00:00
ARMMul.cpp implement smull and umull 2006-10-16 16:33:29 +00:00
ARMRegisterInfo.cpp add the immediate to the Offset in eliminateFrameIndex 2006-10-17 14:34:02 +00:00
ARMRegisterInfo.h
ARMRegisterInfo.td fix the names of the 64bit fp register 2006-10-02 19:30:56 +00:00
ARMTargetAsmInfo.cpp
ARMTargetAsmInfo.h
ARMTargetMachine.cpp most ARM targets are little endian 2006-10-09 14:12:15 +00:00
ARMTargetMachine.h
Makefile
README.txt add FSTD and FSTS 2006-10-17 13:36:07 +00:00

//===---------------------------------------------------------------------===//
// Random ideas for the ARM backend.
//===---------------------------------------------------------------------===//

Consider implementing a select with two conditional moves:

cmp x, y
moveq dst, a
movne dst, b

----------------------------------------------------------


%tmp1 = shl int %b, ubyte %c
%tmp4 = add int %a, %tmp1

compiles to

add r0, r0, r1, lsl r2

but

%tmp1 = shl int %b, ubyte %c
%tmp4 = add int %tmp1, %a

compiles to
mov r1, r1, lsl r2
add r0, r1, r0

----------------------------------------------------------

add an offset to FLDS/FLDD/FSTD/FSTS addressing mode

----------------------------------------------------------

the function

void %f() {
entry:
	call void %g( int 1, int 2, int 3, int 4, int 5 )
	ret void
}

declare void %g(int, int, int, int, int)

Only needs 8 bytes of stack space. We currently allocate 16.

----------------------------------------------------------

32 x 32 -> 64 multiplications currently uses two instructions. We
should try to declare smull and umull as returning two values.

----------------------------------------------------------

Implement addressing modes 2 (ldrb) and 3 (ldrsb)

----------------------------------------------------------