| ! Copyright (C) 2012 by Imagination Technologies Ltd. |
| ! |
| ! 64-bit signed compare routine. |
| ! |
| |
| .text |
| .global ___cmpdi2 |
| .type ___cmpdi2,function |
| |
| ! low high |
| ! s64 a (D0Ar2, D1Ar1) |
| ! s64 b (D0Ar4, D1Ar3) |
| ___cmpdi2: |
| ! start at 1 (equal) and conditionally increment or decrement |
| MOV D0Re0,#1 |
| |
| ! high words differ? |
| CMP D1Ar1,D1Ar3 |
| BNE $Lhigh_differ |
| |
| ! unsigned compare low words |
| CMP D0Ar2,D0Ar4 |
| SUBLO D0Re0,D0Re0,#1 |
| ADDHI D0Re0,D0Re0,#1 |
| MOV PC,D1RtP |
| |
| $Lhigh_differ: |
| ! signed compare high words |
| SUBLT D0Re0,D0Re0,#1 |
| ADDGT D0Re0,D0Re0,#1 |
| MOV PC,D1RtP |
| .size ___cmpdi2,.-___cmpdi2 |