return at;
}
+ /* I32 x I32 -> I32 */
+ if (t1 == Ity_I32 && t2 == Ity_I32 && finalVty == Ity_I32) {
+ if (0) VG_(printf)("mkLazy2: I32 x I32 -> I32\n");
+ at = mkUifU(mce, Ity_I32, va1, va2);
+ at = mkPCastTo(mce, Ity_I32, at);
+ return at;
+ }
+
if (0) {
VG_(printf)("mkLazy2 ");
ppIRType(t1);
case Iop_CmpExpD128:
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
+ case Iop_MaxNumF32:
+ case Iop_MinNumF32:
+ /* F32 x F32 -> F32 */
+ return mkLazy2(mce, Ity_I32, vatom1, vatom2);
+
+ case Iop_MaxNumF64:
+ case Iop_MinNumF64:
+ /* F64 x F64 -> F64 */
+ return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+
/* non-FP after here */
case Iop_DivModU64to32:
{ DEFOP(Iop_RecpExpF64, UNDEF_UNKNOWN), },
{ DEFOP(Iop_RecpExpF32, UNDEF_UNKNOWN), },
+ /* --------- Possibly required by IEEE 754-2008. --------- */
+ { DEFOP(Iop_MaxNumF64, UNDEF_ALL), .arm = 1 },
+ { DEFOP(Iop_MinNumF64, UNDEF_ALL), .arm = 1 },
+ { DEFOP(Iop_MaxNumF32, UNDEF_ALL), .arm = 1 },
+ { DEFOP(Iop_MinNumF32, UNDEF_ALL), .arm = 1 },
+
/* ------------------ 16-bit scalar FP ------------------ */
{ DEFOP(Iop_F16toF64, UNDEF_ALL), .arm64 = 1 },
{ DEFOP(Iop_F64toF16, UNDEF_ALL), .arm64 = 1 },