OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / dalvik / vm / compiler / template / armv5te-vfp / TEMPLATE_CMPL_FLOAT_VFP.S
1 %verify "executed"
2 %verify "basic lt, gt, eq */
3 %verify "left arg NaN"
4 %verify "right arg NaN"
5     /*
6      * Compare two floating-point values.  Puts 0, 1, or -1 into the
7      * destination register based on the results of the comparison.
8      *
9      * int compare(x, y) {
10      *     if (x == y) {
11      *         return 0;
12      *     } else if (x > y) {
13      *         return 1;
14      *     } else if (x < y) {
15      *         return -1;
16      *     } else {
17      *         return -1;
18      *     }
19      * }
20      * On entry:
21      *    r0 = &op1 [vBB]
22      *    r1 = &op2 [vCC]
23      */
24     /* op vAA, vBB, vCC */
25     flds    s0, [r0]                    @ d0<- vBB
26     flds    s1, [r1]                    @ d1<- vCC
27     fcmps  s0, s1                      @ compare (vBB, vCC)
28     mvn     r0, #0                      @ r0<- -1 (default)
29     fmstat                              @ export status flags
30     movgt   r0, #1                      @ (greater than) r0<- 1
31     moveq   r0, #0                      @ (equal) r0<- 0
32     bx      lr