33 lines
602 B
ArmAsm
33 lines
602 B
ArmAsm
! 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
|