|
Mark Wielaard |
552fff |
commit 35343350beb699e87bae86a5466895de6d9827e9
|
|
Mark Wielaard |
552fff |
Author: sewardj <sewardj@8f6e269a-dfd6-0310-a8e1-e2731360e62c>
|
|
Mark Wielaard |
552fff |
Date: Thu Oct 30 15:37:16 2014 +0000
|
|
Mark Wielaard |
552fff |
|
|
Mark Wielaard |
552fff |
Implement frintx d_d and s_s. Fixes #339926.
|
|
Mark Wielaard |
552fff |
|
|
Mark Wielaard |
552fff |
|
|
Mark Wielaard |
552fff |
git-svn-id: svn://svn.valgrind.org/vex/trunk@2981 8f6e269a-dfd6-0310-a8e1-e2731360e62c
|
|
Mark Wielaard |
552fff |
|
|
Mark Wielaard |
552fff |
diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c
|
|
Mark Wielaard |
552fff |
index 7f22f13..0377139 100644
|
|
Mark Wielaard |
552fff |
--- a/VEX/priv/guest_arm64_toIR.c
|
|
Mark Wielaard |
552fff |
+++ b/VEX/priv/guest_arm64_toIR.c
|
|
Mark Wielaard |
552fff |
@@ -11921,7 +11921,7 @@ Bool dis_AdvSIMD_fp_data_proc_1_source(/*MB_OUT*/DisResult* dres, UInt insn)
|
|
Mark Wielaard |
552fff |
011 zero (FRINTZ)
|
|
Mark Wielaard |
552fff |
000 tieeven
|
|
Mark Wielaard |
552fff |
100 tieaway (FRINTA) -- !! FIXME KLUDGED !!
|
|
Mark Wielaard |
552fff |
- 110 per FPCR + "exact = TRUE"
|
|
Mark Wielaard |
552fff |
+ 110 per FPCR + "exact = TRUE" (FRINTX)
|
|
Mark Wielaard |
552fff |
101 unallocated
|
|
Mark Wielaard |
552fff |
*/
|
|
Mark Wielaard |
552fff |
Bool isD = (ty & 1) == 1;
|
|
Mark Wielaard |
552fff |
@@ -11935,6 +11935,10 @@ Bool dis_AdvSIMD_fp_data_proc_1_source(/*MB_OUT*/DisResult* dres, UInt insn)
|
|
Mark Wielaard |
552fff |
case BITS3(0,0,1): ch = 'p'; irrmE = mkU32(Irrm_PosINF); break;
|
|
Mark Wielaard |
552fff |
// The following is a kludge. Should be: Irrm_NEAREST_TIE_AWAY_0
|
|
Mark Wielaard |
552fff |
case BITS3(1,0,0): ch = 'a'; irrmE = mkU32(Irrm_NEAREST); break;
|
|
Mark Wielaard |
552fff |
+ // I am unsure about the following, due to the "integral exact"
|
|
Mark Wielaard |
552fff |
+ // description in the manual. What does it mean?
|
|
Mark Wielaard |
552fff |
+ case BITS3(1,1,0):
|
|
Mark Wielaard |
552fff |
+ ch = 'x'; irrmE = mkexpr(mk_get_IR_rounding_mode()); break;
|
|
Mark Wielaard |
552fff |
default: break;
|
|
Mark Wielaard |
552fff |
}
|
|
Mark Wielaard |
552fff |
if (irrmE) {
|