-
Notifications
You must be signed in to change notification settings - Fork 11.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reland "[builtins] Define fmax and scalbn inline"
This reverts commit 680f836. Disable the non-default-rounding-mode scalbn[f] tests when we're using the MSVC libraries. Differential Revision: https://reviews.llvm.org/D91841
- Loading branch information
Showing
13 changed files
with
505 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
// RUN: %clang_builtins %s %librt -o %t && %run %t | ||
|
||
#define DOUBLE_PRECISION | ||
#include <fenv.h> | ||
#include <math.h> | ||
#include <stdio.h> | ||
#include "fp_lib.h" | ||
|
||
int test__compiler_rt_fmax(fp_t x, fp_t y) { | ||
fp_t crt_value = __compiler_rt_fmax(x, y); | ||
fp_t libm_value = fmax(x, y); | ||
// Consider +0 and -0 equal, and also disregard the sign/payload of two NaNs. | ||
if (crt_value != libm_value && | ||
!(crt_isnan(crt_value) && crt_isnan(libm_value))) { | ||
printf("error: in __compiler_rt_fmax(%a [%llX], %a [%llX]) = %a [%llX] " | ||
"!= %a [%llX]\n", | ||
x, (unsigned long long)toRep(x), | ||
y, (unsigned long long)toRep(y), | ||
crt_value, (unsigned long long)toRep(crt_value), | ||
libm_value, (unsigned long long)toRep(libm_value)); | ||
return 1; | ||
} | ||
return 0; | ||
} | ||
|
||
fp_t cases[] = { | ||
-NAN, NAN, -INFINITY, INFINITY, -0.0, 0.0, -1, 1, -2, 2, | ||
-0x1.0p-1023, 0x1.0p-1023, -0x1.0p-1024, 0x1.0p-1024, // subnormals | ||
-1.001, 1.001, -1.002, 1.002, | ||
}; | ||
|
||
int main() { | ||
const unsigned N = sizeof(cases) / sizeof(cases[0]); | ||
unsigned i, j; | ||
for (i = 0; i < N; ++i) { | ||
for (j = 0; j < N; ++j) { | ||
if (test__compiler_rt_fmax(cases[i], cases[j])) return 1; | ||
} | ||
} | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
// RUN: %clang_builtins %s %librt -o %t && %run %t | ||
|
||
#define SINGLE_PRECISION | ||
#include <fenv.h> | ||
#include <math.h> | ||
#include <stdio.h> | ||
#include "fp_lib.h" | ||
|
||
int test__compiler_rt_fmaxf(fp_t x, fp_t y) { | ||
fp_t crt_value = __compiler_rt_fmaxf(x, y); | ||
fp_t libm_value = fmaxf(x, y); | ||
// Consider +0 and -0 equal, and also disregard the sign/payload of two NaNs. | ||
if (crt_value != libm_value && | ||
!(crt_isnan(crt_value) && crt_isnan(libm_value))) { | ||
printf("error: in __compiler_rt_fmaxf(%a [%X], %a [%X]) = %a [%X] " | ||
"!= %a [%X]\n", | ||
x, toRep(x), y, toRep(y), crt_value, toRep(crt_value), libm_value, | ||
toRep(libm_value)); | ||
return 1; | ||
} | ||
return 0; | ||
} | ||
|
||
fp_t cases[] = { | ||
-NAN, NAN, -INFINITY, INFINITY, -0.0, 0.0, -1, 1, -2, 2, | ||
-0x1.0p-127, 0x1.0p-127, -0x1.0p-128, 0x1.0p-128, // subnormals | ||
-1.001, 1.001, -1.002, 1.002, | ||
}; | ||
|
||
int main() { | ||
const unsigned N = sizeof(cases) / sizeof(cases[0]); | ||
unsigned i, j; | ||
for (i = 0; i < N; ++i) { | ||
for (j = 0; j < N; ++j) { | ||
if (test__compiler_rt_fmaxf(cases[i], cases[j])) return 1; | ||
} | ||
} | ||
return 0; | ||
} |
Oops, something went wrong.