s390: Support these DFP insns: CDGTRA, CXGTR, CGXTR, and CGDTR.
Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).
Part of fixing BZ #307113.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2680 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/host_s390_isel.c b/priv/host_s390_isel.c
index 1c27570..cfca458 100644
--- a/priv/host_s390_isel.c
+++ b/priv/host_s390_isel.c
@@ -1135,9 +1135,11 @@
case Iop_F128toI64U: conv = S390_BFP_F128_TO_U64; goto do_convert_128;
case Iop_D64toI32S: dconv = S390_DFP_D64_TO_I32; goto do_convert_dfp;
+ case Iop_D64toI64S: dconv = S390_DFP_D64_TO_I64; goto do_convert_dfp;
case Iop_D64toI32U: dconv = S390_DFP_D64_TO_U32; goto do_convert_dfp;
case Iop_D64toI64U: dconv = S390_DFP_D64_TO_U64; goto do_convert_dfp;
case Iop_D128toI32S: dconv = S390_DFP_D128_TO_I32; goto do_convert_dfp128;
+ case Iop_D128toI64S: dconv = S390_DFP_D128_TO_I64; goto do_convert_dfp128;
case Iop_D128toI32U: dconv = S390_DFP_D128_TO_U32; goto do_convert_dfp128;
case Iop_D128toI64U: dconv = S390_DFP_D128_TO_U64; goto do_convert_dfp128;
@@ -2520,18 +2522,16 @@
case Iex_Unop: {
IRExpr *left = expr->Iex.Unop.arg;
s390_dfp_conv_t conv;
- // HReg op, f12, f13, f14, f15;
HReg op, f12, f14;
- /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+ /* We use non-virtual registers as pairs (f12, f14)) */
f12 = make_fpr(12);
- // f13 = make_fpr(13);
f14 = make_fpr(14);
- // f15 = make_fpr(15);
switch (expr->Iex.Unop.op) {
case Iop_D64toD128: conv = S390_DFP_D64_TO_D128; goto convert_dfp;
case Iop_I32StoD128: conv = S390_DFP_I32_TO_D128; goto convert_int;
+ case Iop_I64StoD128: conv = S390_DFP_I64_TO_D128; goto convert_int;
case Iop_I32UtoD128: conv = S390_DFP_U32_TO_D128; goto convert_int;
case Iop_I64UtoD128: conv = S390_DFP_U64_TO_D128; goto convert_int;
default:
@@ -2637,6 +2637,7 @@
switch (op) {
case Iop_D64toD32: conv = S390_DFP_D64_TO_D32; goto convert_dfp;
+ case Iop_I64StoD64: conv = S390_DFP_I64_TO_D64; goto convert_int;
case Iop_I64UtoD64: conv = S390_DFP_U64_TO_D64; goto convert_int;
convert_dfp: