1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
! 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
|