| ! 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 |