From 4c80be10a27bc4e23253e86d15d465261c602534 Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Sun, 5 May 2013 15:04:30 +0000 Subject: [PATCH] Add the following IROPs which are needed for s390 DFP support: Iop_F64toD64, Iop_D64toF64 Iop_F64toD128, Iop_D128toF64, Iop_F128toD128, Iop_D128toF128, Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com). Part of fixing BZ #307113 git-svn-id: svn://svn.valgrind.org/vex/trunk@2717 --- VEX/priv/ir_defs.c | 24 ++++++++++++++++++++++++ VEX/pub/libvex_ir.h | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/VEX/priv/ir_defs.c b/VEX/priv/ir_defs.c index c3f7bfd593..34b02c3b01 100644 --- a/VEX/priv/ir_defs.c +++ b/VEX/priv/ir_defs.c @@ -983,6 +983,12 @@ void ppIROp ( IROp op ) case Iop_D128toI32U: vex_printf("D128toI32U"); return; case Iop_D128toI64S: vex_printf("D128toI64S"); return; case Iop_D128toI64U: vex_printf("D128toI64U"); return; + case Iop_F64toD64: vex_printf("F64toD64"); return; + case Iop_D64toF64: vex_printf("D64toF64"); return; + case Iop_F64toD128: vex_printf("F64toD128"); return; + case Iop_D128toF64: vex_printf("D128toF64"); return; + case Iop_F128toD128: vex_printf("F128toD128"); return; + case Iop_D128toF128: vex_printf("D128toF128"); return; case Iop_AddD128: vex_printf("AddD128"); return; case Iop_SubD128: vex_printf("SubD128"); return; case Iop_MulD128: vex_printf("MulD128"); return; @@ -3009,6 +3015,24 @@ void typeOfPrimop ( IROp op, case Iop_I64UtoD64: BINARY(ity_RMode, Ity_I64, Ity_D64); + case Iop_F64toD64: + BINARY(ity_RMode, Ity_F64, Ity_D64); + + case Iop_D64toF64: + BINARY(ity_RMode, Ity_D64, Ity_F64); + + case Iop_F64toD128: + BINARY(ity_RMode, Ity_F64, Ity_D128); + + case Iop_D128toF64: + BINARY(ity_RMode, Ity_D128, Ity_F64); + + case Iop_F128toD128: + BINARY(ity_RMode, Ity_F128, Ity_D128); + + case Iop_D128toF128: + BINARY(ity_RMode, Ity_D128, Ity_F128); + case Iop_CmpD64: case Iop_CmpExpD64: BINARY(Ity_D64,Ity_D64, Ity_I32); diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h index cc8ea54972..806de632c6 100644 --- a/VEX/pub/libvex_ir.h +++ b/VEX/pub/libvex_ir.h @@ -1092,6 +1092,24 @@ typedef /* IRRoundingModeDFP(I32) x D128 -> I64 */ Iop_D128toI64U, + /* IRRoundingModeDFP(I32) x F64 -> D64 */ + Iop_F64toD64, + + /* IRRoundingModeDFP(I32) x D64 -> F64 */ + Iop_D64toF64, + + /* IRRoundingModeDFP(I32) x F64 -> D128 */ + Iop_F64toD128, + + /* IRRoundingModeDFP(I32) x D128 -> F64 */ + Iop_D128toF64, + + /* IRRoundingModeDFP(I32) x F128 -> D128 */ + Iop_F128toD128, + + /* IRRoundingModeDFP(I32) x D128 -> F128 */ + Iop_D128toF128, + /* ROUNDING INSTRUCTIONS * IRRoundingMode(I32) x D64 -> D64 * The D64 operand, if a finite number, it is rounded to a -- 2.47.2