forked from OSchip/llvm-project
Revert "Split single & double comparison routines into separate implementation
files," for now, I missed some necesary updates. llvm-svn: 128296
This commit is contained in:
parent
4fd2194638
commit
4c70f3e6ac
|
|
@ -1,4 +1,4 @@
|
||||||
//===-- lib/ledf2.c - Double-precision comparisons ----------------*- C -*-===//
|
//===-- lib/comparedf2.c - Double-precision comparisons -----------*- C -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
|
|
@ -40,6 +40,13 @@
|
||||||
#define DOUBLE_PRECISION
|
#define DOUBLE_PRECISION
|
||||||
#include "fp_lib.h"
|
#include "fp_lib.h"
|
||||||
|
|
||||||
|
enum LE_RESULT {
|
||||||
|
LE_LESS = -1,
|
||||||
|
LE_EQUAL = 0,
|
||||||
|
LE_GREATER = 1,
|
||||||
|
LE_UNORDERED = 1
|
||||||
|
};
|
||||||
|
|
||||||
enum LE_RESULT __ledf2(fp_t a, fp_t b) {
|
enum LE_RESULT __ledf2(fp_t a, fp_t b) {
|
||||||
|
|
||||||
const srep_t aInt = toRep(a);
|
const srep_t aInt = toRep(a);
|
||||||
|
|
@ -71,3 +78,55 @@ enum LE_RESULT __ledf2(fp_t a, fp_t b) {
|
||||||
else return LE_GREATER;
|
else return LE_GREATER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum GE_RESULT {
|
||||||
|
GE_LESS = -1,
|
||||||
|
GE_EQUAL = 0,
|
||||||
|
GE_GREATER = 1,
|
||||||
|
GE_UNORDERED = -1 // Note: different from LE_UNORDERED
|
||||||
|
};
|
||||||
|
|
||||||
|
enum GE_RESULT __gedf2(fp_t a, fp_t b) {
|
||||||
|
|
||||||
|
const srep_t aInt = toRep(a);
|
||||||
|
const srep_t bInt = toRep(b);
|
||||||
|
const rep_t aAbs = aInt & absMask;
|
||||||
|
const rep_t bAbs = bInt & absMask;
|
||||||
|
|
||||||
|
if (aAbs > infRep || bAbs > infRep) return GE_UNORDERED;
|
||||||
|
if ((aAbs | bAbs) == 0) return GE_EQUAL;
|
||||||
|
if ((aInt & bInt) >= 0) {
|
||||||
|
if (aInt < bInt) return GE_LESS;
|
||||||
|
else if (aInt == bInt) return GE_EQUAL;
|
||||||
|
else return GE_GREATER;
|
||||||
|
} else {
|
||||||
|
if (aInt > bInt) return GE_LESS;
|
||||||
|
else if (aInt == bInt) return GE_EQUAL;
|
||||||
|
else return GE_GREATER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int __unorddf2(fp_t a, fp_t b) {
|
||||||
|
const rep_t aAbs = toRep(a) & absMask;
|
||||||
|
const rep_t bAbs = toRep(b) & absMask;
|
||||||
|
return aAbs > infRep || bAbs > infRep;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following are alternative names for the preceeding routines.
|
||||||
|
|
||||||
|
enum LE_RESULT __eqdf2(fp_t a, fp_t b) {
|
||||||
|
return __ledf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum LE_RESULT __ltdf2(fp_t a, fp_t b) {
|
||||||
|
return __ledf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum LE_RESULT __nedf2(fp_t a, fp_t b) {
|
||||||
|
return __ledf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum GE_RESULT __gtdf2(fp_t a, fp_t b) {
|
||||||
|
return __gedf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
//===-- lib/lesf2.c - Single-precision comparisons ----------------*- C -*-===//
|
//===-- lib/comparesf2.c - Single-precision comparisons -----------*- C -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
|
|
@ -40,6 +40,13 @@
|
||||||
#define SINGLE_PRECISION
|
#define SINGLE_PRECISION
|
||||||
#include "fp_lib.h"
|
#include "fp_lib.h"
|
||||||
|
|
||||||
|
enum LE_RESULT {
|
||||||
|
LE_LESS = -1,
|
||||||
|
LE_EQUAL = 0,
|
||||||
|
LE_GREATER = 1,
|
||||||
|
LE_UNORDERED = 1
|
||||||
|
};
|
||||||
|
|
||||||
enum LE_RESULT __lesf2(fp_t a, fp_t b) {
|
enum LE_RESULT __lesf2(fp_t a, fp_t b) {
|
||||||
|
|
||||||
const srep_t aInt = toRep(a);
|
const srep_t aInt = toRep(a);
|
||||||
|
|
@ -71,3 +78,54 @@ enum LE_RESULT __lesf2(fp_t a, fp_t b) {
|
||||||
else return LE_GREATER;
|
else return LE_GREATER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum GE_RESULT {
|
||||||
|
GE_LESS = -1,
|
||||||
|
GE_EQUAL = 0,
|
||||||
|
GE_GREATER = 1,
|
||||||
|
GE_UNORDERED = -1 // Note: different from LE_UNORDERED
|
||||||
|
};
|
||||||
|
|
||||||
|
enum GE_RESULT __gesf2(fp_t a, fp_t b) {
|
||||||
|
|
||||||
|
const srep_t aInt = toRep(a);
|
||||||
|
const srep_t bInt = toRep(b);
|
||||||
|
const rep_t aAbs = aInt & absMask;
|
||||||
|
const rep_t bAbs = bInt & absMask;
|
||||||
|
|
||||||
|
if (aAbs > infRep || bAbs > infRep) return GE_UNORDERED;
|
||||||
|
if ((aAbs | bAbs) == 0) return GE_EQUAL;
|
||||||
|
if ((aInt & bInt) >= 0) {
|
||||||
|
if (aInt < bInt) return GE_LESS;
|
||||||
|
else if (aInt == bInt) return GE_EQUAL;
|
||||||
|
else return GE_GREATER;
|
||||||
|
} else {
|
||||||
|
if (aInt > bInt) return GE_LESS;
|
||||||
|
else if (aInt == bInt) return GE_EQUAL;
|
||||||
|
else return GE_GREATER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int __unordsf2(fp_t a, fp_t b) {
|
||||||
|
const rep_t aAbs = toRep(a) & absMask;
|
||||||
|
const rep_t bAbs = toRep(b) & absMask;
|
||||||
|
return aAbs > infRep || bAbs > infRep;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following are alternative names for the preceeding routines.
|
||||||
|
|
||||||
|
enum LE_RESULT __eqsf2(fp_t a, fp_t b) {
|
||||||
|
return __lesf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum LE_RESULT __ltsf2(fp_t a, fp_t b) {
|
||||||
|
return __lesf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum LE_RESULT __nesf2(fp_t a, fp_t b) {
|
||||||
|
return __lesf2(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum GE_RESULT __gtsf2(fp_t a, fp_t b) {
|
||||||
|
return __gesf2(a, b);
|
||||||
|
}
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
//===-- lib/eqdf2.c - Double-precision comparisons -----------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define DOUBLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum LE_RESULT __ledf2(fp_t a, fp_t b);
|
|
||||||
enum LE_RESULT __eqdf2(fp_t a, fp_t b) {
|
|
||||||
return __ledf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
//===-- lib/comparesf2.c - Single-precision comparisons -----------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define SINGLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum LE_RESULT __lesf2(fp_t a, fp_t b);
|
|
||||||
enum LE_RESULT __eqsf2(fp_t a, fp_t b) {
|
|
||||||
return __lesf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
@ -25,20 +25,6 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
// Result enumerations used in comparison routines.
|
|
||||||
enum LE_RESULT {
|
|
||||||
LE_LESS = -1,
|
|
||||||
LE_EQUAL = 0,
|
|
||||||
LE_GREATER = 1,
|
|
||||||
LE_UNORDERED = 1
|
|
||||||
};
|
|
||||||
enum GE_RESULT {
|
|
||||||
GE_LESS = -1,
|
|
||||||
GE_EQUAL = 0,
|
|
||||||
GE_GREATER = 1,
|
|
||||||
GE_UNORDERED = -1 // Note: different from LE_UNORDERED
|
|
||||||
};
|
|
||||||
|
|
||||||
#if defined SINGLE_PRECISION
|
#if defined SINGLE_PRECISION
|
||||||
|
|
||||||
typedef uint32_t rep_t;
|
typedef uint32_t rep_t;
|
||||||
|
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
//===-- lib/gedf2.c - Double-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
//
|
|
||||||
// This file implements the following soft-float comparison routines:
|
|
||||||
//
|
|
||||||
// __eqdf2 __gedf2 __unorddf2
|
|
||||||
// __ledf2 __gtdf2
|
|
||||||
// __ltdf2
|
|
||||||
// __nedf2
|
|
||||||
//
|
|
||||||
// The semantics of the routines grouped in each column are identical, so there
|
|
||||||
// is a single implementation for each, and wrappers to provide the other names.
|
|
||||||
//
|
|
||||||
// The main routines behave as follows:
|
|
||||||
//
|
|
||||||
// __ledf2(a,b) returns -1 if a < b
|
|
||||||
// 0 if a == b
|
|
||||||
// 1 if a > b
|
|
||||||
// 1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// __gedf2(a,b) returns -1 if a < b
|
|
||||||
// 0 if a == b
|
|
||||||
// 1 if a > b
|
|
||||||
// -1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// __unorddf2(a,b) returns 0 if both a and b are numbers
|
|
||||||
// 1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// Note that __ledf2( ) and __gedf2( ) are identical except in their handling of
|
|
||||||
// NaN values.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define DOUBLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum GE_RESULT __gedf2(fp_t a, fp_t b) {
|
|
||||||
|
|
||||||
const srep_t aInt = toRep(a);
|
|
||||||
const srep_t bInt = toRep(b);
|
|
||||||
const rep_t aAbs = aInt & absMask;
|
|
||||||
const rep_t bAbs = bInt & absMask;
|
|
||||||
|
|
||||||
if (aAbs > infRep || bAbs > infRep) return GE_UNORDERED;
|
|
||||||
if ((aAbs | bAbs) == 0) return GE_EQUAL;
|
|
||||||
if ((aInt & bInt) >= 0) {
|
|
||||||
if (aInt < bInt) return GE_LESS;
|
|
||||||
else if (aInt == bInt) return GE_EQUAL;
|
|
||||||
else return GE_GREATER;
|
|
||||||
} else {
|
|
||||||
if (aInt > bInt) return GE_LESS;
|
|
||||||
else if (aInt == bInt) return GE_EQUAL;
|
|
||||||
else return GE_GREATER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
//===-- lib/gesf2.c - Single-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
//
|
|
||||||
// This file implements the following soft-fp_t comparison routines:
|
|
||||||
//
|
|
||||||
// __eqsf2 __gesf2 __unordsf2
|
|
||||||
// __lesf2 __gtsf2
|
|
||||||
// __ltsf2
|
|
||||||
// __nesf2
|
|
||||||
//
|
|
||||||
// The semantics of the routines grouped in each column are identical, so there
|
|
||||||
// is a single implementation for each, and wrappers to provide the other names.
|
|
||||||
//
|
|
||||||
// The main routines behave as follows:
|
|
||||||
//
|
|
||||||
// __lesf2(a,b) returns -1 if a < b
|
|
||||||
// 0 if a == b
|
|
||||||
// 1 if a > b
|
|
||||||
// 1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// __gesf2(a,b) returns -1 if a < b
|
|
||||||
// 0 if a == b
|
|
||||||
// 1 if a > b
|
|
||||||
// -1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// __unordsf2(a,b) returns 0 if both a and b are numbers
|
|
||||||
// 1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// Note that __lesf2( ) and __gesf2( ) are identical except in their handling of
|
|
||||||
// NaN values.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define SINGLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum GE_RESULT __gesf2(fp_t a, fp_t b) {
|
|
||||||
|
|
||||||
const srep_t aInt = toRep(a);
|
|
||||||
const srep_t bInt = toRep(b);
|
|
||||||
const rep_t aAbs = aInt & absMask;
|
|
||||||
const rep_t bAbs = bInt & absMask;
|
|
||||||
|
|
||||||
if (aAbs > infRep || bAbs > infRep) return GE_UNORDERED;
|
|
||||||
if ((aAbs | bAbs) == 0) return GE_EQUAL;
|
|
||||||
if ((aInt & bInt) >= 0) {
|
|
||||||
if (aInt < bInt) return GE_LESS;
|
|
||||||
else if (aInt == bInt) return GE_EQUAL;
|
|
||||||
else return GE_GREATER;
|
|
||||||
} else {
|
|
||||||
if (aInt > bInt) return GE_LESS;
|
|
||||||
else if (aInt == bInt) return GE_EQUAL;
|
|
||||||
else return GE_GREATER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
//===-- lib/gtdf2.c - Double-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define DOUBLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum GE_RESULT __gedf2(fp_t a, fp_t b);
|
|
||||||
enum GE_RESULT __gtdf2(fp_t a, fp_t b) {
|
|
||||||
return __gedf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
//===-- lib/gtsf2.c - Single-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define SINGLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum GE_RESULT __gesf2(fp_t a, fp_t b);
|
|
||||||
enum GE_RESULT __gtsf2(fp_t a, fp_t b) {
|
|
||||||
return __gesf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
//===-- lib/ltdf2.c - Double-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define DOUBLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum LE_RESULT __ledf2(fp_t a, fp_t b);
|
|
||||||
enum LE_RESULT __ltdf2(fp_t a, fp_t b) {
|
|
||||||
return __ledf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
//===-- lib/comparesf2.c - Single-precision comparisons -----------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define SINGLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum LE_RESULT __lesf2(fp_t a, fp_t b);
|
|
||||||
enum LE_RESULT __ltsf2(fp_t a, fp_t b) {
|
|
||||||
return __lesf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
//===-- lib/nedf2.c - Double-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define DOUBLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum LE_RESULT __ledf2(fp_t a, fp_t b);
|
|
||||||
enum LE_RESULT __nedf2(fp_t a, fp_t b) {
|
|
||||||
return __ledf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
//===-- lib/nesf2.c - Single-precision comparisons ----------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define SINGLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
enum LE_RESULT __lesf2(fp_t a, fp_t b);
|
|
||||||
enum LE_RESULT __nesf2(fp_t a, fp_t b) {
|
|
||||||
return __lesf2(a, b);
|
|
||||||
}
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
//===-- lib/unorddf2.c - Double-precision comparisons -------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
//
|
|
||||||
// // This file implements the following soft-float comparison routines:
|
|
||||||
//
|
|
||||||
// __eqdf2 __gedf2 __unorddf2
|
|
||||||
// __ledf2 __gtdf2
|
|
||||||
// __ltdf2
|
|
||||||
// __nedf2
|
|
||||||
//
|
|
||||||
// The semantics of the routines grouped in each column are identical, so there
|
|
||||||
// is a single implementation for each, and wrappers to provide the other names.
|
|
||||||
//
|
|
||||||
// The main routines behave as follows:
|
|
||||||
//
|
|
||||||
// __ledf2(a,b) returns -1 if a < b
|
|
||||||
// 0 if a == b
|
|
||||||
// 1 if a > b
|
|
||||||
// 1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// __gedf2(a,b) returns -1 if a < b
|
|
||||||
// 0 if a == b
|
|
||||||
// 1 if a > b
|
|
||||||
// -1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// __unorddf2(a,b) returns 0 if both a and b are numbers
|
|
||||||
// 1 if either a or b is NaN
|
|
||||||
//
|
|
||||||
// Note that __ledf2( ) and __gedf2( ) are identical except in their handling of
|
|
||||||
// NaN values.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define DOUBLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
int __unorddf2(fp_t a, fp_t b) {
|
|
||||||
const rep_t aAbs = toRep(a) & absMask;
|
|
||||||
const rep_t bAbs = toRep(b) & absMask;
|
|
||||||
return aAbs > infRep || bAbs > infRep;
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
//===-- lib/unordsf2.c - Single-precision comparisons -------------*- C -*-===//
|
|
||||||
//
|
|
||||||
// The LLVM Compiler Infrastructure
|
|
||||||
//
|
|
||||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
||||||
// Source Licenses. See LICENSE.TXT for details.
|
|
||||||
//
|
|
||||||
//===----------------------------------------------------------------------===//
|
|
||||||
|
|
||||||
#define SINGLE_PRECISION
|
|
||||||
#include "fp_lib.h"
|
|
||||||
|
|
||||||
int __unordsf2(fp_t a, fp_t b) {
|
|
||||||
const rep_t aAbs = toRep(a) & absMask;
|
|
||||||
const rep_t bAbs = toRep(b) & absMask;
|
|
||||||
return aAbs > infRep || bAbs > infRep;
|
|
||||||
}
|
|
||||||
|
|
@ -223,7 +223,8 @@ FUNCTIONS.cc_kext.x86_64 := $(CCKEXT_X86_FUNCTIONS) \
|
||||||
CCKEXT_MISSING_FUNCTIONS := \
|
CCKEXT_MISSING_FUNCTIONS := \
|
||||||
cmpdf2 cmpsf2 div0 \
|
cmpdf2 cmpsf2 div0 \
|
||||||
ffssi2 \
|
ffssi2 \
|
||||||
udiv_w_sdiv bswapdi2 \
|
gtdf2 gtsf2 ltdf2 ltsf2 \
|
||||||
|
udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \
|
||||||
bswapsi2 \
|
bswapsi2 \
|
||||||
gcc_bcmp \
|
gcc_bcmp \
|
||||||
do_global_dtors \
|
do_global_dtors \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue