diff options
author | Gabe Black <gabeblack@google.com> | 2017-07-14 14:25:14 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-07-14 22:11:03 +0000 |
commit | dbeeb9693c8ab364fca7cf01817c9628252af652 (patch) | |
tree | 9e934bc16cf74ed60d0e271fed2a233bb920e9af /src | |
parent | cc076757e1471b1080df5c5a0130d96b9c35fb2f (diff) | |
download | gem5-dbeeb9693c8ab364fca7cf01817c9628252af652.tar.xz |
riscv: Disambiguate between the C and C++ versions of isnan and isinf.
When both the C and C++ versions are visible, the compiler will complain that
it doesn't know which one to use. By specifying the std namespace, it will
know to use the C++ version.
Change-Id: Ie1bbe1d95eadbad9644b4915c21f924d7d5c0b22
Reviewed-on: https://gem5-review.googlesource.com/4060
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/riscv/isa/decoder.isa | 118 |
1 files changed, 63 insertions, 55 deletions
diff --git a/src/arch/riscv/isa/decoder.isa b/src/arch/riscv/isa/decoder.isa index 0e5567ac3..a6f881633 100644 --- a/src/arch/riscv/isa/decoder.isa +++ b/src/arch/riscv/isa/decoder.isa @@ -784,19 +784,20 @@ decode QUADRANT default Unknown::unknown() { float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); float fd; - if (isnan(fs1) || isnan(fs2) || isnan(fs3)) { + if (std::isnan(fs1) || std::isnan(fs2) || + std::isnan(fs3)) { if (issignalingnan(fs1) || issignalingnan(fs2) || issignalingnan(fs3)) { FFLAGS |= FloatInvalid; } fd = numeric_limits<float>::quiet_NaN(); - } else if (isinf(fs1) || isinf(fs2) || - isinf(fs3)) { + } else if (std::isinf(fs1) || std::isinf(fs2) || + std::isinf(fs3)) { if (signbit(fs1) == signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = numeric_limits<float>::infinity(); } else if (signbit(fs1) != signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = -numeric_limits<float>::infinity(); } else { // Fs3_sf is infinity fd = fs3; @@ -807,19 +808,20 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatMultOp); 0x1: fmadd_d({{ - if (isnan(Fs1) || isnan(Fs2) || isnan(Fs3)) { + if (std::isnan(Fs1) || std::isnan(Fs2) || + std::isnan(Fs3)) { if (issignalingnan(Fs1) || issignalingnan(Fs2) || issignalingnan(Fs3)) { FFLAGS |= FloatInvalid; } Fd = numeric_limits<double>::quiet_NaN(); - } else if (isinf(Fs1) || isinf(Fs2) || - isinf(Fs3)) { + } else if (std::isinf(Fs1) || std::isinf(Fs2) || + std::isinf(Fs3)) { if (signbit(Fs1) == signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = numeric_limits<double>::infinity(); } else if (signbit(Fs1) != signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = -numeric_limits<double>::infinity(); } else { Fd = Fs3; @@ -837,19 +839,20 @@ decode QUADRANT default Unknown::unknown() { float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); float fd; - if (isnan(fs1) || isnan(fs2) || isnan(fs3)) { + if (std::isnan(fs1) || std::isnan(fs2) || + std::isnan(fs3)) { if (issignalingnan(fs1) || issignalingnan(fs2) || issignalingnan(fs3)) { FFLAGS |= FloatInvalid; } fd = numeric_limits<float>::quiet_NaN(); - } else if (isinf(fs1) || isinf(fs2) || - isinf(fs3)) { + } else if (std::isinf(fs1) || std::isinf(fs2) || + std::isinf(fs3)) { if (signbit(fs1) == signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = numeric_limits<float>::infinity(); } else if (signbit(fs1) != signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = -numeric_limits<float>::infinity(); } else { // Fs3_sf is infinity fd = -fs3; @@ -860,19 +863,20 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatMultOp); 0x1: fmsub_d({{ - if (isnan(Fs1) || isnan(Fs2) || isnan(Fs3)) { + if (std::isnan(Fs1) || std::isnan(Fs2) || + std::isnan(Fs3)) { if (issignalingnan(Fs1) || issignalingnan(Fs2) || issignalingnan(Fs3)) { FFLAGS |= FloatInvalid; } Fd = numeric_limits<double>::quiet_NaN(); - } else if (isinf(Fs1) || isinf(Fs2) || - isinf(Fs3)) { + } else if (std::isinf(Fs1) || std::isinf(Fs2) || + std::isinf(Fs3)) { if (signbit(Fs1) == signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = numeric_limits<double>::infinity(); } else if (signbit(Fs1) != signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = -numeric_limits<double>::infinity(); } else { Fd = -Fs3; @@ -890,19 +894,20 @@ decode QUADRANT default Unknown::unknown() { float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); float fd; - if (isnan(fs1) || isnan(fs2) || isnan(fs3)) { + if (std::isnan(fs1) || std::isnan(fs2) || + std::isnan(fs3)) { if (issignalingnan(fs1) || issignalingnan(fs2) || issignalingnan(fs3)) { FFLAGS |= FloatInvalid; } fd = numeric_limits<float>::quiet_NaN(); - } else if (isinf(fs1) || isinf(fs2) || - isinf(fs3)) { + } else if (std::isinf(fs1) || std::isinf(fs2) || + std::isinf(fs3)) { if (signbit(fs1) == signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = -numeric_limits<float>::infinity(); } else if (signbit(fs1) != signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = numeric_limits<float>::infinity(); } else { // Fs3_sf is infinity fd = fs3; @@ -913,19 +918,20 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatMultOp); 0x1: fnmsub_d({{ - if (isnan(Fs1) || isnan(Fs2) || isnan(Fs3)) { + if (std::isnan(Fs1) || std::isnan(Fs2) || + std::isnan(Fs3)) { if (issignalingnan(Fs1) || issignalingnan(Fs2) || issignalingnan(Fs3)) { FFLAGS |= FloatInvalid; } Fd = numeric_limits<double>::quiet_NaN(); - } else if (isinf(Fs1) || isinf(Fs2) - || isinf(Fs3)) { + } else if (std::isinf(Fs1) || std::isinf(Fs2) + || std::isinf(Fs3)) { if (signbit(Fs1) == signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = -numeric_limits<double>::infinity(); } else if (signbit(Fs1) != signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = numeric_limits<double>::infinity(); } else { Fd = Fs3; @@ -943,19 +949,20 @@ decode QUADRANT default Unknown::unknown() { float fs3 = reinterpret_cast<float&>(temp = Fs3_bits); float fd; - if (isnan(fs1) || isnan(fs2) || isnan(fs3)) { + if (std::isnan(fs1) || std::isnan(fs2) || + std::isnan(fs3)) { if (issignalingnan(fs1) || issignalingnan(fs2) || issignalingnan(fs3)) { FFLAGS |= FloatInvalid; } fd = numeric_limits<float>::quiet_NaN(); - } else if (isinf(fs1) || isinf(fs2) || - isinf(fs3)) { + } else if (std::isinf(fs1) || std::isinf(fs2) || + std::isinf(fs3)) { if (signbit(fs1) == signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = -numeric_limits<float>::infinity(); } else if (signbit(fs1) != signbit(fs2) - && !isinf(fs3)) { + && !std::isinf(fs3)) { fd = numeric_limits<float>::infinity(); } else { // Fs3_sf is infinity fd = -fs3; @@ -966,19 +973,20 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatMultOp); 0x1: fnmadd_d({{ - if (isnan(Fs1) || isnan(Fs2) || isnan(Fs3)) { + if (std::isnan(Fs1) || std::isnan(Fs2) || + std::isnan(Fs3)) { if (issignalingnan(Fs1) || issignalingnan(Fs2) || issignalingnan(Fs3)) { FFLAGS |= FloatInvalid; } Fd = numeric_limits<double>::quiet_NaN(); - } else if (isinf(Fs1) || isinf(Fs2) || - isinf(Fs3)) { + } else if (std::isinf(Fs1) || std::isinf(Fs2) || + std::isinf(Fs3)) { if (signbit(Fs1) == signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = -numeric_limits<double>::infinity(); } else if (signbit(Fs1) != signbit(Fs2) - && !isinf(Fs3)) { + && !std::isinf(Fs3)) { Fd = numeric_limits<double>::infinity(); } else { Fd = -Fs3; @@ -995,7 +1003,7 @@ decode QUADRANT default Unknown::unknown() { float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); float fd; - if (isnan(fs1) || isnan(fs2)) { + if (std::isnan(fs1) || std::isnan(fs2)) { if (issignalingnan(fs1) || issignalingnan(fs2)) { FFLAGS |= FloatInvalid; } @@ -1006,7 +1014,7 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatAddOp); 0x1: fadd_d({{ - if (isnan(Fs1) || isnan(Fs2)) { + if (std::isnan(Fs1) || std::isnan(Fs2)) { if (issignalingnan(Fs1) || issignalingnan(Fs2)) { FFLAGS |= FloatInvalid; } @@ -1021,7 +1029,7 @@ decode QUADRANT default Unknown::unknown() { float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); float fd; - if (isnan(fs1) || isnan(fs2)) { + if (std::isnan(fs1) || std::isnan(fs2)) { if (issignalingnan(fs1) || issignalingnan(fs2)) { FFLAGS |= FloatInvalid; } @@ -1032,7 +1040,7 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatAddOp); 0x5: fsub_d({{ - if (isnan(Fs1) || isnan(Fs2)) { + if (std::isnan(Fs1) || std::isnan(Fs2)) { if (issignalingnan(Fs1) || issignalingnan(Fs2)) { FFLAGS |= FloatInvalid; } @@ -1047,7 +1055,7 @@ decode QUADRANT default Unknown::unknown() { float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); float fd; - if (isnan(fs1) || isnan(fs2)) { + if (std::isnan(fs1) || std::isnan(fs2)) { if (issignalingnan(fs1) || issignalingnan(fs2)) { FFLAGS |= FloatInvalid; } @@ -1058,7 +1066,7 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatMultOp); 0x9: fmul_d({{ - if (isnan(Fs1) || isnan(Fs2)) { + if (std::isnan(Fs1) || std::isnan(Fs2)) { if (issignalingnan(Fs1) || issignalingnan(Fs2)) { FFLAGS |= FloatInvalid; } @@ -1073,7 +1081,7 @@ decode QUADRANT default Unknown::unknown() { float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); float fd; - if (isnan(fs1) || isnan(fs2)) { + if (std::isnan(fs1) || std::isnan(fs2)) { if (issignalingnan(fs1) || issignalingnan(fs2)) { FFLAGS |= FloatInvalid; } @@ -1084,7 +1092,7 @@ decode QUADRANT default Unknown::unknown() { Fd_bits = (uint64_t)reinterpret_cast<uint32_t&>(fd); }}, FloatDivOp); 0xd: fdiv_d({{ - if (isnan(Fs1) || isnan(Fs2)) { + if (std::isnan(Fs1) || std::isnan(Fs2)) { if (issignalingnan(Fs1) || issignalingnan(Fs2)) { FFLAGS |= FloatInvalid; } @@ -1268,7 +1276,7 @@ decode QUADRANT default Unknown::unknown() { float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); - if (isnan(fs1) || isnan(fs2)) { + if (std::isnan(fs1) || std::isnan(fs2)) { FFLAGS |= FloatInvalid; Rd = 0; } else { @@ -1280,7 +1288,7 @@ decode QUADRANT default Unknown::unknown() { float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); float fs2 = reinterpret_cast<float&>(temp = Fs2_bits); - if (isnan(fs1) || isnan(fs2)) { + if (std::isnan(fs1) || std::isnan(fs2)) { FFLAGS |= FloatInvalid; Rd = 0; } else { @@ -1300,7 +1308,7 @@ decode QUADRANT default Unknown::unknown() { } 0x51: decode ROUND_MODE { 0x0: fle_d({{ - if (isnan(Fs1) || isnan(Fs2)) { + if (std::isnan(Fs1) || std::isnan(Fs2)) { FFLAGS |= FloatInvalid; Rd = 0; } else { @@ -1308,7 +1316,7 @@ decode QUADRANT default Unknown::unknown() { } }}, FloatCmpOp); 0x1: flt_d({{ - if (isnan(Fs1) || isnan(Fs2)) { + if (std::isnan(Fs1) || std::isnan(Fs2)) { FFLAGS |= FloatInvalid; Rd = 0; } else { @@ -1327,7 +1335,7 @@ decode QUADRANT default Unknown::unknown() { uint32_t temp; float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); - if (isnan(fs1)) { + if (std::isnan(fs1)) { Rd_sd = numeric_limits<int32_t>::max(); FFLAGS |= FloatInvalid; } else { @@ -1361,7 +1369,7 @@ decode QUADRANT default Unknown::unknown() { uint32_t temp; float fs1 = reinterpret_cast<float&>(temp = Fs1_bits); - if (isnan(fs1)) { + if (std::isnan(fs1)) { Rd_sd = numeric_limits<int64_t>::max(); FFLAGS |= FloatInvalid; } else { @@ -1690,4 +1698,4 @@ decode QUADRANT default Unknown::unknown() { } } } -}
\ No newline at end of file +} |