mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 00:16:30 +00:00
[flang] ieee_denorm (#132307)
Add support for the nonstandard ieee_denorm exception for real kinds 3, 4, 8 on x86 processors.
This commit is contained in:
parent
7b3885d47b
commit
92e0560347
@ -76,22 +76,74 @@ uint32_t RTNAME(MapException)(uint32_t excepts) {
|
||||
return except_value;
|
||||
}
|
||||
|
||||
// The following exception processing routines have a libm call component,
|
||||
// and where available, an additional component for handling the nonstandard
|
||||
// ieee_denorm exception. The denorm component does not subsume the libm
|
||||
// component; both are needed.
|
||||
|
||||
void RTNAME(feclearexcept)(uint32_t excepts) {
|
||||
feclearexcept(excepts);
|
||||
#if defined(_MM_EXCEPT_DENORM)
|
||||
_mm_setcsr(_mm_getcsr() & ~(excepts & _MM_EXCEPT_MASK));
|
||||
#endif
|
||||
}
|
||||
void RTNAME(feraiseexcept)(uint32_t excepts) {
|
||||
feraiseexcept(excepts);
|
||||
#if defined(_MM_EXCEPT_DENORM)
|
||||
_mm_setcsr(_mm_getcsr() | (excepts & _MM_EXCEPT_MASK));
|
||||
#endif
|
||||
}
|
||||
uint32_t RTNAME(fetestexcept)(uint32_t excepts) {
|
||||
#if defined(_MM_EXCEPT_DENORM)
|
||||
return (_mm_getcsr() & _MM_EXCEPT_MASK & excepts) | fetestexcept(excepts);
|
||||
#else
|
||||
return fetestexcept(excepts);
|
||||
#endif
|
||||
}
|
||||
void RTNAME(fedisableexcept)(uint32_t excepts) {
|
||||
#ifdef __USE_GNU
|
||||
fedisableexcept(excepts);
|
||||
#endif
|
||||
#if defined(_MM_EXCEPT_DENORM)
|
||||
_mm_setcsr(_mm_getcsr() | ((excepts & _MM_EXCEPT_MASK) << 7));
|
||||
#endif
|
||||
}
|
||||
void RTNAME(feenableexcept)(uint32_t excepts) {
|
||||
#ifdef __USE_GNU
|
||||
feenableexcept(excepts);
|
||||
#endif
|
||||
#if defined(_MM_EXCEPT_DENORM)
|
||||
_mm_setcsr(_mm_getcsr() & ~((excepts & _MM_EXCEPT_MASK) << 7));
|
||||
#endif
|
||||
}
|
||||
uint32_t RTNAME(fegetexcept)() {
|
||||
uint32_t excepts = 0;
|
||||
#ifdef __USE_GNU
|
||||
excepts = fegetexcept();
|
||||
#endif
|
||||
#if defined(_MM_EXCEPT_DENORM)
|
||||
return (63 - ((_mm_getcsr() >> 7) & _MM_EXCEPT_MASK)) | excepts;
|
||||
#else
|
||||
return excepts;
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check if the processor has the ability to control whether to halt or
|
||||
// continue execution when a given exception is raised.
|
||||
bool RTNAME(SupportHalting)([[maybe_unused]] uint32_t except) {
|
||||
#ifdef __USE_GNU
|
||||
except = RTNAME(MapException)(except);
|
||||
int currentSet = fegetexcept(), flipSet, ok;
|
||||
int currentSet = RTNAME(fegetexcept)(), flipSet;
|
||||
if (currentSet & except) {
|
||||
ok = fedisableexcept(except);
|
||||
flipSet = fegetexcept();
|
||||
ok |= feenableexcept(except);
|
||||
RTNAME(fedisableexcept)(except);
|
||||
flipSet = RTNAME(fegetexcept)();
|
||||
RTNAME(feenableexcept)(except);
|
||||
} else {
|
||||
ok = feenableexcept(except);
|
||||
flipSet = fegetexcept();
|
||||
ok |= fedisableexcept(except);
|
||||
RTNAME(feenableexcept)(except);
|
||||
flipSet = RTNAME(fegetexcept)();
|
||||
RTNAME(fedisableexcept)(except);
|
||||
}
|
||||
return ok != -1 && currentSet != flipSet;
|
||||
return currentSet != flipSet;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
@ -54,6 +54,13 @@ public:
|
||||
bool hasSubnormalFlushingControl(bool any = false) const;
|
||||
void set_hasSubnormalFlushingControl(int kind, bool yes = true);
|
||||
|
||||
// Check if a given real kind has support for raising a nonstandard
|
||||
// ieee_denorm exception.
|
||||
bool hasSubnormalExceptionSupport(int kind) const;
|
||||
// Check if all real kinds have support for the ieee_denorm exception.
|
||||
bool hasSubnormalExceptionSupport() const;
|
||||
void set_hasSubnormalExceptionSupport(int kind, bool yes = true);
|
||||
|
||||
Rounding roundingMode() const { return roundingMode_; }
|
||||
void set_roundingMode(Rounding);
|
||||
|
||||
@ -134,6 +141,7 @@ private:
|
||||
bool haltingSupportIsUnknownAtCompileTime_{false};
|
||||
bool areSubnormalsFlushedToZero_{false};
|
||||
bool hasSubnormalFlushingControl_[maxKind + 1]{};
|
||||
bool hasSubnormalExceptionSupport_[maxKind + 1]{};
|
||||
Rounding roundingMode_{defaultRounding};
|
||||
std::size_t procedurePointerByteSize_{8};
|
||||
std::size_t procedurePointerAlignment_{8};
|
||||
|
@ -26,6 +26,23 @@ namespace fir::runtime {
|
||||
mlir::Value genMapExcept(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
void genFeclearexcept(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
void genFeraiseexcept(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
mlir::Value genFetestexcept(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
void genFedisableexcept(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
void genFeenableexcept(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
mlir::Value genFegetexcept(fir::FirOpBuilder &builder, mlir::Location loc);
|
||||
|
||||
mlir::Value genSupportHalting(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
mlir::Value excepts);
|
||||
|
||||
|
@ -6,7 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Map Fortran ieee_arithmetic module exceptions to fenv.h exceptions.
|
||||
// Support for floating point exceptions and related floating point environment
|
||||
// functionality.
|
||||
|
||||
#ifndef FORTRAN_RUNTIME_EXCEPTIONS_H_
|
||||
#define FORTRAN_RUNTIME_EXCEPTIONS_H_
|
||||
@ -25,6 +26,15 @@ extern "C" {
|
||||
// This mapping is done at runtime to support cross compilation.
|
||||
std::uint32_t RTNAME(MapException)(std::uint32_t excepts);
|
||||
|
||||
// Exception processing functions that call the corresponding libm functions,
|
||||
// and also include support for denormal exceptions where available.
|
||||
void RTNAME(feclearexcept)(std::uint32_t excepts);
|
||||
void RTNAME(feraiseexcept)(std::uint32_t excepts);
|
||||
std::uint32_t RTNAME(fetestexcept)(std::uint32_t excepts);
|
||||
void RTNAME(fedisableexcept)(std::uint32_t excepts);
|
||||
void RTNAME(feenableexcept)(std::uint32_t excepts);
|
||||
std::uint32_t RTNAME(fegetexcept)(void);
|
||||
|
||||
// Check if the processor has the ability to control whether to halt
|
||||
// or continue exeuction when a given exception is raised.
|
||||
bool RTNAME(SupportHalting)(uint32_t except);
|
||||
|
@ -29,6 +29,10 @@ namespace Fortran::tools {
|
||||
targetCharacteristics.set_hasSubnormalFlushingControl(/*kind=*/3);
|
||||
targetCharacteristics.set_hasSubnormalFlushingControl(/*kind=*/4);
|
||||
targetCharacteristics.set_hasSubnormalFlushingControl(/*kind=*/8);
|
||||
// ieee_denorm exception support is nonstandard.
|
||||
targetCharacteristics.set_hasSubnormalExceptionSupport(/*kind=*/3);
|
||||
targetCharacteristics.set_hasSubnormalExceptionSupport(/*kind=*/4);
|
||||
targetCharacteristics.set_hasSubnormalExceptionSupport(/*kind=*/8);
|
||||
}
|
||||
|
||||
if (targetTriple.isARM() || targetTriple.isAArch64()) {
|
||||
|
@ -875,8 +875,38 @@ Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction(
|
||||
return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
|
||||
IeeeFeature::Divide)};
|
||||
} else if (name == "__builtin_ieee_support_flag") {
|
||||
return Expr<T>{context.targetCharacteristics().ieeeFeatures().test(
|
||||
IeeeFeature::Flags)};
|
||||
if (context.targetCharacteristics().ieeeFeatures().test(
|
||||
IeeeFeature::Flags)) {
|
||||
if (args[0]) {
|
||||
if (const auto *cst{UnwrapExpr<Constant<SomeDerived>>(args[0])}) {
|
||||
if (auto constr{cst->GetScalarValue()}) {
|
||||
if (StructureConstructorValues & values{constr->values()};
|
||||
values.size() == 1) {
|
||||
const Expr<SomeType> &value{values.begin()->second.value()};
|
||||
if (auto flag{ToInt64(value)}) {
|
||||
if (flag != _FORTRAN_RUNTIME_IEEE_DENORM) {
|
||||
// Check for suppport for standard exceptions.
|
||||
return Expr<T>{
|
||||
context.targetCharacteristics().ieeeFeatures().test(
|
||||
IeeeFeature::Flags)};
|
||||
} else if (args[1]) {
|
||||
// Check for nonstandard ieee_denorm exception support for
|
||||
// a given kind.
|
||||
return Expr<T>{context.targetCharacteristics()
|
||||
.hasSubnormalExceptionSupport(
|
||||
args[1]->GetType().value().kind())};
|
||||
} else {
|
||||
// Check for nonstandard ieee_denorm exception support for
|
||||
// all kinds.
|
||||
return Expr<T>{context.targetCharacteristics()
|
||||
.hasSubnormalExceptionSupport()};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (name == "__builtin_ieee_support_halting") {
|
||||
if (!context.targetCharacteristics()
|
||||
.haltingSupportIsUnknownAtCompileTime()) {
|
||||
|
@ -134,6 +134,30 @@ void TargetCharacteristics::set_hasSubnormalFlushingControl(
|
||||
hasSubnormalFlushingControl_[kind] = yes;
|
||||
}
|
||||
|
||||
// Check if a given real kind has (nonstandard) ieee_denorm exception control.
|
||||
bool TargetCharacteristics::hasSubnormalExceptionSupport(int kind) const {
|
||||
CHECK(kind > 0 && kind <= maxKind);
|
||||
CHECK(CanSupportType(TypeCategory::Real, kind));
|
||||
return hasSubnormalExceptionSupport_[kind];
|
||||
}
|
||||
|
||||
// Check if all real kinds have support for the ieee_denorm exception.
|
||||
bool TargetCharacteristics::hasSubnormalExceptionSupport() const {
|
||||
for (int kind{1}; kind <= maxKind; ++kind) {
|
||||
if (CanSupportType(TypeCategory::Real, kind) &&
|
||||
!hasSubnormalExceptionSupport_[kind]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void TargetCharacteristics::set_hasSubnormalExceptionSupport(
|
||||
int kind, bool yes) {
|
||||
CHECK(kind > 0 && kind <= maxKind);
|
||||
hasSubnormalExceptionSupport_[kind] = yes;
|
||||
}
|
||||
|
||||
void TargetCharacteristics::set_roundingMode(Rounding rounding) {
|
||||
roundingMode_ = rounding;
|
||||
}
|
||||
|
@ -4571,8 +4571,8 @@ void IntrinsicLibrary::genRaiseExcept(int excepts, mlir::Value cond) {
|
||||
builder.setInsertionPointToStart(&ifOp.getThenRegion().front());
|
||||
}
|
||||
mlir::Type i32Ty = builder.getIntegerType(32);
|
||||
genRuntimeCall(
|
||||
"feraiseexcept", i32Ty,
|
||||
fir::runtime::genFeraiseexcept(
|
||||
builder, loc,
|
||||
fir::runtime::genMapExcept(
|
||||
builder, loc, builder.createIntegerConstant(loc, i32Ty, excepts)));
|
||||
if (cond)
|
||||
@ -4939,8 +4939,8 @@ void IntrinsicLibrary::genIeeeGetFlag(llvm::ArrayRef<fir::ExtendedValue> args) {
|
||||
mlir::Value zero = builder.createIntegerConstant(loc, i32Ty, 0);
|
||||
auto [fieldRef, ignore] = getFieldRef(builder, loc, flag);
|
||||
mlir::Value field = builder.create<fir::LoadOp>(loc, fieldRef);
|
||||
mlir::Value excepts = IntrinsicLibrary::genRuntimeCall(
|
||||
"fetestexcept", i32Ty,
|
||||
mlir::Value excepts = fir::runtime::genFetestexcept(
|
||||
builder, loc,
|
||||
fir::runtime::genMapExcept(
|
||||
builder, loc, builder.create<fir::ConvertOp>(loc, i32Ty, field)));
|
||||
mlir::Value logicalResult = builder.create<fir::ConvertOp>(
|
||||
@ -4963,8 +4963,7 @@ void IntrinsicLibrary::genIeeeGetHaltingMode(
|
||||
mlir::Value zero = builder.createIntegerConstant(loc, i32Ty, 0);
|
||||
auto [fieldRef, ignore] = getFieldRef(builder, loc, flag);
|
||||
mlir::Value field = builder.create<fir::LoadOp>(loc, fieldRef);
|
||||
mlir::Value haltSet =
|
||||
IntrinsicLibrary::genRuntimeCall("fegetexcept", i32Ty, {});
|
||||
mlir::Value haltSet = fir::runtime::genFegetexcept(builder, loc);
|
||||
mlir::Value intResult = builder.create<mlir::arith::AndIOp>(
|
||||
loc, haltSet,
|
||||
fir::runtime::genMapExcept(
|
||||
@ -5712,9 +5711,11 @@ void IntrinsicLibrary::genIeeeSetFlagOrHaltingMode(
|
||||
loc, builder.create<fir::ConvertOp>(loc, i1Ty, getBase(args[1])),
|
||||
/*withElseRegion=*/true);
|
||||
builder.setInsertionPointToStart(&ifOp.getThenRegion().front());
|
||||
genRuntimeCall(isFlag ? "feraiseexcept" : "feenableexcept", i32Ty, except);
|
||||
(isFlag ? fir::runtime::genFeraiseexcept : fir::runtime::genFeenableexcept)(
|
||||
builder, loc, builder.create<fir::ConvertOp>(loc, i32Ty, except));
|
||||
builder.setInsertionPointToStart(&ifOp.getElseRegion().front());
|
||||
genRuntimeCall(isFlag ? "feclearexcept" : "fedisableexcept", i32Ty, except);
|
||||
(isFlag ? fir::runtime::genFeclearexcept : fir::runtime::genFedisableexcept)(
|
||||
builder, loc, builder.create<fir::ConvertOp>(loc, i32Ty, except));
|
||||
builder.setInsertionPointAfter(ifOp);
|
||||
}
|
||||
|
||||
@ -5805,24 +5806,61 @@ mlir::Value IntrinsicLibrary::genIeeeSignbit(mlir::Type resultType,
|
||||
fir::ExtendedValue
|
||||
IntrinsicLibrary::genIeeeSupportFlag(mlir::Type resultType,
|
||||
llvm::ArrayRef<fir::ExtendedValue> args) {
|
||||
// Check if a floating point exception flag is supported. A flag is
|
||||
// supported either for all type kinds or none. An optional kind argument X
|
||||
// is therefore ignored. Standard flags are all supported. The nonstandard
|
||||
// DENORM extension is not supported, at least for now.
|
||||
// Check if a floating point exception flag is supported.
|
||||
assert(args.size() == 1 || args.size() == 2);
|
||||
mlir::Type i1Ty = builder.getI1Type();
|
||||
mlir::Type i32Ty = builder.getIntegerType(32);
|
||||
auto [fieldRef, fieldTy] = getFieldRef(builder, loc, getBase(args[0]));
|
||||
mlir::Value flag = builder.create<fir::LoadOp>(loc, fieldRef);
|
||||
mlir::Value mask = builder.createIntegerConstant( // values are powers of 2
|
||||
mlir::Value standardFlagMask = builder.createIntegerConstant(
|
||||
loc, fieldTy,
|
||||
_FORTRAN_RUNTIME_IEEE_INVALID | _FORTRAN_RUNTIME_IEEE_DIVIDE_BY_ZERO |
|
||||
_FORTRAN_RUNTIME_IEEE_OVERFLOW | _FORTRAN_RUNTIME_IEEE_UNDERFLOW |
|
||||
_FORTRAN_RUNTIME_IEEE_INEXACT);
|
||||
return builder.createConvert(
|
||||
loc, resultType,
|
||||
builder.create<mlir::arith::CmpIOp>(
|
||||
loc, mlir::arith::CmpIPredicate::ne,
|
||||
builder.create<mlir::arith::AndIOp>(loc, flag, mask),
|
||||
builder.createIntegerConstant(loc, fieldTy, 0)));
|
||||
mlir::Value isStandardFlag = builder.create<mlir::arith::CmpIOp>(
|
||||
loc, mlir::arith::CmpIPredicate::ne,
|
||||
builder.create<mlir::arith::AndIOp>(loc, flag, standardFlagMask),
|
||||
builder.createIntegerConstant(loc, fieldTy, 0));
|
||||
fir::IfOp ifOp = builder.create<fir::IfOp>(loc, i1Ty, isStandardFlag,
|
||||
/*withElseRegion=*/true);
|
||||
// Standard flags are supported.
|
||||
builder.setInsertionPointToStart(&ifOp.getThenRegion().front());
|
||||
builder.create<fir::ResultOp>(loc, builder.createBool(loc, true));
|
||||
|
||||
// TargetCharacteristics information for the nonstandard ieee_denorm flag
|
||||
// is not available here. So use a runtime check restricted to possibly
|
||||
// supported kinds.
|
||||
builder.setInsertionPointToStart(&ifOp.getElseRegion().front());
|
||||
bool mayBeSupported = false;
|
||||
if (mlir::Value arg1 = getBase(args[1])) {
|
||||
mlir::Type arg1Ty = arg1.getType();
|
||||
if (fir::ReferenceType refTy = mlir::dyn_cast<fir::ReferenceType>(arg1Ty))
|
||||
arg1Ty = refTy.getEleTy();
|
||||
switch (mlir::dyn_cast<mlir::FloatType>(arg1Ty).getWidth()) {
|
||||
case 16:
|
||||
mayBeSupported = arg1Ty.isBF16(); // kind=3
|
||||
break;
|
||||
case 32: // kind=4
|
||||
case 64: // kind=8
|
||||
mayBeSupported = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mayBeSupported) {
|
||||
mlir::Value isDenorm = builder.create<mlir::arith::CmpIOp>(
|
||||
loc, mlir::arith::CmpIPredicate::eq, flag,
|
||||
builder.createIntegerConstant(loc, fieldTy,
|
||||
_FORTRAN_RUNTIME_IEEE_DENORM));
|
||||
mlir::Value result = builder.create<mlir::arith::AndIOp>(
|
||||
loc, isDenorm,
|
||||
fir::runtime::genSupportHalting(
|
||||
builder, loc, builder.create<fir::ConvertOp>(loc, i32Ty, flag)));
|
||||
builder.create<fir::ResultOp>(loc, result);
|
||||
} else {
|
||||
builder.create<fir::ResultOp>(loc, builder.createBool(loc, false));
|
||||
}
|
||||
builder.setInsertionPointAfter(ifOp);
|
||||
return builder.createConvert(loc, resultType, ifOp.getResult(0));
|
||||
}
|
||||
|
||||
// IEEE_SUPPORT_HALTING
|
||||
@ -5838,7 +5876,7 @@ fir::ExtendedValue IntrinsicLibrary::genIeeeSupportHalting(
|
||||
return builder.createConvert(
|
||||
loc, resultType,
|
||||
fir::runtime::genSupportHalting(
|
||||
builder, loc, {builder.create<fir::ConvertOp>(loc, i32Ty, field)}));
|
||||
builder, loc, builder.create<fir::ConvertOp>(loc, i32Ty, field)));
|
||||
}
|
||||
|
||||
// IEEE_SUPPORT_ROUNDING
|
||||
@ -5874,10 +5912,10 @@ fir::ExtendedValue IntrinsicLibrary::genIeeeSupportStandard(
|
||||
// if halting control is supported, as that is the only support component
|
||||
// that may not be available.
|
||||
assert(args.size() <= 1);
|
||||
mlir::Value nearest = builder.createIntegerConstant(
|
||||
loc, builder.getIntegerType(32), _FORTRAN_RUNTIME_IEEE_NEAREST);
|
||||
mlir::Value overflow = builder.createIntegerConstant(
|
||||
loc, builder.getIntegerType(32), _FORTRAN_RUNTIME_IEEE_OVERFLOW);
|
||||
return builder.createConvert(
|
||||
loc, resultType, fir::runtime::genSupportHalting(builder, loc, nearest));
|
||||
loc, resultType, fir::runtime::genSupportHalting(builder, loc, overflow));
|
||||
}
|
||||
|
||||
// IEEE_UNORDERED
|
||||
|
@ -21,6 +21,49 @@ mlir::Value fir::runtime::genMapExcept(fir::FirOpBuilder &builder,
|
||||
return builder.create<fir::CallOp>(loc, func, excepts).getResult(0);
|
||||
}
|
||||
|
||||
void fir::runtime::genFeclearexcept(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc, mlir::Value excepts) {
|
||||
mlir::func::FuncOp func{
|
||||
fir::runtime::getRuntimeFunc<mkRTKey(feclearexcept)>(loc, builder)};
|
||||
builder.create<fir::CallOp>(loc, func, excepts);
|
||||
}
|
||||
|
||||
void fir::runtime::genFeraiseexcept(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc, mlir::Value excepts) {
|
||||
mlir::func::FuncOp func{
|
||||
fir::runtime::getRuntimeFunc<mkRTKey(feraiseexcept)>(loc, builder)};
|
||||
builder.create<fir::CallOp>(loc, func, excepts);
|
||||
}
|
||||
|
||||
mlir::Value fir::runtime::genFetestexcept(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc,
|
||||
mlir::Value excepts) {
|
||||
mlir::func::FuncOp func{
|
||||
fir::runtime::getRuntimeFunc<mkRTKey(fetestexcept)>(loc, builder)};
|
||||
return builder.create<fir::CallOp>(loc, func, excepts).getResult(0);
|
||||
}
|
||||
|
||||
void fir::runtime::genFedisableexcept(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc, mlir::Value excepts) {
|
||||
mlir::func::FuncOp func{
|
||||
fir::runtime::getRuntimeFunc<mkRTKey(fedisableexcept)>(loc, builder)};
|
||||
builder.create<fir::CallOp>(loc, func, excepts);
|
||||
}
|
||||
|
||||
void fir::runtime::genFeenableexcept(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc, mlir::Value excepts) {
|
||||
mlir::func::FuncOp func{
|
||||
fir::runtime::getRuntimeFunc<mkRTKey(feenableexcept)>(loc, builder)};
|
||||
builder.create<fir::CallOp>(loc, func, excepts);
|
||||
}
|
||||
|
||||
mlir::Value fir::runtime::genFegetexcept(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc) {
|
||||
mlir::func::FuncOp func{
|
||||
fir::runtime::getRuntimeFunc<mkRTKey(fegetexcept)>(loc, builder)};
|
||||
return builder.create<fir::CallOp>(loc, func).getResult(0);
|
||||
}
|
||||
|
||||
mlir::Value fir::runtime::genSupportHalting(fir::FirOpBuilder &builder,
|
||||
mlir::Location loc,
|
||||
mlir::Value excepts) {
|
||||
|
@ -42,7 +42,7 @@ program p
|
||||
! CHECK: %[[V_185:[0-9]+]] = arith.cmpf oeq, %[[V_180]], %[[V_181]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_184]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_186:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_153]], %[[V_185]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [Q]', x(i), 'eq', x(j), ieee_quiet_eq(x(i), x(j))
|
||||
@ -63,7 +63,7 @@ program p
|
||||
! CHECK: %[[V_217:[0-9]+]] = arith.cmpf oge, %[[V_212]], %[[V_213]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_216]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_218:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_188]], %[[V_217]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [Q]', x(i), 'ge', x(j), ieee_quiet_ge(x(i), x(j))
|
||||
@ -84,7 +84,7 @@ program p
|
||||
! CHECK: %[[V_249:[0-9]+]] = arith.cmpf ogt, %[[V_244]], %[[V_245]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_248]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_250:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_220]], %[[V_249]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [Q]', x(i), 'gt', x(j), ieee_quiet_gt(x(i), x(j))
|
||||
@ -105,7 +105,7 @@ program p
|
||||
! CHECK: %[[V_281:[0-9]+]] = arith.cmpf ole, %[[V_276]], %[[V_277]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_280]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_282:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_252]], %[[V_281]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [Q]', x(i), 'le', x(j), ieee_quiet_le(x(i), x(j))
|
||||
@ -126,7 +126,7 @@ program p
|
||||
! CHECK: %[[V_313:[0-9]+]] = arith.cmpf olt, %[[V_308]], %[[V_309]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_312]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_284]], %[[V_313]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [Q]', x(i), 'lt', x(j), ieee_quiet_lt(x(i), x(j))
|
||||
@ -147,7 +147,7 @@ program p
|
||||
! CHECK: %[[V_345:[0-9]+]] = arith.cmpf une, %[[V_340]], %[[V_341]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_344]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_346:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_316]], %[[V_345]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [Q]', x(i), 'ne', x(j), ieee_quiet_ne(x(i), x(j))
|
||||
@ -166,7 +166,7 @@ program p
|
||||
! CHECK: %[[V_375:[0-9]+]] = arith.cmpf oeq, %[[V_372]], %[[V_373]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_374]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_376:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_348]], %[[V_375]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [S]', x(i), 'eq', x(j), ieee_signaling_eq(x(i), x(j))
|
||||
@ -185,7 +185,7 @@ program p
|
||||
! CHECK: %[[V_404:[0-9]+]] = arith.cmpf oge, %[[V_401]], %[[V_402]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_403]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_405:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_378]], %[[V_404]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [S]', x(i), 'ge', x(j), ieee_signaling_ge(x(i), x(j))
|
||||
@ -204,7 +204,7 @@ program p
|
||||
! CHECK: %[[V_433:[0-9]+]] = arith.cmpf ogt, %[[V_430]], %[[V_431]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_432]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_434:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_407]], %[[V_433]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [S]', x(i), 'gt', x(j), ieee_signaling_gt(x(i), x(j))
|
||||
@ -223,7 +223,7 @@ program p
|
||||
! CHECK: %[[V_462:[0-9]+]] = arith.cmpf ole, %[[V_459]], %[[V_460]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_461]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_463:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_436]], %[[V_462]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [S]', x(i), 'le', x(j), ieee_signaling_le(x(i), x(j))
|
||||
@ -242,7 +242,7 @@ program p
|
||||
! CHECK: %[[V_491:[0-9]+]] = arith.cmpf olt, %[[V_488]], %[[V_489]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_490]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_492:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_465]], %[[V_491]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [S]', x(i), 'lt', x(j), ieee_signaling_lt(x(i), x(j))
|
||||
@ -261,7 +261,7 @@ program p
|
||||
! CHECK: %[[V_520:[0-9]+]] = arith.cmpf une, %[[V_517]], %[[V_518]] {{.*}} : f32
|
||||
! CHECK: fir.if %[[V_519]] {
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_527:[0-9]+]] = fir.call @feraiseexcept(%[[V_526]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_526]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_521:[0-9]+]] = fir.call @_FortranAioOutputLogical(%[[V_494]], %[[V_520]]) fastmath<contract> : (!fir.ref<i8>, i1) -> i1
|
||||
print*, ' [S]', x(i), 'ne', x(j), ieee_signaling_ne(x(i), x(j))
|
||||
|
@ -38,9 +38,9 @@
|
||||
! CHECK: %[[V_98:[0-9]+]] = fir.convert %[[V_97]] : (i8) -> i32
|
||||
! CHECK: %[[V_99:[0-9]+]] = fir.call @_FortranAMapException(%[[V_98]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @feraiseexcept(%[[V_99]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_99]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @feclearexcept(%[[V_99]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_99]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
call ieee_set_flag(ieee_invalid, .false.)
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
! CHECK: %[[V_102:[0-9]+]] = fir.load %[[V_101]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_103:[0-9]+]] = fir.convert %[[V_102]] : (i8) -> i32
|
||||
! CHECK: %[[V_104:[0-9]+]] = fir.call @_FortranAMapException(%[[V_103]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_105:[0-9]+]] = fir.call @fetestexcept(%[[V_104]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_105:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_104]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_106:[0-9]+]] = arith.cmpi ne, %[[V_105]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_107:[0-9]+]] = fir.convert %[[V_106]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_107]] to %[[V_57]] : !fir.ref<!fir.logical<4>>
|
||||
@ -64,9 +64,9 @@
|
||||
! CHECK: %[[V_121:[0-9]+]] = fir.convert %[[V_120]] : (i8) -> i32
|
||||
! CHECK: %[[V_122:[0-9]+]] = fir.call @_FortranAMapException(%[[V_121]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %true{{[_0-9]*}} {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @feraiseexcept(%[[V_122]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_122]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @feclearexcept(%[[V_122]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_122]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
call ieee_set_flag(ieee_invalid, .true.)
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
! CHECK: %[[V_125:[0-9]+]] = fir.load %[[V_124]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_126:[0-9]+]] = fir.convert %[[V_125]] : (i8) -> i32
|
||||
! CHECK: %[[V_127:[0-9]+]] = fir.call @_FortranAMapException(%[[V_126]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_128:[0-9]+]] = fir.call @fetestexcept(%[[V_127]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_128:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_127]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_129:[0-9]+]] = arith.cmpi ne, %[[V_128]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_130:[0-9]+]] = fir.convert %[[V_129]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_130]] to %[[V_57]] : !fir.ref<!fir.logical<4>>
|
||||
@ -93,9 +93,9 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.convert %[[V_312]] : (i8) -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAMapException(%[[V_313]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feraiseexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feclearexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_flag([ieee_invalid, ieee_overflow], .false.)
|
||||
@ -109,7 +109,7 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @_FortranAMapException(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.cmpi ne, %[[V_316]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.convert %[[V_317]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_318]] to %[[V_311]] : !fir.ref<!fir.logical<4>>
|
||||
@ -132,9 +132,9 @@
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = fir.convert %[[V_312]] : (!fir.logical<4>) -> i1
|
||||
! CHECK: fir.if %[[V_317]] {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @feraiseexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @feclearexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_flag([ieee_invalid, ieee_overflow], [.false., .true.])
|
||||
@ -147,7 +147,7 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @_FortranAMapException(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.cmpi ne, %[[V_316]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.convert %[[V_317]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_318]] to %[[V_311]] : !fir.ref<!fir.logical<4>>
|
||||
@ -166,9 +166,9 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.convert %[[V_312]] : (i8) -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAMapException(%[[V_313]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %true{{[_0-9]*}} {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feraiseexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feclearexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_flag(ieee_usual, .true.)
|
||||
@ -181,7 +181,7 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @_FortranAMapException(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.cmpi ne, %[[V_316]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.convert %[[V_317]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_318]] to %[[V_311]] : !fir.ref<!fir.logical<4>>
|
||||
@ -204,9 +204,9 @@
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = fir.convert %[[V_312]] : (!fir.logical<4>) -> i1
|
||||
! CHECK: fir.if %[[V_317]] {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @feraiseexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @feclearexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_flag(ieee_usual, [.true., .false., .true.])
|
||||
@ -219,7 +219,7 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @_FortranAMapException(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.cmpi ne, %[[V_316]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.convert %[[V_317]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_318]] to %[[V_311]] : !fir.ref<!fir.logical<4>>
|
||||
@ -238,9 +238,9 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.convert %[[V_312]] : (i8) -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAMapException(%[[V_313]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feraiseexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feclearexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_flag(ieee_all, .false.)
|
||||
@ -253,7 +253,7 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @_FortranAMapException(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.cmpi ne, %[[V_316]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.convert %[[V_317]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_318]] to %[[V_311]] : !fir.ref<!fir.logical<4>>
|
||||
@ -279,16 +279,16 @@
|
||||
! CHECK: %[[V_225:[0-9]+]] = fir.convert %[[V_224]] : (i8) -> i32
|
||||
! CHECK: %[[V_226:[0-9]+]] = fir.call @_FortranAMapException(%[[V_225]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @feenableexcept(%[[V_226]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_226]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @fedisableexcept(%[[V_226]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_226]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode(ieee_invalid, .false.)
|
||||
|
||||
! CHECK: %[[V_227:[0-9]+]] = fir.declare %[[V_80]] {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QQro._QM__fortran_builtinsT__builtin_ieee_flag_type.0"} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>
|
||||
! CHECK: %[[V_228:[0-9]+]] = fir.coordinate_of %[[V_227]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_229:[0-9]+]] = fir.load %[[V_228]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_230:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_230:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_231:[0-9]+]] = fir.convert %[[V_229]] : (i8) -> i32
|
||||
! CHECK: %[[V_232:[0-9]+]] = fir.call @_FortranAMapException(%[[V_231]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_233:[0-9]+]] = arith.andi %[[V_230]], %[[V_232]] : i32
|
||||
@ -306,16 +306,16 @@
|
||||
! CHECK: %[[V_247:[0-9]+]] = fir.convert %[[V_246]] : (i8) -> i32
|
||||
! CHECK: %[[V_248:[0-9]+]] = fir.call @_FortranAMapException(%[[V_247]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %true{{[_0-9]*}} {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @feenableexcept(%[[V_248]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_248]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_310:[0-9]+]] = fir.call @fedisableexcept(%[[V_248]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_248]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode(ieee_invalid, .true.)
|
||||
|
||||
! CHECK: %[[V_249:[0-9]+]] = fir.declare %[[V_80]] {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QQro._QM__fortran_builtinsT__builtin_ieee_flag_type.0"} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>
|
||||
! CHECK: %[[V_250:[0-9]+]] = fir.coordinate_of %[[V_249]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_251:[0-9]+]] = fir.load %[[V_250]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_252:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_252:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_253:[0-9]+]] = fir.convert %[[V_251]] : (i8) -> i32
|
||||
! CHECK: %[[V_254:[0-9]+]] = fir.call @_FortranAMapException(%[[V_253]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_255:[0-9]+]] = arith.andi %[[V_252]], %[[V_254]] : i32
|
||||
@ -335,9 +335,9 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.convert %[[V_312]] : (i8) -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAMapException(%[[V_313]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feenableexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @fedisableexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode([ieee_invalid, ieee_overflow], .false.)
|
||||
@ -348,7 +348,7 @@
|
||||
! CHECK: %[[V_311:[0-9]+]] = fir.array_coor %[[V_60]](%[[V_59]]) %arg0 : (!fir.ref<!fir.array<2x!fir.logical<4>>>, !fir.shape<1>, index) -> !fir.ref<!fir.logical<4>>
|
||||
! CHECK: %[[V_312:[0-9]+]] = fir.coordinate_of %[[V_310]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.andi %[[V_314]], %[[V_316]] : i32
|
||||
@ -373,9 +373,9 @@
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = fir.convert %[[V_312]] : (!fir.logical<4>) -> i1
|
||||
! CHECK: fir.if %[[V_317]] {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @feenableexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @fedisableexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode([ieee_invalid, ieee_overflow], [.false., .true.])
|
||||
@ -386,7 +386,7 @@
|
||||
! CHECK: %[[V_311:[0-9]+]] = fir.array_coor %[[V_60]](%[[V_59]]) %arg0 : (!fir.ref<!fir.array<2x!fir.logical<4>>>, !fir.shape<1>, index) -> !fir.ref<!fir.logical<4>>
|
||||
! CHECK: %[[V_312:[0-9]+]] = fir.coordinate_of %[[V_310]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.andi %[[V_314]], %[[V_316]] : i32
|
||||
@ -407,9 +407,9 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.convert %[[V_312]] : (i8) -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAMapException(%[[V_313]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %true{{[_0-9]*}} {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feenableexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @fedisableexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode(ieee_usual, .true.)
|
||||
@ -420,7 +420,7 @@
|
||||
! CHECK: %[[V_311:[0-9]+]] = fir.array_coor %[[V_64]](%[[V_54]]) %arg0 : (!fir.ref<!fir.array<3x!fir.logical<4>>>, !fir.shape<1>, index) -> !fir.ref<!fir.logical<4>>
|
||||
! CHECK: %[[V_312:[0-9]+]] = fir.coordinate_of %[[V_310]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.andi %[[V_314]], %[[V_316]] : i32
|
||||
@ -445,9 +445,9 @@
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = fir.convert %[[V_312]] : (!fir.logical<4>) -> i1
|
||||
! CHECK: fir.if %[[V_317]] {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @feenableexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_318:[0-9]+]] = fir.call @fedisableexcept(%[[V_316]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_316]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode(ieee_usual, [.true., .false., .true.])
|
||||
@ -458,7 +458,7 @@
|
||||
! CHECK: %[[V_311:[0-9]+]] = fir.array_coor %[[V_64]](%[[V_54]]) %arg0 : (!fir.ref<!fir.array<3x!fir.logical<4>>>, !fir.shape<1>, index) -> !fir.ref<!fir.logical<4>>
|
||||
! CHECK: %[[V_312:[0-9]+]] = fir.coordinate_of %[[V_310]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.andi %[[V_314]], %[[V_316]] : i32
|
||||
@ -479,9 +479,9 @@
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.convert %[[V_312]] : (i8) -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @_FortranAMapException(%[[V_313]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %true{{[_0-9]*}} {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @feenableexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feenableexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.call @fedisableexcept(%[[V_314]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}fedisableexcept(%[[V_314]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
call ieee_set_halting_mode(ieee_all, .true.)
|
||||
@ -492,7 +492,7 @@
|
||||
! CHECK: %[[V_311:[0-9]+]] = fir.array_coor %[[V_62]](%[[V_1]]) %arg0 : (!fir.ref<!fir.array<5x!fir.logical<4>>>, !fir.shape<1>, index) -> !fir.ref<!fir.logical<4>>
|
||||
! CHECK: %[[V_312:[0-9]+]] = fir.coordinate_of %[[V_310]], _QM__fortran_builtinsT__builtin_ieee_flag_type.flag : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_ieee_flag_type{_QM__fortran_builtinsT__builtin_ieee_flag_type.flag:i8}>>) -> !fir.ref<i8>
|
||||
! CHECK: %[[V_313:[0-9]+]] = fir.load %[[V_312]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call @fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_314:[0-9]+]] = fir.call {{.*}}fegetexcept() fastmath<contract> : () -> i32
|
||||
! CHECK: %[[V_315:[0-9]+]] = fir.convert %[[V_313]] : (i8) -> i32
|
||||
! CHECK: %[[V_316:[0-9]+]] = fir.call @_FortranAMapException(%[[V_315]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_317:[0-9]+]] = arith.andi %[[V_314]], %[[V_316]] : i32
|
||||
|
@ -20,9 +20,9 @@ subroutine out(x)
|
||||
! CHECK: %[[V_70:[0-9]+]] = fir.convert %[[V_69]] : (i8) -> i32
|
||||
! CHECK: %[[V_71:[0-9]+]] = fir.call @_FortranAMapException(%[[V_70]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_101:[0-9]+]] = fir.call @feraiseexcept(%[[V_71]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_71]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_101:[0-9]+]] = fir.call @feclearexcept(%[[V_71]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_71]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
call ieee_set_flag(ieee_divide_by_zero, .false.)
|
||||
|
||||
@ -31,7 +31,7 @@ subroutine out(x)
|
||||
! CHECK: %[[V_74:[0-9]+]] = arith.cmpf oeq, %[[V_72]], %cst{{[_0-9]*}} {{.*}} : f64
|
||||
! CHECK: %[[V_75:[0-9]+]] = fir.if %[[V_74]] -> (f64) {
|
||||
! CHECK: %[[V_101:[0-9]+]] = fir.call @_FortranAMapException(%c4{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_102:[0-9]+]] = fir.call @feraiseexcept(%[[V_101]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_101]]) fastmath<contract> : (i32)
|
||||
! CHECK: fir.result %cst{{[_0-9]*}} : f64
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_101:[0-9]+]] = arith.shli %[[V_73]], %c1{{.*}} : i64
|
||||
@ -56,7 +56,7 @@ subroutine out(x)
|
||||
! CHECK: %[[V_78:[0-9]+]] = fir.load %[[V_77]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_79:[0-9]+]] = fir.convert %[[V_78]] : (i8) -> i32
|
||||
! CHECK: %[[V_80:[0-9]+]] = fir.call @_FortranAMapException(%[[V_79]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_81:[0-9]+]] = fir.call @fetestexcept(%[[V_80]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_81:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_80]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_82:[0-9]+]] = arith.cmpi ne, %[[V_81]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_83:[0-9]+]] = fir.convert %[[V_82]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_83]] to %[[V_61]] : !fir.ref<!fir.logical<4>>
|
||||
|
@ -74,9 +74,9 @@ program p
|
||||
! CHECK: %[[V_206:[0-9]+]] = fir.convert %[[V_205]] : (i8) -> i32
|
||||
! CHECK: %[[V_207:[0-9]+]] = fir.call @_FortranAMapException(%[[V_206]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_207]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_207]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_207]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_207]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_208:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_209:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -102,7 +102,7 @@ program p
|
||||
! CHECK: %[[V_701:[0-9]+]] = arith.ori %[[V_700]], %[[V_699]] : i1
|
||||
! CHECK: fir.if %[[V_701]] {
|
||||
! CHECK: %[[V_702:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_703:[0-9]+]] = fir.call @feraiseexcept(%[[V_702]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_702]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_698]] : f32
|
||||
! CHECK: }
|
||||
@ -116,7 +116,7 @@ program p
|
||||
! CHECK: %[[V_214:[0-9]+]] = fir.load %[[V_213]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_215:[0-9]+]] = fir.convert %[[V_214]] : (i8) -> i32
|
||||
! CHECK: %[[V_216:[0-9]+]] = fir.call @_FortranAMapException(%[[V_215]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_217:[0-9]+]] = fir.call @fetestexcept(%[[V_216]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_217:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_216]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_218:[0-9]+]] = arith.cmpi ne, %[[V_217]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_219:[0-9]+]] = fir.convert %[[V_218]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_219]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -131,9 +131,9 @@ program p
|
||||
! CHECK: %[[V_271:[0-9]+]] = fir.convert %[[V_270]] : (i8) -> i32
|
||||
! CHECK: %[[V_272:[0-9]+]] = fir.call @_FortranAMapException(%[[V_271]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_272]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_272]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_272]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_272]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_273:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_274:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -161,7 +161,7 @@ program p
|
||||
! CHECK: %[[V_701:[0-9]+]] = arith.ori %[[V_700]], %[[V_699]] : i1
|
||||
! CHECK: fir.if %[[V_701]] {
|
||||
! CHECK: %[[V_702:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_703:[0-9]+]] = fir.call @feraiseexcept(%[[V_702]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_702]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_698]] : f32
|
||||
! CHECK: }
|
||||
@ -175,7 +175,7 @@ program p
|
||||
! CHECK: %[[V_281:[0-9]+]] = fir.load %[[V_280]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_282:[0-9]+]] = fir.convert %[[V_281]] : (i8) -> i32
|
||||
! CHECK: %[[V_283:[0-9]+]] = fir.call @_FortranAMapException(%[[V_282]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_284:[0-9]+]] = fir.call @fetestexcept(%[[V_283]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_284:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_283]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_285:[0-9]+]] = arith.cmpi ne, %[[V_284]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_286:[0-9]+]] = fir.convert %[[V_285]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_286]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -190,9 +190,9 @@ program p
|
||||
! CHECK: %[[V_332:[0-9]+]] = fir.convert %[[V_331]] : (i8) -> i32
|
||||
! CHECK: %[[V_333:[0-9]+]] = fir.call @_FortranAMapException(%[[V_332]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_333]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_333]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_333]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_333]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_334:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_335:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -222,7 +222,7 @@ program p
|
||||
! CHECK: %[[V_705:[0-9]+]] = arith.ori %[[V_704]], %[[V_703]] : i1
|
||||
! CHECK: fir.if %[[V_705]] {
|
||||
! CHECK: %[[V_706:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_707:[0-9]+]] = fir.call @feraiseexcept(%[[V_706]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_706]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_702]] : f32
|
||||
! CHECK: }
|
||||
@ -236,7 +236,7 @@ program p
|
||||
! CHECK: %[[V_340:[0-9]+]] = fir.load %[[V_339]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_341:[0-9]+]] = fir.convert %[[V_340]] : (i8) -> i32
|
||||
! CHECK: %[[V_342:[0-9]+]] = fir.call @_FortranAMapException(%[[V_341]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_343:[0-9]+]] = fir.call @fetestexcept(%[[V_342]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_343:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_342]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_344:[0-9]+]] = arith.cmpi ne, %[[V_343]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_345:[0-9]+]] = fir.convert %[[V_344]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_345]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -251,9 +251,9 @@ program p
|
||||
! CHECK: %[[V_391:[0-9]+]] = fir.convert %[[V_390]] : (i8) -> i32
|
||||
! CHECK: %[[V_392:[0-9]+]] = fir.call @_FortranAMapException(%[[V_391]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_392]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_392]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_392]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_392]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_393:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_394:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -285,7 +285,7 @@ program p
|
||||
! CHECK: %[[V_705:[0-9]+]] = arith.ori %[[V_704]], %[[V_703]] : i1
|
||||
! CHECK: fir.if %[[V_705]] {
|
||||
! CHECK: %[[V_706:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_707:[0-9]+]] = fir.call @feraiseexcept(%[[V_706]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_706]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_702]] : f32
|
||||
! CHECK: }
|
||||
@ -299,7 +299,7 @@ program p
|
||||
! CHECK: %[[V_401:[0-9]+]] = fir.load %[[V_400]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_402:[0-9]+]] = fir.convert %[[V_401]] : (i8) -> i32
|
||||
! CHECK: %[[V_403:[0-9]+]] = fir.call @_FortranAMapException(%[[V_402]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_404:[0-9]+]] = fir.call @fetestexcept(%[[V_403]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_404:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_403]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_405:[0-9]+]] = arith.cmpi ne, %[[V_404]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_406:[0-9]+]] = fir.convert %[[V_405]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_406]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -314,9 +314,9 @@ program p
|
||||
! CHECK: %[[V_452:[0-9]+]] = fir.convert %[[V_451]] : (i8) -> i32
|
||||
! CHECK: %[[V_453:[0-9]+]] = fir.call @_FortranAMapException(%[[V_452]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_453]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_453]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_453]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_453]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_454:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_455:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -342,7 +342,7 @@ program p
|
||||
! CHECK: %[[V_701:[0-9]+]] = arith.ori %[[V_700]], %[[V_699]] : i1
|
||||
! CHECK: fir.if %[[V_701]] {
|
||||
! CHECK: %[[V_702:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_703:[0-9]+]] = fir.call @feraiseexcept(%[[V_702]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_702]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_698]] : f32
|
||||
! CHECK: }
|
||||
@ -356,7 +356,7 @@ program p
|
||||
! CHECK: %[[V_460:[0-9]+]] = fir.load %[[V_459]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_461:[0-9]+]] = fir.convert %[[V_460]] : (i8) -> i32
|
||||
! CHECK: %[[V_462:[0-9]+]] = fir.call @_FortranAMapException(%[[V_461]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_463:[0-9]+]] = fir.call @fetestexcept(%[[V_462]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_463:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_462]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_464:[0-9]+]] = arith.cmpi ne, %[[V_463]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_465:[0-9]+]] = fir.convert %[[V_464]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_465]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -371,9 +371,9 @@ program p
|
||||
! CHECK: %[[V_511:[0-9]+]] = fir.convert %[[V_510]] : (i8) -> i32
|
||||
! CHECK: %[[V_512:[0-9]+]] = fir.call @_FortranAMapException(%[[V_511]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_512]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_512]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_512]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_512]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_513:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_514:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -401,7 +401,7 @@ program p
|
||||
! CHECK: %[[V_701:[0-9]+]] = arith.ori %[[V_700]], %[[V_699]] : i1
|
||||
! CHECK: fir.if %[[V_701]] {
|
||||
! CHECK: %[[V_702:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_703:[0-9]+]] = fir.call @feraiseexcept(%[[V_702]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_702]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_698]] : f32
|
||||
! CHECK: }
|
||||
@ -415,7 +415,7 @@ program p
|
||||
! CHECK: %[[V_521:[0-9]+]] = fir.load %[[V_520]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_522:[0-9]+]] = fir.convert %[[V_521]] : (i8) -> i32
|
||||
! CHECK: %[[V_523:[0-9]+]] = fir.call @_FortranAMapException(%[[V_522]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_524:[0-9]+]] = fir.call @fetestexcept(%[[V_523]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_524:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_523]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_525:[0-9]+]] = arith.cmpi ne, %[[V_524]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_526:[0-9]+]] = fir.convert %[[V_525]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_526]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -430,9 +430,9 @@ program p
|
||||
! CHECK: %[[V_572:[0-9]+]] = fir.convert %[[V_571]] : (i8) -> i32
|
||||
! CHECK: %[[V_573:[0-9]+]] = fir.call @_FortranAMapException(%[[V_572]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_573]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_573]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_573]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_573]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_574:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_575:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -462,7 +462,7 @@ program p
|
||||
! CHECK: %[[V_705:[0-9]+]] = arith.ori %[[V_704]], %[[V_703]] : i1
|
||||
! CHECK: fir.if %[[V_705]] {
|
||||
! CHECK: %[[V_706:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_707:[0-9]+]] = fir.call @feraiseexcept(%[[V_706]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_706]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_702]] : f32
|
||||
! CHECK: }
|
||||
@ -476,7 +476,7 @@ program p
|
||||
! CHECK: %[[V_580:[0-9]+]] = fir.load %[[V_579]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_581:[0-9]+]] = fir.convert %[[V_580]] : (i8) -> i32
|
||||
! CHECK: %[[V_582:[0-9]+]] = fir.call @_FortranAMapException(%[[V_581]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_583:[0-9]+]] = fir.call @fetestexcept(%[[V_582]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_583:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_582]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_584:[0-9]+]] = arith.cmpi ne, %[[V_583]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_585:[0-9]+]] = fir.convert %[[V_584]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_585]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
@ -491,9 +491,9 @@ program p
|
||||
! CHECK: %[[V_631:[0-9]+]] = fir.convert %[[V_630]] : (i8) -> i32
|
||||
! CHECK: %[[V_632:[0-9]+]] = fir.call @_FortranAMapException(%[[V_631]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.if %false{{[_0-9]*}} {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feraiseexcept(%[[V_632]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_632]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_692:[0-9]+]] = fir.call @feclearexcept(%[[V_632]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feclearexcept(%[[V_632]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_633:[0-9]+]] = fir.load %[[V_17]] : !fir.ref<f32>
|
||||
! CHECK: %[[V_634:[0-9]+]] = fir.load %[[V_19]] : !fir.ref<f32>
|
||||
@ -525,7 +525,7 @@ program p
|
||||
! CHECK: %[[V_705:[0-9]+]] = arith.ori %[[V_704]], %[[V_703]] : i1
|
||||
! CHECK: fir.if %[[V_705]] {
|
||||
! CHECK: %[[V_706:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_707:[0-9]+]] = fir.call @feraiseexcept(%[[V_706]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_706]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_702]] : f32
|
||||
! CHECK: }
|
||||
@ -539,7 +539,7 @@ program p
|
||||
! CHECK: %[[V_641:[0-9]+]] = fir.load %[[V_640]] : !fir.ref<i8>
|
||||
! CHECK: %[[V_642:[0-9]+]] = fir.convert %[[V_641]] : (i8) -> i32
|
||||
! CHECK: %[[V_643:[0-9]+]] = fir.call @_FortranAMapException(%[[V_642]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_644:[0-9]+]] = fir.call @fetestexcept(%[[V_643]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_644:[0-9]+]] = fir.call {{.*}}fetestexcept(%[[V_643]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_645:[0-9]+]] = arith.cmpi ne, %[[V_644]], %c0{{.*}} : i32
|
||||
! CHECK: %[[V_646:[0-9]+]] = fir.convert %[[V_645]] : (i1) -> !fir.logical<4>
|
||||
! CHECK: fir.store %[[V_646]] to %[[V_21]] : !fir.ref<!fir.logical<4>>
|
||||
|
@ -53,7 +53,7 @@ end subroutine
|
||||
!CHECK-KIND10: %[[VAL_46:.*]] = arith.select %[[VAL_30]], %[[VAL_43]], %[[VAL_45]] : f16
|
||||
!CHECK-KIND10: %[[VAL_47:.*]] = arith.constant 48 : i32
|
||||
!CHECK-KIND10: %[[VAL_48:.*]] = fir.call @_FortranAMapException(%[[VAL_47]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_49:.*]] = fir.call @feraiseexcept(%[[VAL_48]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: fir.call {{.*}}feraiseexcept(%[[VAL_48]]) fastmath<contract> : (i32)
|
||||
!CHECK-KIND10: fir.result %[[VAL_46]] : f16
|
||||
!CHECK-KIND10: } else {
|
||||
!CHECK-KIND10: %[[VAL_50:.*]] = arith.bitcast %[[VAL_23]] : f16 to i16
|
||||
@ -65,13 +65,13 @@ end subroutine
|
||||
!CHECK-KIND10: fir.if %[[VAL_55]] {
|
||||
!CHECK-KIND10: %[[VAL_56:.*]] = arith.constant 40 : i32
|
||||
!CHECK-KIND10: %[[VAL_57:.*]] = fir.call @_FortranAMapException(%[[VAL_56]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_58:.*]] = fir.call @feraiseexcept(%[[VAL_57]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: fir.call {{.*}}feraiseexcept(%[[VAL_57]]) fastmath<contract> : (i32)
|
||||
!CHECK-KIND10: }
|
||||
!CHECK-KIND10: %[[VAL_59:.*]] = "llvm.intr.is.fpclass"(%[[VAL_54]]) <{bit = 144 : i32}> : (f16) -> i1
|
||||
!CHECK-KIND10: fir.if %[[VAL_59]] {
|
||||
!CHECK-KIND10: %[[VAL_60:.*]] = arith.constant 48 : i32
|
||||
!CHECK-KIND10: %[[VAL_61:.*]] = fir.call @_FortranAMapException(%[[VAL_60]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_62:.*]] = fir.call @feraiseexcept(%[[VAL_61]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: fir.call {{.*}}feraiseexcept(%[[VAL_61]]) fastmath<contract> : (i32)
|
||||
!CHECK-KIND10: }
|
||||
!CHECK-KIND10: fir.result %[[VAL_54]] : f16
|
||||
!CHECK-KIND10: }
|
||||
@ -106,7 +106,7 @@ end subroutine
|
||||
!CHECK: fir.if %[[VAL_27]] {
|
||||
!CHECK: %[[VAL_28:.*]] = arith.constant 1 : i32
|
||||
!CHECK: %[[VAL_29:.*]] = fir.call @_FortranAMapException(%[[VAL_28]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: %[[VAL_30:.*]] = fir.call @feraiseexcept(%[[VAL_29]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: fir.call {{.*}}feraiseexcept(%[[VAL_29]]) fastmath<contract> : (i32)
|
||||
!CHECK: }
|
||||
!CHECK: fir.result %[[VAL_13]] : bf16
|
||||
!CHECK: } else {
|
||||
@ -156,7 +156,7 @@ end subroutine
|
||||
!CHECK: fir.if %[[VAL_26]] {
|
||||
!CHECK: %[[VAL_27:.*]] = arith.constant 1 : i32
|
||||
!CHECK: %[[VAL_28:.*]] = fir.call @_FortranAMapException(%[[VAL_27]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: %[[VAL_29:.*]] = fir.call @feraiseexcept(%[[VAL_28]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: fir.call {{.*}}feraiseexcept(%[[VAL_28]]) fastmath<contract> : (i32)
|
||||
!CHECK: }
|
||||
!CHECK: fir.result %[[VAL_13]] : f32
|
||||
!CHECK: } else {
|
||||
@ -227,7 +227,7 @@ end subroutine
|
||||
!CHECK: %[[VAL_46:.*]] = arith.select %[[VAL_30]], %[[VAL_43]], %[[VAL_45]] : f64
|
||||
!CHECK: %[[VAL_47:.*]] = arith.constant 48 : i32
|
||||
!CHECK: %[[VAL_48:.*]] = fir.call @_FortranAMapException(%[[VAL_47]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: %[[VAL_49:.*]] = fir.call @feraiseexcept(%[[VAL_48]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: fir.call {{.*}}feraiseexcept(%[[VAL_48]]) fastmath<contract> : (i32)
|
||||
!CHECK: fir.result %[[VAL_46]] : f64
|
||||
!CHECK: } else {
|
||||
!CHECK: %[[VAL_50:.*]] = arith.bitcast %[[VAL_23]] : f64 to i64
|
||||
@ -239,13 +239,13 @@ end subroutine
|
||||
!CHECK: fir.if %[[VAL_55]] {
|
||||
!CHECK: %[[VAL_56:.*]] = arith.constant 40 : i32
|
||||
!CHECK: %[[VAL_57:.*]] = fir.call @_FortranAMapException(%[[VAL_56]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: %[[VAL_58:.*]] = fir.call @feraiseexcept(%[[VAL_57]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: fir.call {{.*}}feraiseexcept(%[[VAL_57]]) fastmath<contract> : (i32)
|
||||
!CHECK: }
|
||||
!CHECK: %[[VAL_59:.*]] = "llvm.intr.is.fpclass"(%[[VAL_54]]) <{bit = 144 : i32}> : (f64) -> i1
|
||||
!CHECK: fir.if %[[VAL_59]] {
|
||||
!CHECK: %[[VAL_60:.*]] = arith.constant 48 : i32
|
||||
!CHECK: %[[VAL_61:.*]] = fir.call @_FortranAMapException(%[[VAL_60]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: %[[VAL_62:.*]] = fir.call @feraiseexcept(%[[VAL_61]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK: fir.call {{.*}}feraiseexcept(%[[VAL_61]]) fastmath<contract> : (i32)
|
||||
!CHECK: }
|
||||
!CHECK: fir.result %[[VAL_54]] : f64
|
||||
!CHECK: }
|
||||
@ -279,7 +279,7 @@ end subroutine
|
||||
!CHECK-KIND10: fir.if %[[VAL_26]] {
|
||||
!CHECK-KIND10: %[[VAL_27:.*]] = arith.constant 1 : i32
|
||||
!CHECK-KIND10: %[[VAL_28:.*]] = fir.call @_FortranAMapException(%[[VAL_27]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_29:.*]] = fir.call @feraiseexcept(%[[VAL_28]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: fir.call {{.*}}feraiseexcept(%[[VAL_28]]) fastmath<contract> : (i32)
|
||||
!CHECK-KIND10: }
|
||||
!CHECK-KIND10: fir.result %[[VAL_13]] : f80
|
||||
!CHECK-KIND10: } else {
|
||||
@ -294,12 +294,12 @@ end subroutine
|
||||
!CHECK-KIND10: } else {
|
||||
!CHECK-KIND10: %[[VAL_37:.*]] = arith.constant 63 : i32
|
||||
!CHECK-KIND10: %[[VAL_38:.*]] = fir.call @_FortranAMapException(%[[VAL_37]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_39:.*]] = fir.call @fetestexcept(%[[VAL_38]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_40:.*]] = fir.call @fedisableexcept(%[[VAL_38]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_39:.*]] = fir.call {{.*}}fetestexcept(%[[VAL_38]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_40:.*]] = fir.call {{.*}}fedisableexcept(%[[VAL_38]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_41:.*]] = fir.call @_FortranANearest10(%[[VAL_13]], %[[VAL_16]]) fastmath<contract> : (f80, i1) -> f80
|
||||
!CHECK-KIND10: %[[VAL_42:.*]] = fir.call @feclearexcept(%[[VAL_38]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_43:.*]] = fir.call @feraiseexcept(%[[VAL_39]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_44:.*]] = fir.call @feenableexcept(%[[VAL_40]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: %[[VAL_42:.*]] = fir.call {{.*}}feclearexcept(%[[VAL_38]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: fir.call {{.*}}feraiseexcept(%[[VAL_39]]) fastmath<contract> : (i32)
|
||||
!CHECK-KIND10: %[[VAL_44:.*]] = fir.call {{.*}}feenableexcept(%[[VAL_40]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND10: fir.result %[[VAL_41]] : f80
|
||||
!CHECK-KIND10: }
|
||||
!CHECK-KIND10: fir.result %[[VAL_32]] : f80
|
||||
@ -332,7 +332,7 @@ end subroutine
|
||||
!CHECK-KIND16: fir.if %[[VAL_26]] {
|
||||
!CHECK-KIND16: %[[VAL_27:.*]] = arith.constant 1 : i32
|
||||
!CHECK-KIND16: %[[VAL_28:.*]] = fir.call @_FortranAMapException(%[[VAL_27]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND16: %[[VAL_29:.*]] = fir.call @feraiseexcept(%[[VAL_28]]) fastmath<contract> : (i32) -> i32
|
||||
!CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[VAL_28]]) fastmath<contract> : (i32)
|
||||
!CHECK-KIND16: }
|
||||
!CHECK-KIND16: fir.result %[[VAL_13]] : f128
|
||||
!CHECK-KIND16: } else {
|
||||
|
@ -88,15 +88,15 @@ program p
|
||||
! CHECK: %[[V_43:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_42]]) <{bit = 516 : i32}> : (f32) -> i1
|
||||
! CHECK: fir.if %[[V_43]] {
|
||||
! CHECK: %[[V_44:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_45:[0-9]+]] = fir.call @feraiseexcept(%[[V_44]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_44]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_44:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_42]]) <{bit = 240 : i32}> : (f32) -> i1
|
||||
! CHECK: fir.if %[[V_44]] {
|
||||
! CHECK: %[[V_45:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_46:[0-9]+]] = fir.call @feraiseexcept(%[[V_45]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_45]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_45:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_46:[0-9]+]] = fir.call @feraiseexcept(%[[V_45]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_45]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_42]] : f32
|
||||
@ -113,7 +113,7 @@ program p
|
||||
! CHECK: %[[V_19:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_18]]) <{bit = 1 : i32}> : (f32) -> i1
|
||||
! CHECK: %[[V_20:[0-9]+]] = fir.if %[[V_19]] -> (f32) {
|
||||
! CHECK: %[[V_27:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @feraiseexcept(%[[V_27]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_27]]) fastmath<contract> : (i32)
|
||||
! CHECK: %[[V_29:[0-9]+]] = fir.address_of(@_FortranAIeeeValueTable_4) : !fir.ref<!fir.array<12xi32>>
|
||||
! CHECK: %[[V_30:[0-9]+]] = fir.coordinate_of %[[V_29]], %c2{{.*}} : (!fir.ref<!fir.array<12xi32>>, i8) -> !fir.ref<i32>
|
||||
! CHECK: %[[V_31:[0-9]+]] = fir.load %[[V_30]] : !fir.ref<i32>
|
||||
@ -138,7 +138,7 @@ program p
|
||||
! CHECK: %[[V_27:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_23]]) <{bit = 1 : i32}> : (f32) -> i1
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.if %[[V_27]] -> (f32) {
|
||||
! CHECK: %[[V_29:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_30:[0-9]+]] = fir.call @feraiseexcept(%[[V_29]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_29]]) fastmath<contract> : (i32)
|
||||
! CHECK: %[[V_31:[0-9]+]] = fir.address_of(@_FortranAIeeeValueTable_4) : !fir.ref<!fir.array<12xi32>>
|
||||
! CHECK: %[[V_32:[0-9]+]] = fir.coordinate_of %[[V_31]], %c2{{.*}} : (!fir.ref<!fir.array<12xi32>>, i8) -> !fir.ref<i32>
|
||||
! CHECK: %[[V_33:[0-9]+]] = fir.load %[[V_32]] : !fir.ref<i32>
|
||||
@ -198,15 +198,15 @@ program p
|
||||
! CHECK: %[[V_43:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_42]]) <{bit = 516 : i32}> : (f32) -> i1
|
||||
! CHECK: fir.if %[[V_43]] {
|
||||
! CHECK: %[[V_44:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_45:[0-9]+]] = fir.call @feraiseexcept(%[[V_44]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_44]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_44:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_42]]) <{bit = 240 : i32}> : (f32) -> i1
|
||||
! CHECK: fir.if %[[V_44]] {
|
||||
! CHECK: %[[V_45:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_46:[0-9]+]] = fir.call @feraiseexcept(%[[V_45]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_45]]) fastmath<contract> : (i32)
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_45:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_46:[0-9]+]] = fir.call @feraiseexcept(%[[V_45]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_45]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_42]] : f32
|
||||
|
@ -33,7 +33,7 @@
|
||||
! CHECK-DAG: %[[V_19:[0-9]+]] = fir.call @remainderf(%[[V_14]], %[[V_15]]) fastmath<contract> : (f32, f32) -> f32
|
||||
! CHECK: fir.if %[[V_18]] {
|
||||
! CHECK: %[[V_40:[0-9]+]] = fir.call @_FortranAMapException(%c16{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_41:[0-9]+]] = fir.call @feraiseexcept(%[[V_40]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_40]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_20:[0-9]+]] = fir.convert %[[V_19]] : (f32) -> f32
|
||||
! CHECK: hlfir.assign %[[V_20]] to %[[V_3]]#0 : f32, !fir.ref<f32>
|
||||
@ -54,7 +54,7 @@
|
||||
! CHECK-DAG: %[[V_28:[0-9]+]] = fir.call @remainder(%[[V_23]], %[[V_24]]) fastmath<contract> : (f64, f64) -> f64
|
||||
! CHECK: fir.if %[[V_27]] {
|
||||
! CHECK: %[[V_40:[0-9]+]] = fir.call @_FortranAMapException(%c16{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_41:[0-9]+]] = fir.call @feraiseexcept(%[[V_40]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_40]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_29:[0-9]+]] = fir.convert %[[V_28]] : (f64) -> f64
|
||||
! CHECK: %[[V_30:[0-9]+]] = fir.convert %[[V_29]] : (f64) -> f16
|
||||
@ -76,7 +76,7 @@
|
||||
! CHECK-DAG: %[[V_38:[0-9]+]] = fir.call @remainder(%[[V_33]], %[[V_34]]) fastmath<contract> : (f64, f64) -> f64
|
||||
! CHECK: fir.if %[[V_37]] {
|
||||
! CHECK: %[[V_40:[0-9]+]] = fir.call @_FortranAMapException(%c16{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_41:[0-9]+]] = fir.call @feraiseexcept(%[[V_40]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_40]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_39:[0-9]+]] = fir.convert %[[V_38]] : (f64) -> f64
|
||||
! CHECK: hlfir.assign %[[V_39]] to %[[V_5]]#0 : f64, !fir.ref<f64>
|
||||
|
@ -81,13 +81,13 @@ program p
|
||||
! CHECK: %[[V_163:[0-9]+]] = arith.cmpf one, %[[V_50]], %[[V_61]] fastmath<contract> : f32
|
||||
! CHECK: fir.if %[[V_163]] {
|
||||
! CHECK: %[[V_165:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_166:[0-9]+]] = fir.call @feraiseexcept(%[[V_165]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_165]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.convert %[[V_61]] : (f32) -> i32
|
||||
! CHECK: fir.result %[[V_164]] : i32
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_163:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.call @feraiseexcept(%[[V_163]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_163]]) fastmath<contract> : (i32)
|
||||
! CHECK: %[[V_165:[0-9]+]] = arith.select %[[V_64]], %c2147483647{{.*}}, %c-2147483648{{.*}} : i32
|
||||
! CHECK: fir.result %[[V_165]] : i32
|
||||
! CHECK: }
|
||||
@ -142,13 +142,13 @@ program p
|
||||
! CHECK: %[[V_163:[0-9]+]] = arith.cmpf one, %[[V_85]], %[[V_97]] fastmath<contract> : f16
|
||||
! CHECK: fir.if %[[V_163]] {
|
||||
! CHECK: %[[V_165:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_166:[0-9]+]] = fir.call @feraiseexcept(%[[V_165]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_165]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.convert %[[V_97]] : (f16) -> i64
|
||||
! CHECK: fir.result %[[V_164]] : i64
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_163:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.call @feraiseexcept(%[[V_163]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_163]]) fastmath<contract> : (i32)
|
||||
! CHECK: %[[V_165:[0-9]+]] = arith.select %[[V_100]], %c9223372036854775807{{.*}}, %c-9223372036854775808{{.*}} : i64
|
||||
! CHECK: fir.result %[[V_165]] : i64
|
||||
! CHECK: }
|
||||
@ -167,7 +167,7 @@ program p
|
||||
! CHECK: %[[V_108:[0-9]+]] = arith.cmpf one, %[[V_104]], %[[V_107]] fastmath<contract> : bf16
|
||||
! CHECK: fir.if %[[V_108]] {
|
||||
! CHECK: %[[V_163:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.call @feraiseexcept(%[[V_163]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_163]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: hlfir.assign %[[V_107]] to %[[V_31]]#0 : bf16, !fir.ref<bf16>
|
||||
y3 = ieee_rint(x3)
|
||||
@ -197,13 +197,13 @@ program p
|
||||
! CHECK: %[[V_163:[0-9]+]] = arith.cmpf one, %[[V_111]], %[[V_123]] fastmath<contract> : bf16
|
||||
! CHECK: fir.if %[[V_163]] {
|
||||
! CHECK: %[[V_165:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_166:[0-9]+]] = fir.call @feraiseexcept(%[[V_165]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_165]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.convert %[[V_123]] : (bf16) -> i128
|
||||
! CHECK: fir.result %[[V_164]] : i128
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_163:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.call @feraiseexcept(%[[V_163]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_163]]) fastmath<contract> : (i32)
|
||||
! CHECK: %[[V_165:[0-9]+]] = arith.select %[[V_126]], %c170141183460469231731687303715884105727{{.*}}, %c-170141183460469231731687303715884105728{{.*}} : i128
|
||||
! CHECK: fir.result %[[V_165]] : i128
|
||||
! CHECK: }
|
||||
@ -229,7 +229,7 @@ program p
|
||||
! CHECK: %[[V_142:[0-9]+]] = arith.cmpf one, %[[V_139]], %[[V_141]] fastmath<contract> : f32
|
||||
! CHECK: fir.if %[[V_142]] {
|
||||
! CHECK: %[[V_163:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.call @feraiseexcept(%[[V_163]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_163]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: hlfir.assign %[[V_141]] to %[[V_33]]#0 : f32, !fir.ref<f32>
|
||||
y8 = ieee_rint(x8)
|
||||
@ -258,13 +258,13 @@ program p
|
||||
! CHECK: %[[V_163:[0-9]+]] = arith.cmpf one, %[[V_145]], %[[V_156]] fastmath<contract> : f32
|
||||
! CHECK: fir.if %[[V_163]] {
|
||||
! CHECK: %[[V_165:[0-9]+]] = fir.call @_FortranAMapException(%c32{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_166:[0-9]+]] = fir.call @feraiseexcept(%[[V_165]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_165]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.convert %[[V_156]] : (f32) -> i16
|
||||
! CHECK: fir.result %[[V_164]] : i16
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_163:[0-9]+]] = fir.call @_FortranAMapException(%c1{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: %[[V_164:[0-9]+]] = fir.call @feraiseexcept(%[[V_163]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_163]]) fastmath<contract> : (i32)
|
||||
! CHECK: %[[V_165:[0-9]+]] = arith.select %[[V_159]], %c32767{{.*}}, %c-32768{{.*}} : i16
|
||||
! CHECK: fir.result %[[V_165]] : i16
|
||||
! CHECK: }
|
||||
|
@ -30,7 +30,7 @@
|
||||
! CHECK: %[[V_21:[0-9]+]] = fir.if %[[V_20]] -> (f16) {
|
||||
! CHECK: %[[V_22:[0-9]+]] = arith.select %[[V_11]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : f16
|
||||
! CHECK: %[[V_23:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_23]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_23]]) fastmath<contract> : (i32)
|
||||
! CHECK: fir.result %[[V_22]] : f16
|
||||
! CHECK: } else {
|
||||
! CHECK-DAG: %[[V_22:[0-9]+]] = arith.subi %[[V_12]], %c1{{.*}} : i16
|
||||
@ -40,12 +40,12 @@
|
||||
! CHECK: %[[V_26:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 516 : i32}> : (f16) -> i1
|
||||
! CHECK: fir.if %[[V_26]] {
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_27:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 144 : i32}> : (f16) -> i1
|
||||
! CHECK: fir.if %[[V_27]] {
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_25]] : f16
|
||||
! CHECK: }
|
||||
@ -92,7 +92,7 @@ end
|
||||
! CHECK: %[[V_24:[0-9]+]] = fir.if %[[V_23]] -> (bf16) {
|
||||
! CHECK: %[[V_25:[0-9]+]] = arith.select %[[V_13]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : bf16
|
||||
! CHECK: %[[V_26:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_26]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_26]]) fastmath<contract> : (i32)
|
||||
! CHECK: fir.result %[[V_25]] : bf16
|
||||
! CHECK: } else {
|
||||
! CHECK: %[[V_25:[0-9]+]] = arith.bitcast %[[V_5]] : bf16 to i16
|
||||
@ -103,12 +103,12 @@ end
|
||||
! CHECK: %[[V_30:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_29]]) <{bit = 516 : i32}> : (bf16) -> i1
|
||||
! CHECK: fir.if %[[V_30]] {
|
||||
! CHECK: %[[V_32:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_32]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_32]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_31:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_29]]) <{bit = 144 : i32}> : (bf16) -> i1
|
||||
! CHECK: fir.if %[[V_31]] {
|
||||
! CHECK: %[[V_32:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_32]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_32]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_29]] : bf16
|
||||
! CHECK: }
|
||||
@ -152,7 +152,7 @@ end
|
||||
! CHECK: %[[V_21:[0-9]+]] = fir.if %[[V_20]] -> (f32) {
|
||||
! CHECK: %[[V_22:[0-9]+]] = arith.select %[[V_11]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : f32
|
||||
! CHECK: %[[V_23:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_23]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_23]]) fastmath<contract> : (i32)
|
||||
! CHECK: fir.result %[[V_22]] : f32
|
||||
! CHECK: } else {
|
||||
! CHECK-DAG: %[[V_22:[0-9]+]] = arith.subi %[[V_12]], %c1{{.*}} : i32
|
||||
@ -162,12 +162,12 @@ end
|
||||
! CHECK: %[[V_26:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 516 : i32}> : (f32) -> i1
|
||||
! CHECK: fir.if %[[V_26]] {
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_27:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 144 : i32}> : (f32) -> i1
|
||||
! CHECK: fir.if %[[V_27]] {
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_25]] : f32
|
||||
! CHECK: }
|
||||
@ -211,7 +211,7 @@ end
|
||||
! CHECK: %[[V_21:[0-9]+]] = fir.if %[[V_20]] -> (f64) {
|
||||
! CHECK: %[[V_22:[0-9]+]] = arith.select %[[V_11]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : f64
|
||||
! CHECK: %[[V_23:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_23]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_23]]) fastmath<contract> : (i32)
|
||||
! CHECK: fir.result %[[V_22]] : f64
|
||||
! CHECK: } else {
|
||||
! CHECK-DAG: %[[V_22:[0-9]+]] = arith.subi %[[V_12]], %c1{{.*}} : i64
|
||||
@ -221,12 +221,12 @@ end
|
||||
! CHECK: %[[V_26:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 516 : i32}> : (f64) -> i1
|
||||
! CHECK: fir.if %[[V_26]] {
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: %[[V_27:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 144 : i32}> : (f64) -> i1
|
||||
! CHECK: fir.if %[[V_27]] {
|
||||
! CHECK: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK: }
|
||||
! CHECK: fir.result %[[V_25]] : f64
|
||||
! CHECK: }
|
||||
@ -270,7 +270,7 @@ end
|
||||
! CHECK-KIND10: %[[V_21:[0-9]+]] = fir.if %[[V_20]] -> (f80) {
|
||||
! CHECK-KIND10: %[[V_22:[0-9]+]] = arith.select %[[V_11]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : f80
|
||||
! CHECK-KIND10: %[[V_23:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND10: fir.call @feraiseexcept(%[[V_23]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND10: fir.call {{.*}}feraiseexcept(%[[V_23]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND10: fir.result %[[V_22]] : f80
|
||||
! CHECK-KIND10: } else {
|
||||
! CHECK-KIND10: %[[V_22:[0-9]+]] = fir.call @_FortranANearest10(%[[V_5]], %[[V_11]]) fastmath<contract> : (f80, i1) -> f80
|
||||
@ -317,7 +317,7 @@ end
|
||||
! CHECK-KIND16: %[[V_21:[0-9]+]] = fir.if %[[V_20]] -> (f128) {
|
||||
! CHECK-KIND16: %[[V_22:[0-9]+]] = arith.select %[[V_11]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : f128
|
||||
! CHECK-KIND16: %[[V_23:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call @feraiseexcept(%[[V_23]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[V_23]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND16: fir.result %[[V_22]] : f128
|
||||
! CHECK-KIND16: } else {
|
||||
! CHECK-KIND16-DAG: %[[V_22:[0-9]+]] = arith.subi %[[V_12]], %c1{{.*}} : i128
|
||||
@ -327,12 +327,12 @@ end
|
||||
! CHECK-KIND16: %[[V_26:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 516 : i32}> : (f128) -> i1
|
||||
! CHECK-KIND16: fir.if %[[V_26]] {
|
||||
! CHECK-KIND16: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND16: }
|
||||
! CHECK-KIND16: %[[V_27:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_25]]) <{bit = 144 : i32}> : (f128) -> i1
|
||||
! CHECK-KIND16: fir.if %[[V_27]] {
|
||||
! CHECK-KIND16: %[[V_28:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call @feraiseexcept(%[[V_28]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[V_28]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND16: }
|
||||
! CHECK-KIND16: fir.result %[[V_25]] : f128
|
||||
! CHECK-KIND16: }
|
||||
@ -378,7 +378,7 @@ end
|
||||
! CHECK-KIND16: %[[V_22:[0-9]+]] = fir.if %[[V_21]] -> (f128) {
|
||||
! CHECK-KIND16: %[[V_23:[0-9]+]] = arith.select %[[V_12]], %cst{{[_0-9]*}}, %cst{{[_0-9]*}} : f128
|
||||
! CHECK-KIND16: %[[V_24:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call @feraiseexcept(%[[V_24]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[V_24]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND16: fir.result %[[V_23]] : f128
|
||||
! CHECK-KIND16: } else {
|
||||
! CHECK-KIND16-DAG: %[[V_23:[0-9]+]] = arith.subi %[[V_13]], %c1{{.*}} : i128
|
||||
@ -388,12 +388,12 @@ end
|
||||
! CHECK-KIND16: %[[V_27:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_26]]) <{bit = 516 : i32}> : (f128) -> i1
|
||||
! CHECK-KIND16: fir.if %[[V_27]] {
|
||||
! CHECK-KIND16: %[[V_29:[0-9]+]] = fir.call @_FortranAMapException(%c40{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call @feraiseexcept(%[[V_29]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[V_29]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND16: }
|
||||
! CHECK-KIND16: %[[V_28:[0-9]+]] = "llvm.intr.is.fpclass"(%[[V_26]]) <{bit = 144 : i32}> : (f128) -> i1
|
||||
! CHECK-KIND16: fir.if %[[V_28]] {
|
||||
! CHECK-KIND16: %[[V_29:[0-9]+]] = fir.call @_FortranAMapException(%c48{{.*}}) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call @feraiseexcept(%[[V_29]]) fastmath<contract> : (i32) -> i32
|
||||
! CHECK-KIND16: fir.call {{.*}}feraiseexcept(%[[V_29]]) fastmath<contract> : (i32)
|
||||
! CHECK-KIND16: }
|
||||
! CHECK-KIND16: fir.result %[[V_26]] : f128
|
||||
! CHECK-KIND16: }
|
||||
|
Loading…
x
Reference in New Issue
Block a user