]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge, from trunk, r2981
authorJulian Seward <jseward@acm.org>
Sun, 23 Nov 2014 17:17:39 +0000 (17:17 +0000)
committerJulian Seward <jseward@acm.org>
Sun, 23 Nov 2014 17:17:39 +0000 (17:17 +0000)
339926  Unhandled instruction 0x1E674001 (frintx) on aarm64
2981

git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_10_BRANCH@3007

VEX/priv/guest_arm64_toIR.c

index 839987c2ced30437444dc8a34133640bda13283e..21dbd5ac3d04a828030bc8876f7a0b592fae6dec 100644 (file)
@@ -11921,7 +11921,7 @@ Bool dis_AdvSIMD_fp_data_proc_1_source(/*MB_OUT*/DisResult* dres, UInt insn)
             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 @@ Bool dis_AdvSIMD_fp_data_proc_1_source(/*MB_OUT*/DisResult* dres, UInt insn)
          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) {