memset, // Fill memory with a byte value
// libm related functions.
- isnan, // Return true if fp argument is a NAN.
- isunordered, // Return true if fp arguments are unordered
+ isunordered, // Return true if either argument is a NaN
// Input/Output intrinsics.
readport,
// that set errno on a domain or other error.
static const char *DoesntAccessMemoryTable[] = {
// LLVM intrinsics:
- "llvm.frameaddress", "llvm.returnaddress", "llvm.readport", "llvm.isnan",
+ "llvm.frameaddress", "llvm.returnaddress", "llvm.readport", "llvm.isunordered",
"abs", "labs", "llabs", "imaxabs", "fabs", "fabsf", "fabsl",
"trunc", "truncf", "truncl", "ldexp",
if (getName() == "llvm.gcroot") return Intrinsic::gcroot;
break;
case 'i':
- if (getName() == "llvm.isnan") return Intrinsic::isnan;
if (getName() == "llvm.isunordered") return Intrinsic::isunordered;
break;
case 'l':
break;
}
- case Intrinsic::isnan:
- Assert1(FT->getNumParams() == 1,
- "Illegal # arguments for intrinsic function!", IF);
- Assert1(FT->getReturnType() == Type::BoolTy,
- "Return type is not bool!", IF);
- Assert1(FT->getParamType(0)->isFloatingPoint(),
- "Argument is not a floating point type!", IF);
- NumArgs = 1;
- break;
-
case Intrinsic::isunordered:
Assert1(FT->getNumParams() == 2,
"Illegal # arguments for intrinsic function!", IF);