1 //===---------------------------------------------------------------------===//
2 // Random ideas for the ARM backend.
3 //===---------------------------------------------------------------------===//
5 Consider implementing a select with two conditional moves:
11 ----------------------------------------------------------
14 %tmp1 = shl int %b, ubyte %c
15 %tmp4 = add int %a, %tmp1
19 add r0, r0, r1, lsl r2
23 %tmp1 = shl int %b, ubyte %c
24 %tmp4 = add int %tmp1, %a
30 ----------------------------------------------------------
32 add an offset to FLDS/FLDD/FSTD/FSTS addressing mode
34 ----------------------------------------------------------
40 call void %g( int 1, int 2, int 3, int 4, int 5 )
44 declare void %g(int, int, int, int, int)
46 Only needs 8 bytes of stack space. We currently allocate 16.
48 ----------------------------------------------------------
50 32 x 32 -> 64 multiplications currently uses two instructions. We
51 should try to declare smull and umull as returning two values.
53 ----------------------------------------------------------
55 Implement addressing modes 2 (ldrb) and 3 (ldrsb)
57 ----------------------------------------------------------