• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* ===-- ucmpdi2.c - Implement __ucmpdi2 -----------------------------------===
2   *
3   *                     The LLVM Compiler Infrastructure
4   *
5   * This file is dual licensed under the MIT and the University of Illinois Open
6   * Source Licenses. See LICENSE.TXT for details.
7   *
8   * ===----------------------------------------------------------------------===
9   *
10   * This file implements __ucmpdi2 for the compiler_rt library.
11   *
12   * ===----------------------------------------------------------------------===
13   */
14  
15  #include "int_lib.h"
16  
17  /* Returns:  if (a <  b) returns 0
18   *           if (a == b) returns 1
19   *           if (a >  b) returns 2
20   */
21  
22  COMPILER_RT_ABI si_int
__ucmpdi2(du_int a,du_int b)23  __ucmpdi2(du_int a, du_int b)
24  {
25      udwords x;
26      x.all = a;
27      udwords y;
28      y.all = b;
29      if (x.s.high < y.s.high)
30          return 0;
31      if (x.s.high > y.s.high)
32          return 2;
33      if (x.s.low < y.s.low)
34          return 0;
35      if (x.s.low > y.s.low)
36          return 2;
37      return 1;
38  }
39  
40  #ifdef __ARM_EABI__
41  /* Returns: if (a <  b) returns -1
42  *           if (a == b) returns  0
43  *           if (a >  b) returns  1
44  */
45  COMPILER_RT_ABI si_int
__aeabi_ulcmp(di_int a,di_int b)46  __aeabi_ulcmp(di_int a, di_int b)
47  {
48  	return __ucmpdi2(a, b) - 1;
49  }
50  #endif
51  
52