|
From: <sv...@va...> - 2014-11-23 17:17:47
|
Author: sewardj
Date: Sun Nov 23 17:17:39 2014
New Revision: 3007
Log:
Merge, from trunk, r2981
339926 Unhandled instruction 0x1E674001 (frintx) on aarm64
2981
Modified:
branches/VEX_3_10_BRANCH/ (props changed)
branches/VEX_3_10_BRANCH/priv/guest_arm64_toIR.c
Modified: branches/VEX_3_10_BRANCH/priv/guest_arm64_toIR.c
==============================================================================
--- branches/VEX_3_10_BRANCH/priv/guest_arm64_toIR.c (original)
+++ branches/VEX_3_10_BRANCH/priv/guest_arm64_toIR.c Sun Nov 23 17:17:39 2014
@@ -11921,7 +11921,7 @@
011 zero (FRINTZ)
000 tieeven
100 tieaway (FRINTA) -- !! FIXME KLUDGED !!
- 110 per FPCR + "exact = TRUE"
+ 110 per FPCR + "exact = TRUE" (FRINTX)
101 unallocated
*/
Bool isD = (ty & 1) == 1;
@@ -11935,6 +11935,10 @@
case BITS3(0,0,1): ch = 'p'; irrmE = mkU32(Irrm_PosINF); break;
// The following is a kludge. Should be: Irrm_NEAREST_TIE_AWAY_0
case BITS3(1,0,0): ch = 'a'; irrmE = mkU32(Irrm_NEAREST); break;
+ // I am unsure about the following, due to the "integral exact"
+ // description in the manual. What does it mean?
+ case BITS3(1,1,0):
+ ch = 'x'; irrmE = mkexpr(mk_get_IR_rounding_mode()); break;
default: break;
}
if (irrmE) {
|