README.txt revision 0d913eaaed3202231e8a332b12153c4b7a5f43c5
1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectTo-do
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project-----
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Enable LSR for V8.
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Keep the address of the constant pool in a register instead of forming its
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  address all of the time.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* We can fold small constant offsets into the %hi/%lo references to constant
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  pool addresses as well.
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* When in V9 mode, register allocate %icc[0-3].
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Emit the 'Branch on Integer Register with Prediction' instructions.  It's
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  not clear how to write a pattern for this though:
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectfloat %t1(int %a, int* %p) {
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        %C = seteq int %a, 0
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        br bool %C, label %T, label %F
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectT:
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        store int 123, int* %p
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        br label %F
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectF:
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        ret float undef
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectcodegens to this:
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectt1:
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        save -96, %o6, %o6
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project1)      subcc %i0, 0, %l0
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project1)      bne .LBBt1_2    ! F
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        nop
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.LBBt1_1:       ! T
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        or %g0, 123, %l0
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        st %l0, [%i1]
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.LBBt1_2:       ! F
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        restore %g0, %g0, %g0
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        retl
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        nop
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project1) should be replaced with a brz in V9 mode.
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Same as above, but emit conditional move on register zero (p192) in V9 
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  mode.  Testcase:
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint %t1(int %a, int %b) {
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        %C = seteq int %a, 0
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        %D = select bool %C, int %a, int %b
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        ret int %D
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Emit MULX/[SU]DIVX instructions in V9 mode instead of fiddling 
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  with the Y register, if they are faster.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Codegen bswap(load)/store(bswap) -> load/store ASI
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Implement frame pointer elimination, e.g. eliminate save/restore for 
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  leaf fns.
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project* Fill delay slots
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project