405363 PPC64, xvcvdpsxws, xvcvdpuxws, do not handle NaN arguments correctly.
405365 PPC64, function _get_maxmin_fp_NaN() doesn't handle QNaN, SNaN case
correctly.
+405733 PPC64, xvcvdpsp should write 32-bit result to upper and lower 32-bits of the 64-bit destination field.
n-i-bz add syswrap for PTRACE_GET|SET_THREAD_AREA on amd64.
n-i-bz Fix callgrind_annotate non deterministic order for equal total
case 0x312: // xvcvdpsp (VSX Vector round Double-Precision to single-precision
// and Convert to Single-Precision format)
DIP("xvcvdpsp v%u,v%u\n", XT, XB);
+
+ /* Note, the 32-bit result is put into the upper and lower bits of the
+ doubleword result. */
putVSReg( XT,
binop( Iop_64HLtoV128,
binop( Iop_32HLto64,
binop( Iop_RoundF64toF32,
get_IR_roundingmode(),
mkexpr( xB ) ) ) ),
- mkU32( 0 ) ),
+ unop( Iop_ReinterpF32asI32,
+ unop( Iop_TruncF64asF32,
+ binop( Iop_RoundF64toF32,
+ get_IR_roundingmode(),
+ mkexpr( xB ) ) ) ) ),
binop( Iop_32HLto64,
unop( Iop_ReinterpF32asI32,
unop( Iop_TruncF64asF32,
binop( Iop_RoundF64toF32,
get_IR_roundingmode(),
mkexpr( xB2 ) ) ) ),
- mkU32( 0 ) ) ) );
+ unop( Iop_ReinterpF32asI32,
+ unop( Iop_TruncF64asF32,
+ binop( Iop_RoundF64toF32,
+ get_IR_roundingmode(),
+ mkexpr( xB2 ) ) ) ) ) ) );
break;
case 0x390: // xvcvdpuxds (VSX Vector truncate Double-Precision to integer
// and Convert to Unsigned Integer Doubleword format