}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
vcc.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 4)) {
// is -denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
}
if (bits(src1[lane], 7)) {
// is +denormal
- if (!std::isnormal(src0[lane])
+ if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
&& !std::signbit(src0[lane])) {
sdst.setBit(lane, 1);
continue;
if (src0[lane] == src1[lane]) {
vdst[lane] = std::ldexp(src0[lane], 128);
}
- } else if (!std::isnormal(src1[lane])) {
+ } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL) {
vdst[lane] = std::ldexp(src0[lane], 128);
- } else if (!std::isnormal(1.0 / src1[lane])
- && !std::isnormal(src2[lane] / src1[lane])) {
+ } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL
+ && std::fpclassify(src2[lane] / src1[lane])
+ == FP_SUBNORMAL) {
vcc.setBit(lane, 1);
if (src0[lane] == src1[lane]) {
vdst[lane] = std::ldexp(src0[lane], 128);
}
- } else if (!std::isnormal(1.0 / src1[lane])) {
+ } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL) {
vdst[lane] = std::ldexp(src0[lane], -128);
- } else if (!std::isnormal(src2[lane] / src1[lane])) {
+ } else if (std::fpclassify(src2[lane] / src1[lane])
+ == FP_SUBNORMAL) {
vcc.setBit(lane, 1);
if (src0[lane] == src2[lane]) {
vdst[lane] = std::ldexp(src0[lane], 128);