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