Hi,

With respect to the MPFR build error,
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58578), is movs appropraite
as shown below? When _err1 is negative the condition is evaluating it to
be true.


/* C Codeoes */
    if (_err1 > 0)
      {

/* working code */
        .loc 1 67 0
        cmp     r3, #0
        ble     .L6

/* not working code*/
        .loc 1 67 0
        movs    r3, r3, asl #1
        ble .L6



When I looked at the ARM documents, I found the following

Condition flags
-------------------
If S is specified, for MOV instructions:

1.    update the N and Z flags according to the result

2.    can update the C flag during the calculation of Operand2 (see
Flexible second operand)

3.   do not affect the V flag.


And also
le      Signed less than or equal.      (Z==1) || (N!=V)


Does this means we cant movs at comparision.

http://gcc.gnu.org/ml/gcc-patches/2013-02/msg00861.html added this and I
guess it is intentional.

Am I missing anything here?

Thanks,
Kugan

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to