diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 6708f2baa5ed..8a6bfdc5ee66 100644 --- a/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -1919,6 +1919,8 @@ unsigned IRTranslator::getSimpleIntrinsicOpcode(Intrinsic::ID ID) {        return TargetOpcode::G_LROUND;      case Intrinsic::llround:        return TargetOpcode::G_LLROUND; +    case Intrinsic::get_fpenv: +      return TargetOpcode::G_GET_FPENV;      case Intrinsic::get_fpmode:        return TargetOpcode::G_GET_FPMODE;    } @@ -2502,6 +2504,16 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID,      return true;    } +  case Intrinsic::set_fpenv: { +    Value *FPEnv = CI.getOperand(0); +    MIRBuilder.buildInstr(TargetOpcode::G_SET_FPENV, {}, +                          {getOrCreateVReg(*FPEnv)}); +    return true; +  } +  case Intrinsic::reset_fpenv: { +    MIRBuilder.buildInstr(TargetOpcode::G_RESET_FPENV, {}, {}); +    return true; +  }    case Intrinsic::set_fpmode: {      Value *FPState = CI.getOperand(0);      MIRBuilder.buildInstr(TargetOpcode::G_SET_FPMODE, {},  | 
