Index: src/arm64/simulator-arm64.cc |
diff --git a/src/arm64/simulator-arm64.cc b/src/arm64/simulator-arm64.cc |
index 129252b49b45cf8c3d726287d82b0fdaf95393e0..569be9cc83420dbd7ae72fdf6c31fb8982b4c2ca 100644 |
--- a/src/arm64/simulator-arm64.cc |
+++ b/src/arm64/simulator-arm64.cc |
@@ -2463,6 +2463,12 @@ void Simulator::VisitFPDataProcessing1Source(Instruction* instr) { |
set_sreg(fd, FPRoundInt(sreg(fn), FPNegativeInfinity)); break; |
case FRINTM_d: |
set_dreg(fd, FPRoundInt(dreg(fn), FPNegativeInfinity)); break; |
+ case FRINTP_s: |
+ set_sreg(fd, FPRoundInt(sreg(fn), FPPositiveInfinity)); |
+ break; |
+ case FRINTP_d: |
+ set_dreg(fd, FPRoundInt(dreg(fn), FPPositiveInfinity)); |
+ break; |
case FRINTN_s: set_sreg(fd, FPRoundInt(sreg(fn), FPTieEven)); break; |
case FRINTN_d: set_dreg(fd, FPRoundInt(dreg(fn), FPTieEven)); break; |
case FRINTZ_s: set_sreg(fd, FPRoundInt(sreg(fn), FPZero)); break; |
@@ -2767,6 +2773,10 @@ double Simulator::FPRoundInt(double value, FPRounding round_mode) { |
// We always use floor(value). |
break; |
} |
+ case FPPositiveInfinity: { |
+ int_result = ceil(value); |
+ break; |
+ } |
default: UNIMPLEMENTED(); |
} |
return int_result; |