the upper and lower 32-bits of the 64-bit result
405362 PPC64, vmsummbm instruction doesn't handle overflow case correctly
405363 PPC64, xvcvdpsxws, xvcvdpuxws, do not handle NaN arguments correctly.
+405365 PPC64, function _get_maxmin_fp_NaN() doesn't handle QNaN, SNaN case
+ correctly.
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
* if frA is a SNaN
* result = frA converted to QNaN
* else if frB is a SNaN
- * result = frB converted to QNaN
+ * if (frA is QNan)
+ * result = frA
+ * else
+ * result = frB converted to QNaN
* else if frB is a QNaN
* result = frA
* // One of frA or frB was a NaN in order for this function to be called, so
*/
#define SNAN_MASK 0x0008000000000000ULL
+
return
- IRExpr_ITE(mkexpr(frA_isSNaN),
+ IRExpr_ITE(mkexpr(frA_isSNaN),
/* then: result = frA converted to QNaN */
binop(Iop_Or64, mkexpr(frA_I64), mkU64(SNAN_MASK)),
/* else: if frB is a SNaN */
IRExpr_ITE(mkexpr(frB_isSNaN),
- /* then: result = frB converted to QNaN */
- binop(Iop_Or64, mkexpr(frB_I64), mkU64(SNAN_MASK)),
+ IRExpr_ITE(mkexpr(frA_isQNaN),
+ /* then: result = frA */
+ mkexpr(frA_I64),
+ /* else: result = frB converted to QNaN */
+ binop(Iop_Or64, mkexpr(frB_I64),
+ mkU64(SNAN_MASK))),
/* else: if frB is a QNaN */
IRExpr_ITE(mkexpr(frB_isQNaN),
/* then: result = frA */