cmpti2.c revision 239138
1202878Srdivacky/* ===-- cmpti2.c - Implement __cmpti2 -------------------------------------===
2202878Srdivacky *
3202878Srdivacky *                     The LLVM Compiler Infrastructure
4202878Srdivacky *
5202878Srdivacky * This file is dual licensed under the MIT and the University of Illinois Open
6202878Srdivacky * Source Licenses. See LICENSE.TXT for details.
7202878Srdivacky *
8202878Srdivacky * ===----------------------------------------------------------------------===
9202878Srdivacky *
10202878Srdivacky * This file implements __cmpti2 for the compiler_rt library.
11249423Sdim *
12202878Srdivacky * ===----------------------------------------------------------------------===
13202878Srdivacky */
14226633Sdim
15249423Sdim#include "int_lib.h"
16202878Srdivacky
17224145Sdim#if __x86_64
18202878Srdivacky
19202878Srdivacky/* Returns:  if (a <  b) returns 0
20212904Sdim *           if (a == b) returns 1
21202878Srdivacky *           if (a >  b) returns 2
22202878Srdivacky */
23202878Srdivacky
24202878Srdivackysi_int
25202878Srdivacky__cmpti2(ti_int a, ti_int b)
26226633Sdim{
27212904Sdim    twords x;
28212904Sdim    x.all = a;
29212904Sdim    twords y;
30212904Sdim    y.all = b;
31212904Sdim    if (x.s.high < y.s.high)
32202878Srdivacky        return 0;
33202878Srdivacky    if (x.s.high > y.s.high)
34202878Srdivacky        return 2;
35202878Srdivacky    if (x.s.low < y.s.low)
36234353Sdim        return 0;
37234353Sdim    if (x.s.low > y.s.low)
38210299Sed        return 2;
39210299Sed    return 1;
40210299Sed}
41249423Sdim
42202878Srdivacky#endif
43249423Sdim