1//===-- lib/comparetf2.c - Quad-precision comparisons -------------*- C -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// // This file implements the following soft-float comparison routines:
10//
11// __eqtf2 __getf2 __unordtf2
12// __letf2 __gttf2
13// __lttf2
14// __netf2
15//
16// The semantics of the routines grouped in each column are identical, so there
17// is a single implementation for each, and wrappers to provide the other names.
18//
19// The main routines behave as follows:
20//
21// __letf2(a,b) returns -1 if a < b
22// 0 if a == b
23// 1 if a > b
24// 1 if either a or b is NaN
25//
26// __getf2(a,b) returns -1 if a < b
27// 0 if a == b
28// 1 if a > b
29// -1 if either a or b is NaN
30//
31// __unordtf2(a,b) returns 0 if both a and b are numbers
32// 1 if either a or b is NaN
33//
34// Note that __letf2( ) and __getf2( ) are identical except in their handling of
35// NaN values.
36//
37//===----------------------------------------------------------------------===//
38
39#define QUAD_PRECISION
40#include "fp_lib.h"
41
42#if defined(CRT_HAS_TF_MODE)
43#include "fp_compare_impl.inc"
44
45COMPILER_RT_ABI CMP_RESULT __letf2(fp_t a, fp_t b) { return __leXf2__(a, b); }
46
47#if defined(__ELF__)
48// Alias for libgcc compatibility
49COMPILER_RT_ALIAS(__letf2, __cmptf2)
50#endif
51COMPILER_RT_ALIAS(__letf2, __eqtf2)
52COMPILER_RT_ALIAS(__letf2, __lttf2)
53COMPILER_RT_ALIAS(__letf2, __netf2)
54
55COMPILER_RT_ABI CMP_RESULT __getf2(fp_t a, fp_t b) { return __geXf2__(a, b); }
56
57COMPILER_RT_ALIAS(__getf2, __gttf2)
58
59COMPILER_RT_ABI CMP_RESULT __unordtf2(fp_t a, fp_t b) {
60 return __unordXf2__(a, b);
61}
62
63#endif
64

source code of compiler-rt/lib/builtins/comparetf2.c