Lines Matching refs:binop

610 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
679 return unop(Iop_32to1, binop(Iop_Or32, unop(Iop_1Uto32, arg1),
687 return unop(Iop_32to1, binop(Iop_And32, unop(Iop_1Uto32, arg1),
704 assign( *vOdd, binop(Iop_MullEven8Ux16, mkexpr(ones8x16), vIn) );
705 assign( *vEvn, binop(Iop_MullEven8Ux16, mkexpr(ones8x16),
706 binop(Iop_ShrV128, vIn, mkU8(8))) );
722 assign( *vOdd, binop(Iop_MullEven8Sx16, mkexpr(ones8x16), vIn) );
723 assign( *vEvn, binop(Iop_MullEven8Sx16, mkexpr(ones8x16),
724 binop(Iop_ShrV128, vIn, mkU8(8))) );
740 assign( *vOdd, binop(Iop_MullEven16Ux8, mkexpr(ones16x8), vIn) );
741 assign( *vEvn, binop(Iop_MullEven16Ux8, mkexpr(ones16x8),
742 binop(Iop_ShrV128, vIn, mkU8(16))) );
758 assign( *vOdd, binop(Iop_MullEven16Sx8, mkexpr(ones16x8), vIn) );
759 assign( *vEvn, binop(Iop_MullEven16Sx8, mkexpr(ones16x8),
760 binop(Iop_ShrV128, vIn, mkU8(16))) );
885 binop( Iop_64HLtoV128,
886 binop(Iop_32HLto64, mkexpr(t3), mkexpr(t2)),
887 binop(Iop_32HLto64, mkexpr(t1), mkexpr(t0))
905 binop(Iop_CmpEQ32, mkexpr(hi32),
906 binop( Iop_Sar32, mkexpr(lo32), mkU8(31))),
910 binop(Iop_Add32, mkU32(0x7FFFFFFF),
911 binop(Iop_Shr32, mkexpr(hi32), mkU8(31))));
927 binop(Iop_CmpEQ32, mkexpr(hi32), mkU32(0)),
942 return binop(Iop_64HLtoV128,
943 binop(Iop_32HLto64,
946 binop(Iop_32HLto64,
959 return binop(Iop_64HLtoV128,
960 binop(Iop_32HLto64,
963 binop(Iop_32HLto64,
970 binop(Iop_MullEven8Ux16, \
971 binop(Iop_ShrV128, expr_vA, mkU8(8)), \
972 binop(Iop_ShrV128, expr_vB, mkU8(8)))
975 binop(Iop_MullEven8Sx16, \
976 binop(Iop_ShrV128, expr_vA, mkU8(8)), \
977 binop(Iop_ShrV128, expr_vB, mkU8(8)))
980 binop(Iop_MullEven16Ux8, \
981 binop(Iop_ShrV128, expr_vA, mkU8(16)), \
982 binop(Iop_ShrV128, expr_vB, mkU8(16)))
985 binop(Iop_MullEven32Ux4, \
986 binop(Iop_ShrV128, expr_vA, mkU8(32)), \
987 binop(Iop_ShrV128, expr_vB, mkU8(32)))
990 binop(Iop_MullEven16Sx8, \
991 binop(Iop_ShrV128, expr_vA, mkU8(16)), \
992 binop(Iop_ShrV128, expr_vB, mkU8(16)))
995 binop(Iop_MullEven32Sx4, \
996 binop(Iop_ShrV128, expr_vA, mkU8(32)), \
997 binop(Iop_ShrV128, expr_vB, mkU8(32)))
1294 return binop( Iop_D64HLtoD128, high, low );
1545 binop(Iop_Add32,
1546 binop(Iop_And32,
1549 binop(Iop_And32,
1550 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
1574 binop( Iop_Add64,
1575 binop( Iop_And64, mkexpr( old ), mkexpr( mask[i] ) ),
1576 binop( Iop_And64,
1577 binop( Iop_Shr64, mkexpr( old ), mkU8( shift[i] ) ),
1611 binop(Iop_Add32,
1612 binop(Iop_And32,
1615 binop(Iop_And32,
1616 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
1625 binop(Iop_Add32,
1626 binop(Iop_And32,
1629 binop(Iop_And32,
1630 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
1634 assign(retval, unop(Iop_32Uto64, binop(Iop_Add32, mkexpr(nyu1), mkexpr(nyu2))));
1648 mask = binop(Iop_And8, rot_amt, mkU8(63));
1649 rot = binop(Iop_Or64,
1650 binop(Iop_Shl64, src, mask),
1651 binop(Iop_Shr64, src, binop(Iop_Sub8, mkU8(64), mask)));
1654 mask = binop(Iop_And8, rot_amt, mkU8(31));
1655 rot = binop(Iop_Or32,
1656 binop(Iop_Shl32, src, mask),
1657 binop(Iop_Shr32, src, binop(Iop_Sub8, mkU8(32), mask)));
1663 return IRExpr_ITE( binop(Iop_CmpNE8, mask, mkU8(0)),
1674 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA), getIReg(rB));
1682 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA),
1735 return binop( mkSzOp(ty, Iop_And8), addr, mkSzImm(ty, mask) );
1749 binop(Iop_CmpNE64,
1750 binop(Iop_And64, mkexpr(addr), mkU64(align-1)),
1760 binop(Iop_CmpNE32,
1761 binop(Iop_And32, mkexpr(addr), mkU32(align-1)),
1787 binop(Iop_Sub64, getIReg(1), mkU64(szB)),
1794 binop(Iop_Sub32, getIReg(1), mkU32(szB)),
1875 return binop(Iop_And32, unop(Iop_8Uto32, getCR0(n)), mkU32(1));
1878 return binop( Iop_And32,
1879 binop( Iop_Shr32,
1893 safe = binop(Iop_And32, bit, mkU32(1));
1906 binop( Iop_Or32,
1908 binop(Iop_And32, unop(Iop_8Uto32, getCR321(n)),
1911 binop(Iop_Shl32, safe, mkU8(toUChar(off)))
1936 return binop(Iop_And32, unop(Iop_8Uto32, getCR0(n)), mkU32(1));
1940 return binop( Iop_And32,
1956 binop(Iop_CmpORD64S, result, mkU64(0))) );
1959 binop(Iop_CmpORD32S, result, mkU32(0))) );
1984 assign( v1, binop(Iop_ShrV128, result, mkU8(32)) );
1985 assign( v2, binop(Iop_ShrV128, result, mkU8(64)) );
1986 assign( v3, binop(Iop_ShrV128, result, mkU8(96)) );
1989 binop(Iop_CmpEQ32, mkU32(0xFFFFFFFF),
1992 binop(Iop_OrV128,
1993 binop(Iop_OrV128, mkexpr(v0), mkexpr(v1)),
1994 binop(Iop_OrV128, mkexpr(v2), mkexpr(v3))))
1999 binop(Iop_CmpEQ32, mkU32(0xFFFFFFFF),
2001 binop(Iop_AndV128,
2002 binop(Iop_AndV128, mkexpr(v0), mkexpr(v1)),
2003 binop(Iop_AndV128, mkexpr(v2), mkexpr(v3)))
2005 putCR321( 6, binop(Iop_Or8,
2006 binop(Iop_Shl8, mkexpr(rOnes), mkU8(3)),
2007 binop(Iop_Shl8, mkexpr(rZeros), mkU8(1))) );
2009 putCR321( 6, binop(Iop_Shl8, mkexpr(rZeros), mkU8(1)) );
2024 so = binop(Iop_And8, e, mkU8(1));
2032 ov = binop(Iop_And8, e, mkU8(1));
2040 ca = binop(Iop_And8, e, mkU8(1));
2048 bc = binop(Iop_And8, e, mkU8(0x7F));
2059 return binop( Iop_And32, unop(Iop_8Uto32, getXER_SO()), mkU32(1) );
2069 return binop( Iop_And32, unop(Iop_8Uto32, getXER_OV()), mkU32(1) );
2075 return binop( Iop_And32, unop(Iop_8Uto32, ca ), mkU32(1) );
2086 return binop( Iop_And32, unop(Iop_8Uto32, bc), mkU32(0x7F) );
2106 binop(Iop_Xor32,(_aa),(_bb))
2109 binop(Iop_Xor32,binop(Iop_Xor32,(_cc),(_dd)),(_ee))
2112 binop(Iop_And32,binop(Iop_And32,(_ff),(_gg)),(_hh))
2128 = binop(Iop_Shr32, xer_ov, mkU8(31) );
2136 binop(Iop_CmpEQ32, argL, mkU32(INT32_MIN)),
2137 binop(Iop_CmpEQ32, argR, mkU32(-1))
2139 binop(Iop_CmpEQ32, argR, mkU32(0) )
2148 = unop(Iop_1Uto32, binop(Iop_CmpEQ32, argR, mkU32(0)));
2155 assign( t64, binop(Iop_MullS32, argL, argR) );
2157 = binop( Iop_CmpNE32,
2159 binop( Iop_Sar32,
2171 binop(Iop_CmpEQ32, argL, mkU32(INT32_MIN)) );
2184 = binop(Iop_Shr32, xer_ov, mkU8(31) );
2189 = binop( Iop_Or32,
2190 unop( Iop_1Uto32, binop( Iop_CmpEQ32, argR, mkU32( 0 ) ) ),
2191 unop( Iop_1Uto32, binop( Iop_CmpLT32U, argR, argL ) ) );
2200 xer_ov = binop( Iop_Or32,
2201 unop( Iop_1Uto32, binop( Iop_CmpEQ32, argR, mkU32( 0 ) ) ),
2202 unop( Iop_1Uto32, mkAND1( binop( Iop_CmpEQ32, res, mkU32( 0 ) ),
2203 mkAND1( binop( Iop_CmpNE32, argL, mkU32( 0 ) ),
2204 binop( Iop_CmpNE32, argR, mkU32( 0 ) ) ) ) ) );
2218 putXER_SO( binop(Iop_Or8, getXER_SO(), getXER_OV()) );
2239 binop(Iop_Xor64,(_aa),(_bb))
2242 binop(Iop_Xor64,binop(Iop_Xor64,(_cc),(_dd)),(_ee))
2245 binop(Iop_And64,binop(Iop_And64,(_ff),(_gg)),(_hh))
2261 = unop(Iop_64to1, binop(Iop_Shr64, xer_ov, mkU8(63)));
2269 binop(Iop_CmpEQ64, argL, mkU64(INT64_MIN)),
2270 binop(Iop_CmpEQ64, argR, mkU64(-1))
2272 binop(Iop_CmpEQ64, argR, mkU64(0) )
2279 = binop(Iop_CmpEQ64, argR, mkU64(0));
2286 = binop( Iop_CmpNE32,
2288 binop( Iop_Sar32,
2298 = binop(Iop_CmpEQ64, argL, mkU64(INT64_MIN));
2311 = unop(Iop_64to1, binop(Iop_Shr64, xer_ov, mkU8(63)));
2322 = mkOR1( binop( Iop_CmpEQ64, argR, mkU64( 0 ) ),
2323 mkAND1( binop( Iop_CmpEQ64, res, mkU64( 0 ) ),
2324 mkAND1( binop( Iop_CmpNE64, argL, mkU64( 0 ) ),
2325 binop( Iop_CmpNE64, argR, mkU64( 0 ) ) ) ) );
2330 xer_ov = mkOR1( binop( Iop_CmpEQ64, argR, mkU64( 0 ) ),
2331 binop( Iop_CmpLE64U, argR, argL ) );
2339 assign( t128, binop(Iop_MullS64, argL, argR) );
2341 = binop( Iop_CmpNE64,
2343 binop( Iop_Sar64,
2359 putXER_SO( binop(Iop_Or8, getXER_SO(), getXER_OV()) );
2402 = unop(Iop_1Uto32, binop(Iop_CmpLT32U, res, argL));
2409 binop(Iop_CmpLT32U, res, argL),
2411 binop(Iop_CmpEQ32, oldca, mkU32(1)),
2412 binop(Iop_CmpEQ32, res, argL)
2423 binop(Iop_CmpLT32U, res, argR),
2425 binop(Iop_CmpEQ32, oldca, mkU32(1)),
2426 binop(Iop_CmpEQ32, res, argR)
2437 = unop(Iop_1Uto32, binop(Iop_CmpLE32U, res, argR));
2446 = binop(
2448 binop(Iop_Sar32, argL, mkU8(31)),
2449 binop( Iop_And32,
2451 binop( Iop_Sub32,
2452 binop(Iop_Shl32, mkU32(1),
2460 binop(Iop_CmpLT32U, mkU32(31), argR),
2462 binop(Iop_Shr32, argL, mkU8(31)),
2464 unop(Iop_1Uto32, binop(Iop_CmpNE32, xer_ca, mkU32(0)))
2476 = binop(
2478 binop(Iop_Sar32, argL, mkU8(31)),
2479 binop( Iop_And32,
2481 binop( Iop_Sub32,
2482 binop(Iop_Shl32, mkU32(1),
2488 = unop(Iop_1Uto32, binop(Iop_CmpNE32, xer_ca, mkU32(0)));
2520 = unop(Iop_1Uto32, binop(Iop_CmpLT64U, res, argL));
2527 binop(Iop_CmpLT64U, res, argL),
2529 binop(Iop_CmpEQ64, oldca, mkU64(1)),
2530 binop(Iop_CmpEQ64, res, argL)
2541 binop(Iop_CmpLT64U, res, argR),
2543 binop(Iop_CmpEQ64, oldca, mkU64(1)),
2544 binop(Iop_CmpEQ64, res, argR)
2555 = unop(Iop_1Uto32, binop(Iop_CmpLE64U, res, argR));
2566 = binop(
2568 binop(Iop_Sar64, argL, mkU8(31)),
2569 binop( Iop_And64,
2571 binop( Iop_Sub64,
2572 binop(Iop_Shl64, mkU64(1),
2580 binop(Iop_CmpLT64U, mkU64(31), argR),
2582 unop(Iop_64to32, binop(Iop_Shr64, argL, mkU8(63))),
2584 unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)))
2597 = binop(
2599 binop(Iop_Sar64, argL, mkU8(31)),
2600 binop( Iop_And64,
2602 binop( Iop_Sub64,
2603 binop(Iop_Shl64, mkU64(1),
2609 = unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)));
2620 = binop(
2622 binop(Iop_Sar64, argL, mkU8(63)),
2623 binop( Iop_And64,
2625 binop( Iop_Sub64,
2626 binop(Iop_Shl64, mkU64(1),
2634 binop(Iop_CmpLT64U, mkU64(63), argR),
2636 unop(Iop_64to32, binop(Iop_Shr64, argL, mkU8(63))),
2638 unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)))
2652 = binop(
2654 binop(Iop_Sar64, argL, mkU8(63)),
2655 binop( Iop_And64,
2657 binop( Iop_Sub64,
2658 binop(Iop_Shl64, mkU64(1),
2664 = unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)));
2711 return binop(Iop_And32, IRExpr_Get( OFFB_VSCR,Ity_I32 ),
2717 binop(Iop_Shl32, \
2719 binop(Iop_Or8, \
2720 binop(Iop_And8, getCR321(_n), mkU8(7<<1)), \
2721 binop(Iop_And8, getCR0(_n), mkU8(1)) \
2726 return binop(Iop_Or32,
2727 binop(Iop_Or32,
2728 binop(Iop_Or32, FIELD(0), FIELD(1)),
2729 binop(Iop_Or32, FIELD(2), FIELD(3))
2731 binop(Iop_Or32,
2732 binop(Iop_Or32, FIELD(4), FIELD(5)),
2733 binop(Iop_Or32, FIELD(6), FIELD(7))
2740 return binop(Iop_Or32,
2741 binop(Iop_Or32,
2742 binop( Iop_Shl32, getXER_SO32(), mkU8(31)),
2743 binop( Iop_Shl32, getXER_OV32(), mkU8(30))),
2744 binop(Iop_Or32,
2745 binop( Iop_Shl32, getXER_CA32(), mkU8(29)),
2806 return binop(Iop_And32, mkexpr(val), mkU32(mask));
2825 val = binop( Iop_And32,
2858 return binop(Iop_Or32,
2859 binop(Iop_Or32,
2860 binop(Iop_Shl32, getXER_SO32(), mkU8(3)),
2861 binop(Iop_Shl32, getXER_OV32(), mkU8(2))),
2862 binop( Iop_Shl32, getXER_CA32(), mkU8(1)));
2869 return binop(Iop_Shr32,
2904 binop(Iop_And32, src,
2909 putXER_SO( unop(Iop_32to8, binop(Iop_Shr32, src, mkU8(31))) );
2910 putXER_OV( unop(Iop_32to8, binop(Iop_Shr32, src, mkU8(30))) );
2911 putXER_CA( unop(Iop_32to8, binop(Iop_Shr32, src, mkU8(29))) );
2974 assign( PSPB_val, binop( Iop_32HLto64,
2979 assign( value, binop( Iop_32HLto64,
2981 binop( Iop_And32,
2982 binop( Iop_Shr32, src, mkU8( 18 ) ),
2986 assign( value, binop( Iop_And64,
2987 binop( Iop_Shr64, src, mkU8( 50 ) ),
2991 binop( Iop_And64,
2993 binop( Iop_CmpEQ64,
2997 binop( Iop_CmpEQ64,
3001 binop( Iop_Or64,
3003 binop( Iop_CmpEQ64,
3007 binop( Iop_CmpLT64U,
3011 binop( Iop_Or64,
3012 binop( Iop_And64,
3016 binop( Iop_And64,
3018 binop( Iop_Or64,
3019 binop( Iop_And64,
3021 binop( Iop_Shl64,
3024 binop( Iop_And64,
3032 binop( Iop_And64,
3065 binop(
3067 binop(
3072 binop(
3090 binop(
3092 binop(
3097 binop(
3121 binop(Iop_CmpNE32, mkU32(ew), mkU32(EmNote_NONE)),
3156 putCR0 (fld, binop(Iop_And8, mkU8(1 ), unop(Iop_32to8, src)));
3157 putCR321(fld, binop(Iop_And8, mkU8(7<<1), unop(Iop_32to8, src)));
3168 binop( Iop_Shl64, src64, mkU8( toUChar( shft ) ) ),
3183 #define FP_FRAC_PART(x) binop( Iop_And64, \
3190 return binop( Iop_And32,
3191 binop( Iop_Shr32, mkexpr( src ), mkU8( 23 ) ),
3203 exp = binop( Iop_And32, binop( Iop_Shr32, unop( Iop_64HIto32,
3208 binop( Iop_And64,
3209 binop( Iop_Shr64, mkexpr( src ), mkU8( 52 ) ),
3219 assign( frac_part, binop( Iop_And32, mkexpr(src), mkU32(0x007fffff)) );
3220 Inf_exp = binop( Iop_CmpEQ32, fp_exp_part( src, True /*single precision*/ ), mkU32( 0xff ) );
3221 return mkAND1( Inf_exp, binop( Iop_CmpEQ32, mkexpr( frac_part ), mkU32( 0 ) ) );
3236 Inf_exp = binop( Iop_CmpEQ32, fp_exp_part( src, False /*not single precision*/ ), mkU32( 0x7ff ) );
3239 return mkAND1( Inf_exp, binop( Iop_CmpEQ32, binop( Iop_Or32, low32, hi32 ),
3246 assign( sign_less_part, binop( Iop_And32, mkexpr( src ), mkU32( SIGN_MASK32 ) ) );
3247 return binop( Iop_CmpEQ32, mkexpr( sign_less_part ), mkU32( 0 ) );
3260 assign( sign_less_part, binop( Iop_And64, mkexpr( src ), mkU64( SIGN_MASK ) ) );
3263 return binop( Iop_CmpEQ32, binop( Iop_Or32, low32, hi32 ),
3279 NaN_exp = binop( Iop_CmpEQ32, fp_exp_part( src, False /*not single precision*/ ),
3282 return mkAND1( NaN_exp, binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
3292 #define FP_FRAC_PART32(x) binop( Iop_And32, \
3297 IRExpr * exp_part = binop( Iop_And32,
3298 binop( Iop_Shr32, mkexpr( src ), mkU8( 23 ) ),
3300 IRExpr * NaN_exp = binop( Iop_CmpEQ32, exp_part, mkU32( 0xff ) );
3302 return mkAND1( NaN_exp, binop( Iop_CmpNE32, frac_part, mkU32( 0 ) ) );
3323 binop( Iop_CmpEQ32,
3324 binop( Iop_And32, mkexpr( tmp ),
3328 assign ( mask, binop( Iop_And32,
3331 return binop( Iop_Or32, mkexpr( mask ), mkexpr( tmp) );
3349 assign( signbit_32, binop( Iop_Shr32,
3351 binop( Iop_And64, mkexpr( intermediateResult ),
3359 binop( Iop_CmpEQ32,
3360 binop( Iop_Xor32,
3366 binop( Iop_Or64,
3367 binop( Iop_And64,
3370 binop( Iop_32HLto64,
3371 binop( Iop_Shl32,
3393 assign( signbit_32, binop( Iop_Shr32,
3394 binop( Iop_And32, mkexpr( intermediateResult ),
3402 binop( Iop_CmpEQ32,
3403 binop( Iop_Xor32,
3409 binop( Iop_Or32,
3410 binop( Iop_And32,
3413 binop( Iop_Shl32,
3499 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3508 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3525 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3537 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3546 binop(Iop_MullS64, mkexpr(rA),
3550 binop(Iop_MullS32, mkexpr(rA),
3557 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3574 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3586 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3604 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3605 binop( mkSzOp(ty, Iop_Add8),
3631 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3632 binop( mkSzOp(ty, Iop_Add8),
3656 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3682 assign( rD, mk64lo32Uto64( binop(Iop_DivS64, dividend,
3689 assign( rD, binop(Iop_DivS32, mkexpr(rA), mkexpr(rB)) );
3713 assign( rD, mk64lo32Uto64( binop(Iop_DivU64, dividend,
3720 assign( rD, binop(Iop_DivU32, mkexpr(rA), mkexpr(rB)) );
3739 assign( rD, binop(Iop_Sar64,
3740 binop(Iop_Mul64,
3746 binop(Iop_MullS32,
3761 assign( rD, binop(Iop_Sar64,
3762 binop(Iop_Mul64,
3768 binop(Iop_MullU32,
3782 assign( rD, binop(Iop_MullS32, a, b) );
3790 binop(Iop_MullU32,
3808 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3822 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3835 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3853 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3855 binop( mkSzOp(ty, Iop_Add8),
3881 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3883 binop( mkSzOp(ty, Iop_Add8),
3907 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3930 binop(Iop_MullS64,
3943 binop(Iop_MullU64,
3951 assign( rD, binop(Iop_Mul64, mkexpr(rA), mkexpr(rB)) );
3962 assign( rD, binop(Iop_DivS64, mkexpr(rA), mkexpr(rB)) );
3977 assign( rD, binop(Iop_DivU64, mkexpr(rA), mkexpr(rB)) );
4002 assign( res, binop( Iop_DivU32E, dividend, divisor ) );
4003 assign( rD, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( res ) ) );
4007 assign( res, binop( Iop_DivU32E, dividend, divisor ) );
4037 assign( res, binop( Iop_DivS32E, dividend, divisor ) );
4038 assign( rD, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( res ) ) );
4042 assign( res, binop( Iop_DivS32E, dividend, divisor ) );
4066 assign( rD, binop(Iop_DivS64E, mkexpr(rA), mkexpr(rB)) );
4078 assign( rD, binop(Iop_DivU64E, mkexpr(rA), mkexpr(rB)) );
4142 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64S, a, b)));
4146 putCR321(crfD, unop(Iop_32to8, binop(Iop_CmpORD32S, a, b)));
4155 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64U, a, b)));
4159 putCR321(crfD, unop(Iop_32to8, binop(Iop_CmpORD32U, a, b)));
4183 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64S, a, b)));
4187 putCR321(crfD, unop(Iop_32to8,binop(Iop_CmpORD32S, a, b)));
4202 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64U, a, b)));
4206 putCR321(crfD, unop(Iop_32to8, binop(Iop_CmpORD32U, a, b)));
4253 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4261 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4269 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4275 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4281 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4287 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4299 assign(rA, binop( mkSzOp(ty, Iop_And8),
4306 assign(rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4324 irx = binop(Iop_CmpNE32, lo32, mkU32(0));
4339 binop( mkSzOp(ty, Iop_Xor8),
4375 binop( mkSzOp(ty, Iop_And8),
4383 binop( mkSzOp(ty, Iop_Or8),
4394 assign( rA, binop( mkSzOp(ty, Iop_Or8),
4402 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4409 assign( rA, binop( mkSzOp(ty, Iop_Xor8),
4432 irx = binop(Iop_CmpNE64, mkexpr(rS), mkU64(0));
4444 binop( Iop_CmpEQ8x16,
4445 binop( Iop_64HLtoV128, mkU64(0), mkexpr(rS) ),
4446 binop( Iop_64HLtoV128, mkU64(0), mkexpr(rB) )
4450 binop( Iop_CmpEQ8x16,
4500 putIReg( rA_addr, binop(Iop_32HLto64, mkexpr(resultHi), mkexpr(resultLo)));
4519 putIReg( rA_addr, binop(Iop_32HLto64, mkexpr(resultHi),
4539 IRExpr * res = binop(Iop_And64, mkU64(0), mkU64(0));
4549 binop( Iop_And64, mkU64( BPERMD_IDX_MASK ), rS_expr ) );
4551 binop( Iop_CmpLT64U, mkexpr( idx_tmp ), mkU64( 64 ) ) );
4553 binop( Iop_And8,
4565 binop( Iop_And64,
4567 binop( Iop_Shr64,
4568 binop( Iop_And64,
4570 binop( Iop_Shl64,
4574 res = binop( Iop_Or64,
4576 binop( Iop_Shl64,
4579 rS_expr = binop( Iop_Shr64, rS_expr, mkU8( 8 ) );
4651 assign( rS1, binop(shr_op, mkexpr(rS), mkU8(8)) );
4652 assign( iTot2, binop(Iop_Add32,
4655 assign( rS2, binop(shr_op, mkexpr(rS1), mkU8(8)) );
4656 assign( iTot3, binop(Iop_Add32,
4659 assign( rS3, binop(shr_op, mkexpr(rS2), mkU8(8)) );
4660 assign( iTot4, binop(Iop_Add32,
4664 assign( rS4, binop(shr_op, mkexpr(rS3), mkU8(8)) );
4665 assign( iTot5, binop(Iop_Add32,
4668 assign( rS5, binop(shr_op, mkexpr(rS4), mkU8(8)) );
4669 assign( iTot6, binop(Iop_Add32,
4672 assign( rS6, binop(shr_op, mkexpr(rS5), mkU8(8)) );
4673 assign( iTot7, binop(Iop_Add32,
4676 assign( rS7, binop(shr_op, mkexpr(rS6), mkU8(8)) );
4677 assign( iTot8, binop(Iop_Add32,
4681 binop(Iop_And32, mkexpr(iTot8), mkU32(1))) );
4688 assign( rS1, binop(shr_op, mkexpr(rS), mkU8(8)) );
4689 assign( iTot2, binop(Iop_Add32,
4692 assign( rS2, binop(shr_op, mkexpr(rS1), mkU8(8)) );
4693 assign( iTot3, binop(Iop_Add32,
4696 assign( rS3, binop(shr_op, mkexpr(rS2), mkU8(8)) );
4697 assign( iTot4, binop(Iop_Add32,
4703 assign( rS4, binop(shr_op, mkexpr(rS3), mkU8(8)) );
4705 assign( rS5, binop(shr_op, mkexpr(rS4), mkU8(8)) );
4706 assign( iTot6, binop(Iop_Add32,
4709 assign( rS6, binop(shr_op, mkexpr(rS5), mkU8(8)) );
4710 assign( iTot7, binop(Iop_Add32,
4713 assign( rS7, binop(shr_op, mkexpr(rS6), mkU8(8)));
4714 assign( iTot8, binop(Iop_Add32,
4717 assign( iHi, binop(Iop_And32, mkU32(1), mkexpr(iTot8)) ),
4718 assign( rA, binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo)) );
4720 assign( rA, binop(Iop_Or32, mkU32(0), mkexpr(iLo)) );
4774 assign( rot, binop(Iop_Or64, r,
4775 binop(Iop_Shl64, r, mkU8(32))) );
4777 binop(Iop_Or64,
4778 binop(Iop_And64, mkexpr(rot), mkU64(mask64)),
4779 binop(Iop_And64, getIReg(rA_addr), mkU64(~mask64))) );
4786 binop(Iop_Or32,
4787 binop(Iop_And32, mkU32(mask32), r),
4788 binop(Iop_And32, getIReg(rA_addr), mkU32(~mask32))) );
4810 assign( rot, binop(Iop_Or64, mkexpr(rTmp),
4811 binop(Iop_Shl64, mkexpr(rTmp), mkU8(32))) );
4812 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4820 assign( rA, binop(Iop_Shl32, mkexpr(rS), mkU8(sh_imm)) );
4827 assign( rA, binop(Iop_Shr32, mkexpr(rS), mkU8(MaskBeg)) );
4835 assign( rA, binop(Iop_And32,
4857 assign(rot, binop(Iop_Or64, r, binop(Iop_Shl64, r, mkU8(32))));
4858 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4863 assign( rA, binop(Iop_And32,
4889 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4895 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4905 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4922 assign( rA, binop(Iop_Shr64, mkexpr(rS), mkU8(msk_imm)) );
4928 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4939 assign( rA, binop(Iop_Shl64, mkexpr(rS), mkU8(sh_imm)) );
4945 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4956 assign( rA, binop(Iop_Or64,
4957 binop(Iop_And64, mkU64(mask64), r),
4958 binop(Iop_And64, mkU64(~mask64),
5250 assign(low, load(ty, binop( Iop_Add64,
5255 assign(high, load(ty, binop( Iop_Add64,
5260 assign(high, load(ty, binop( Iop_Add32,
5263 assign(low, load(ty, binop( Iop_Add32,
5536 irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
5546 irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
5580 stmt( IRStmt_Exit( binop(Iop_CmpLT32U, e_nbytes, mkU32(i+1)),
5595 binop(
5598 binop(
5603 binop( mkSzOp(ty,Iop_Add8),
5632 stmt( IRStmt_Exit( binop(Iop_CmpLT32U, e_nbytes, mkU32(i+1)),
5643 binop( mkSzOp(ty,Iop_Add8), e_EA, mkSzImm(ty,i)),
5645 binop( Iop_Shr32,
5689 binop(Iop_Add32, mkexpr(t_EA), mkU32(4))) );
5723 store( binop(Iop_Add32, mkexpr(t_EA), mkU32(4)),
5770 binop( mkSzOp(ty, Iop_CmpEQ8),
5775 binop( mkSzOp(ty, Iop_CmpNE8),
5810 assign( res, binop(Iop_Xor32, mkexpr(cr_bi),
5900 binop(mkSzOp(ty, Iop_Sub8),
5912 binop(Iop_And32, mkexpr(cond_ok), mkexpr(ctr_ok)) );
5924 binop(Iop_CmpNE32, mkexpr(do_branch), mkU32(0)),
5959 binop(Iop_CmpEQ32, mkexpr(cond_ok), mkU32(0)),
5983 binop(mkSzOp(ty, Iop_Sub8),
5991 binop(Iop_And32, mkexpr(cond_ok), mkexpr(ctr_ok)) );
5999 binop(Iop_CmpEQ32, mkexpr(do_branch), mkU32(0)),
6074 assign( crbD, binop(Iop_And32, mkexpr(crbA), mkexpr(crbB)) );
6078 assign( crbD, binop(Iop_And32,
6085 binop(Iop_Xor32, mkexpr(crbA), mkexpr(crbB))) );
6090 binop(Iop_And32, mkexpr(crbA), mkexpr(crbB))) );
6095 binop(Iop_Or32, mkexpr(crbA), mkexpr(crbB))) );
6099 assign( crbD, binop(Iop_Or32, mkexpr(crbA), mkexpr(crbB)) );
6103 assign( crbD, binop(Iop_Or32,
6109 assign( crbD, binop(Iop_Xor32, mkexpr(crbA), mkexpr(crbB)) );
6166 binop(opCMPEQ, const0, const0),
6190 tmp = binop(opAND, binop(opCMPORDS, argLe, argRe), const8);
6191 cond = binop(opOR, tmp, cond);
6194 tmp = binop(opAND, binop(opCMPORDS, argLe, argRe), const4);
6195 cond = binop(opOR, tmp, cond);
6198 tmp = binop(opAND, binop(opCMPORDS, argLe, argRe), const2);
6199 cond = binop(opOR, tmp, cond);
6202 tmp = binop(opAND, binop(opCMPORDU, argLe, argRe), const8);
6203 cond = binop(opOR, tmp, cond);
6206 tmp = binop(opAND, binop(opCMPORDU, argLe, argRe), const4);
6207 cond = binop(opOR, tmp, cond);
6210 binop(opCMPNE, cond, const0),
6499 putCR321(0, binop(Iop_Shl8, unop(Iop_1Uto8, mkexpr(resSC)), mkU8(1)));
6530 putCR321(0, binop(Iop_Shl8, unop(Iop_1Uto8, mkexpr(resSC)), mkU8(1)));
6564 putCR321(0, binop(Iop_Shl8, unop(Iop_1Uto8, mkexpr(resSC)), mkU8(1)));
6657 putCR321(0, binop(Iop_Shl8, unop(Iop_1Uto8, mkexpr(resSC)), mkU8(1)));
6687 binop(Iop_Add64, mkexpr(EA), mkU64(8) ),
6693 binop(Iop_Add64, mkexpr(EA), mkU64(8) ),
6698 binop( Iop_Add32, mkexpr(EA), mkU32(4) ),
6701 binop( Iop_Add32, mkexpr(EA), mkU32(12) ),
6733 store( binop( Iop_Add64, mkexpr(EA), mkU64(8) ),
6737 store( binop( Iop_Add64, mkexpr(EA), mkU64(8) ),
6741 stmt( stmt_load( resSC, binop( Iop_Add32,
6745 store( binop(Iop_Add32, mkexpr(EA), mkU32(12) ), mkexpr(rS_lo) );
6750 putCR321(0, binop( Iop_Shl8,
6813 binop( Iop_And32,
6814 binop( Iop_Shl32,
6817 binop(Iop_And32,
6820 binop( Iop_Sar32,
6821 binop(Iop_Shl32, mkexpr(rB_lo32), mkU8(26)),
6836 assign( sh_amt, binop(Iop_And32, mkU32(0x3F),
6839 binop(Iop_CmpLT32U, mkU32(31), mkexpr(sh_amt)) );
6840 e_tmp = binop( Iop_Sar32,
6861 assign( rA, binop(Iop_Sar64,
6862 binop(Iop_Shl64, getIReg(rS_addr),
6866 assign( rA, binop(Iop_Sar32, mkexpr(rS_lo32),
6887 binop(
6889 binop( Iop_Shr32,
6892 binop(Iop_And32, mkexpr(rB_lo32),
6895 binop( Iop_Sar32,
6896 binop(Iop_Shl32, mkexpr(rB_lo32),
6914 binop(
6916 binop( Iop_Shl64,
6919 binop(Iop_And64, mkexpr(rB), mkU64(63)))),
6921 binop( Iop_Sar64,
6922 binop(Iop_Shl64, mkexpr(rB), mkU8(57)),
6934 assign( sh_amt, binop(Iop_And64, mkU64(0x7F), mkexpr(rB)) );
6936 binop(Iop_CmpLT64U, mkU64(63), mkexpr(sh_amt)) );
6938 binop( Iop_Sar64,
6956 assign( rA, binop(Iop_Sar64, getIReg(rS_addr), mkU8(sh_imm)) );
6975 binop(
6977 binop( Iop_Shr64,
6980 binop(Iop_And64, mkexpr(rB), mkU64(63)))),
6982 binop( Iop_Sar64,
6983 binop(Iop_Shl64, mkexpr(rB), mkU8(57)),
7014 binop(Iop_Or32,
7015 binop(Iop_Shl32, mkexpr(t), mkU8(24)),
7016 binop(Iop_Or32,
7017 binop(Iop_And32, binop(Iop_Shl32, mkexpr(t), mkU8(8)),
7019 binop(Iop_Or32,
7020 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t), mkU8(8)),
7022 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t), mkU8(24)),
7033 binop(Iop_Or32,
7034 binop(Iop_And32, binop(Iop_Shl32, mkexpr(t), mkU8(8)),
7036 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t), mkU8(8)),
7090 nextAddr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
7095 putIReg( rD_addr, binop( Iop_32HLto64, mkexpr( w2 ), mkexpr( w4 ) ) );
7097 putIReg( rD_addr, binop( Iop_32HLto64, mkexpr( w4 ), mkexpr( w2 ) ) );
7123 binop( Iop_32HLto64, gen_byterev32( hi ),
7381 binop(Iop_Shr32,
7478 binop( Iop_And64, high64, mkU64( 0xFFFFFFFF ) ) :
7480 binop( Iop_And64, high64, mkU64( 0xFFFFFFFF ) ) ) );
7500 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( rA ), mkU64( 0 ) ) );
7502 putVSReg( XT, binop( Iop_64HLtoV128,
7503 binop( Iop_32HLto64,
7528 putVSReg( XT, binop( Iop_64HLtoV128,
7552 putVSReg( XT, binop( Iop_64HLtoV128,
7553 binop( Iop_32HLto64, mkU32( 0 ), mkexpr ( rA ) ),
7664 assign( addr, binop( Iop_And64,
7669 irx_addr = binop( Iop_Add64, mkexpr(addr), mkU64(i*8) );
7674 assign( addr, binop( Iop_And32,
7679 irx_addr = binop( Iop_Add32, mkexpr(addr), mkU32(i*4) );
7696 assign( addr, binop( mkSzOp(ty, Iop_And8),
7742 return binop( Iop_Xor32,
7744 binop( Iop_And32,
7745 binop(Iop_Shl32, mkexpr(rm_PPC32), mkU8(1)),
7770 return binop( Iop_Xor32,
7772 binop( Iop_And32,
7773 binop( Iop_Shl32, mkexpr( rm_PPC32 ), mkU8( 1 ) ),
7802 binop( Iop_Or32,
7807 binop( Iop_CmpEQ32,
7808 binop( Iop_And32,
7815 binop( Iop_Or8,
7817 binop( Iop_CmpNE32,
7818 binop( Iop_And32,
7825 binop( Iop_CmpNE32,
7826 binop( Iop_And32,
7833 binop( Iop_And8,
7844 return binop( Iop_32HLto64,
7845 binop( Iop_Or32,
7846 binop( Iop_And32,
7851 binop( Iop_And32,
7971 assign( iHi, binop(Iop_Sub32,
7973 binop(Iop_Shr32, mkexpr(iLo), mkU8(31))) );
7975 binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo))) );
7984 assign( dw, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( iLo ) ) );
8205 assign( frD, binop( Iop_SqrtF64, rm, mkexpr(frB) ));
8279 assign( frD, binop(Iop_SqrtF64, rm, mkexpr(frB)) );
8292 assign( cc, binop(Iop_CmpF64, mkexpr(frA),
8294 assign( cc_b0, binop(Iop_And32, mkexpr(cc), mkU32(1)) );
8300 binop(Iop_CmpEQ32, mkexpr(cc_b0), mkU32(0)),
8559 assign(e_b, binop( Iop_Sub32, mkexpr(frB_exp_shR), mkU32( bias ) ));
8572 eb_LTE = binop( Iop_CmpLE32S, mkexpr( e_b ), mkU32( test_value ) );
8574 frBNeg = binop( Iop_CmpEQ32,
8575 binop( Iop_Shr32,
8596 assign( frac_part, binop( Iop_And32, mkexpr(frB_Int), mkU32(0x007fffff)) );
8598 = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ), mkU32( 0 ) ),
8599 binop( Iop_CmpNE32, mkexpr( frac_part ), mkU32( 0 ) ) );
8607 fraction_is_nonzero = binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
8610 = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ), mkU32( 0 ) ),
8685 assign(e_a, binop( Iop_Sub32, mkexpr(frA_exp_shR), mkU32( bias ) ));
8686 assign(e_b, binop( Iop_Sub32, mkexpr(frB_exp_shR), mkU32( bias ) ));
8725 eb_LTE = binop(Iop_CmpLE32S, mkexpr(e_b), mkU32(test_value));
8734 eb_GTE = binop(Iop_CmpLT32S, mkU32(test_value), mkexpr(e_b));
8742 binop( Iop_CmpLT32S, mkU32( bias ),
8743 binop( Iop_Sub32, mkexpr( e_a ),
8753 binop( Iop_CmpLE32S,
8754 binop( Iop_Sub32,
8766 ea_LTE = mkAND1( mkexpr( fraNotZero_tmp ), binop( Iop_CmpLE32S,
8790 fraction_is_nonzero = binop( Iop_CmpNE32, FP_FRAC_PART32(frB_int),
8799 fraction_is_nonzero = binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
8802 frbDenorm = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ),
8846 return binop( Iop_Or32,
8847 binop( Iop_Or32,
8848 binop( Iop_Shl32, fl_flag, mkU8( 3 ) ),
8849 binop( Iop_Shl32, mkexpr(fg_flag), mkU8( 2 ) ) ),
8850 binop( Iop_Shl32, mkexpr(fe_flag), mkU8( 1 ) ) );
8901 binop( Iop_Or32,
8902 binop( Iop_Or32, mkU32( 8 ), // fl_flag
8903 binop( Iop_Shl32, mkexpr(fg_flag), mkU8( 2 ) ) ),
8904 binop( Iop_Shl32, mkexpr(fe_flag), mkU8( 1 ) ) ) );
8945 assign( ccIR, binop(Iop_CmpF64, mkexpr(frA), mkexpr(frB)) );
8961 binop(
8966 binop(
8968 binop(
8972 binop(Iop_Shr32, mkexpr(ccIR), mkU8(5))
8976 binop(
8978 binop(
8981 binop(Iop_Shr32, mkexpr(ccIR), mkU8(6))
9060 assign( frD, binop( Iop_RoundF64toF32, rm, binop( Iop_I64StoF64, rm,
9067 assign( frD, unop( Iop_F32toF64, binop( Iop_I64UtoF32, rm, mkexpr( r_tmp64 ) ) ) );
9076 assign( frD, binop( Iop_RoundF64toF32, rm, mkexpr(frB) ));
9082 binop(Iop_F64toI32S, rm, mkexpr(frB)) );
9092 binop(Iop_F64toI32S, mkU32(Irrm_ZERO), mkexpr(frB) ));
9103 binop( Iop_F64toI32U,
9116 binop(Iop_F64toI64S, rm, mkexpr(frB)) );
9125 binop(Iop_F64toI64S, mkU32(Irrm_ZERO), mkexpr(frB)) );
9136 binop(Iop_F64toI64U, opc2 == 0x3AE ? rm : mkU32(Irrm_ZERO), mkexpr(frB)) );
9146 binop(Iop_I64StoF64, rm, mkexpr(r_tmp64)) );
9152 assign( frD, binop( Iop_I64UtoF64, rm, mkexpr( r_tmp64 ) ) );
9160 binop(Iop_F64toI64S, mkU32(Irrm_NEAREST), mkexpr(frB)) );
9165 binop(Iop_F64toI64S, mkU32(Irrm_ZERO), mkexpr(frB)) );
9170 binop(Iop_F64toI64S, mkU32(Irrm_PosINF), mkexpr(frB)) );
9175 binop(Iop_F64toI64S, mkU32(Irrm_NegINF), mkexpr(frB)) );
9185 binop(Iop_CmpNE8,
9187 binop(Iop_CmpF64,
9193 binop(Iop_CmpNE32,
9194 binop(Iop_Shr32,
9202 binop(Iop_I64StoF64, mkU32(0),
9204 binop(Iop_I64StoF64, mkU32(0), mkexpr(r_tmp64) )
9292 assign( EA_lo, binop(Iop_Add64, mkexpr(EA_hi), mkU64(8)) );
9294 assign( EA_lo, binop(Iop_Add32, mkexpr(EA_hi), mkU32(8)) );
9334 binop( Iop_32HLto64,
9347 binop( Iop_32HLto64,
9403 assign(signA, binop(Iop_And32,
9411 assign(hiD, binop(Iop_Or32,
9412 binop(Iop_And32,
9420 binop(Iop_32HLto64,
9512 assign( tmp, binop(Iop_And32,
9513 binop(Iop_Shr32,fpscr_all,mkU8(4 * (7-crfS))),
9572 binop( Iop_32HLto64, fpscr_upper, fpscr_lower ) ) );
9668 #define AND(x, y) binop( Iop_And32, x, y )
9670 #define OR(x, y) binop( Iop_Or32, x, y )
9675 #define SHL(value, by) binop( Iop_Shl32, value, mkU8( by ) )
9676 #define SHR(value, by) binop( Iop_Shr32, value, mkU8( by ) )
9710 unop( Iop_1Sto32, binop( Iop_CmpLE32U, lmd32, mkU32( 7 ) ) ) );
9712 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmd32, mkU32( 8 ) ) ) );
9714 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmd32, mkU32( 9 ) ) ) );
9716 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmexp, mkU32( 0 ) ) ) );
9718 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmexp, mkU32( 1 ) ) ) );
9720 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmexp, mkU32( 2 ) ) ) );
9726 binop( Iop_Or32, binop( Iop_Shl32, lmexp, mkU8( 3 ) ), lmd32 ) );
9728 binop( Iop_Or32,
9729 binop( Iop_Or32,
9730 binop( Iop_And32,
9733 binop( Iop_And32,
9736 binop( Iop_And32, mkexpr( lmexp_10_mask ), mkU32( 28 ) ) ) );
9738 binop( Iop_Or32,
9739 binop( Iop_Or32,
9740 binop( Iop_And32,
9743 binop( Iop_And32,
9746 binop( Iop_And32, mkexpr( lmexp_10_mask ), mkU32( 29 ) ) ) );
9749 return binop( Iop_Or32,
9750 binop( Iop_Or32,
9751 binop( Iop_And32,
9754 binop( Iop_And32,
9757 binop( Iop_And32, mkexpr( lmd_9_mask ), mkexpr( lmd_9_val ) ) );
9790 unop( Iop_1Sto32, binop( Iop_CmpLE32U,
9794 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9798 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9802 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9806 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9810 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9814 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9821 assign( lmd_07_val, binop( Iop_And32, gfield_0_4, mkU32( 0x7 ) ) );
9853 binop( Iop_CmpLE32U,
9854 binop( Iop_And32,
9859 binop( Iop_CmpLE32U,
9860 binop( Iop_And32,
9861 binop( Iop_Shr32,
9867 binop( Iop_CmpLE32U,
9868 binop( Iop_And32,
9869 binop( Iop_Shr32,
9875 binop( Iop_CmpLE32U,
9876 binop( Iop_And32,
9877 binop( Iop_Shr32,
9883 binop( Iop_CmpLE32U,
9884 binop( Iop_And32,
9885 binop( Iop_Shr32,
9891 binop( Iop_CmpLE32U,
9892 binop( Iop_And32,
9893 binop( Iop_Shr32,
9899 binop( Iop_CmpLE32U,
9900 binop( Iop_And32,
9901 binop( Iop_Shr32,
9907 binop( Iop_CmpLE32U,
9908 binop( Iop_And32,
9909 binop( Iop_Shr32,
9915 binop( Iop_CmpLE32U,
9916 binop( Iop_And32,
9921 binop( Iop_CmpLE32U,
9922 binop( Iop_And32,
9923 binop( Iop_Shr32,
9929 binop( Iop_CmpLE32U,
9930 binop( Iop_And32,
9931 binop( Iop_Shr32,
9937 binop( Iop_CmpLE32U,
9938 binop( Iop_And32,
9939 binop( Iop_Shr32,
9945 binop( Iop_CmpLE32U,
9946 binop( Iop_And32,
9947 binop( Iop_Shr32,
9953 binop( Iop_CmpLE32U,
9954 binop( Iop_And32,
9955 binop( Iop_Shr32,
9961 binop( Iop_CmpLE32U,
9962 binop( Iop_And32,
9963 binop( Iop_Shr32,
9969 binop( Iop_CmpLE32U,
9970 binop( Iop_And32,
9971 binop( Iop_Shr32,
9989 return binop( Iop_Or32,
9990 unop( Iop_1Sto32, binop( Iop_CmpEQ32, sign, mkU32( 0xB ) ) ),
9991 unop( Iop_1Sto32, binop( Iop_CmpEQ32, sign, mkU32( 0xD ) ) )
9997 return binop( Iop_Or32,
9998 binop( Iop_Or32,
10000 binop( Iop_CmpEQ32, sign, mkU32( 0xA ) ) ),
10002 binop( Iop_CmpEQ32, sign, mkU32( 0xC ) ) ) ),
10003 binop( Iop_Or32,
10005 binop( Iop_CmpEQ32, sign, mkU32( 0xE ) ) ),
10007 binop( Iop_CmpEQ32, sign, mkU32( 0xF ) ) ) ) );
10013 return binop( Iop_Or32,
10014 binop( Iop_And32, neg_sign_mask, mkU32( 0x80000000 ) ),
10015 binop( Iop_And32, pos_sign_mask, mkU32( 0x00000000 ) ) );
10023 return binop( Iop_Or32,
10026 binop( Iop_CmpEQ32,
10027 binop( Iop_Or32, pos_sign_mask, neg_sign_mask ),
10048 binop( Iop_32HLto64,
10049 binop( Iop_And32,
10065 binop( Iop_32HLto64,
10066 binop( Iop_Or32,
10067 binop( Iop_Shl32,
10068 binop( Iop_And32,
10072 binop( Iop_Shr32,
10075 binop( Iop_Or32,
10076 binop( Iop_Shl32,
10079 binop( Iop_Shr32,
10092 binop( Iop_32HLto64,
10094 binop( Iop_And32,
10095 binop( Iop_Shr32,
10125 binop( Iop_Add8,
10127 binop(Iop_And8,
10129 binop(Iop_CmpEQ32,
10130 binop(Iop_And32,
10135 binop( Iop_Xor8, /* complement flag */
10141 binop(Iop_Or8,
10143 binop(Iop_CmpNE32,
10144 binop(Iop_And32,
10166 assign( num_lmd, unop( Iop_1Uto8, binop( Iop_CmpEQ32, lmd, mkU32( 0 ) ) ) );
10205 assign( num_lmd, unop( Iop_1Uto8, binop( Iop_CmpEQ32, lmd, mkU32( 0 ) ) ) );
10221 binop( Iop_Or32,
10222 binop( Iop_Shl32, mid_60_u, mkU8( 2 ) ),
10223 binop( Iop_Shr32, mid_60_l, mkU8( 30 ) ) ) );
10237 binop( Iop_Or32,
10238 binop( Iop_Shl32, low_60_u, mkU8( 2 ) ),
10239 binop( Iop_Shr32, low_60_l, mkU8( 30 ) ) ) );
10257 binop( Iop_And32,
10258 binop( Iop_Shr32, unop( Iop_64HIto32, val ), mkU8( 26 ) ),
10262 return binop( Iop_Or32, /* QNaN check */
10264 binop( Iop_CmpEQ32,
10268 binop( Iop_CmpEQ32,
10421 assign( frS, binop( Iop_ShlD64, mkexpr( frA ), mkU8( shift_val ) ) );
10426 assign( frS, binop( Iop_ShrD64, mkexpr( frA ), mkU8( shift_val ) ) );
10458 assign( frS, binop( Iop_ShlD128, mkexpr( frA ), mkU8( shift_val ) ) );
10463 assign( frS, binop( Iop_ShrD128, mkexpr( frA ), mkU8( shift_val ) ) );
10505 assign( frS, binop( Iop_D64toD32, round, mkexpr( frB ) ) );
10517 assign( tmp, binop( Iop_D64toI64S, round, mkexpr( frB ) ) );
10528 assign( frS, binop( Iop_I64StoD64,
10571 assign( tmp, binop( Iop_D128toI64S, round, mkexpr( frB128 ) ) );
10580 assign( frS64, binop( Iop_D128toD64, round, mkexpr( frB128 ) ) );
10635 assign( frS, binop( Iop_RoundD64toInt,
10676 assign( frS, binop( Iop_RoundD128toInt,
10726 binop( Iop_Sub32, mkU32( 397 ),
10727 binop( Iop_And32, mkU32( 0xF ),
10734 binop( Iop_Add32, mkU32( 398 ), mkU32( TE_value ) )
10738 assign( frA, binop( Iop_InsertExpD64, mkexpr( TE_I64 ),
10820 binop( Iop_Sub32, mkU32( 6175 ),
10821 binop( Iop_And32, mkU32( 0xF ),
10828 binop( Iop_Add32,
10834 binop( Iop_InsertExpD128, mkexpr( TE_I64 ),
10909 assign( frS, binop( Iop_InsertExpD64,
10961 assign( frS, binop( Iop_InsertExpD128,
11004 assign( ccIR, binop( Iop_CmpD64, mkexpr( frA ), mkexpr( frB ) ) );
11013 assign( ccIR, binop( Iop_CmpD128, mkexpr( frA ), mkexpr( frB ) ) );
11031 binop( Iop_Shl32,
11034 binop( Iop_Or32,
11035 binop( Iop_And32,
11037 binop( Iop_Shr32,
11041 binop( Iop_And32,
11042 binop( Iop_Xor32,
11044 binop( Iop_Shr32,
11119 assign( gfield_A, binop( Iop_And32,
11125 assign( gfield_B, binop( Iop_And32,
11132 assign( A_NaN_true, binop(Iop_Or32,
11134 binop( Iop_CmpEQ32,
11138 binop( Iop_CmpEQ32,
11142 assign( B_NaN_true, binop(Iop_Or32,
11144 binop( Iop_CmpEQ32,
11148 binop( Iop_CmpEQ32,
11156 binop( Iop_CmpEQ32,
11162 binop( Iop_CmpEQ32,
11168 binop( Iop_Or32,
11169 binop( Iop_Or32,
11172 binop( Iop_Or32,
11182 binop( Iop_Or32,
11184 binop( Iop_CmpEQ32,
11187 binop( Iop_Or32,
11188 binop( Iop_And32,
11191 binop( Iop_And32,
11195 assign( cc0, binop( Iop_And32,
11197 binop( Iop_Shl32,
11199 binop( Iop_CmpLT32U,
11204 assign( cc1, binop( Iop_And32,
11206 binop( Iop_Shl32,
11208 binop( Iop_CmpLT32U,
11213 assign( cc2, binop( Iop_Shl32,
11214 binop( Iop_And32,
11219 assign( cc3, binop( Iop_And32,
11221 binop( Iop_And32,
11223 binop( Iop_Or32,
11224 binop( Iop_Or32,
11227 binop( Iop_Or32,
11234 binop( Iop_Or32,
11236 binop( Iop_Or32,
11238 binop( Iop_Or32,
11312 binop( Iop_And64,
11335 binop( Iop_InsertExpD64,
11340 binop( Iop_CmpD64,
11346 binop( Iop_CmpD64,
11378 binop( Iop_InsertExpD128,
11383 binop( Iop_CmpD128,
11384 binop( Iop_D64HLtoD128,
11386 binop( Iop_And64,
11393 binop( Iop_CmpD128,
11394 binop( Iop_D64HLtoD128,
11412 assign( gfield, binop( Iop_And32,
11429 binop( Iop_CmpEQ32,
11430 binop( Iop_And32,
11437 binop( Iop_CmpEQ32,
11438 binop( Iop_And32,
11444 binop( Iop_And32,
11446 binop( Iop_CmpEQ32,
11447 binop( Iop_And32,
11455 binop( Iop_And32,
11457 binop( Iop_CmpEQ32,
11461 binop( Iop_Or32,
11463 binop( Iop_Or32,
11471 binop( Iop_And32,
11472 binop( Iop_Or32,
11474 binop( Iop_CmpEQ32,
11478 binop( Iop_CmpEQ32,
11482 binop( Iop_Or32,
11483 binop( Iop_Or32,
11486 binop( Iop_Or32,
11493 binop( Iop_Or32,
11494 binop( Iop_Or32,
11497 binop( Iop_Or32,
11499 binop( Iop_Or32,
11516 assign( dcm0, binop( Iop_Shl32,
11519 assign( dcm1, binop( Iop_Shl32,
11520 binop( Iop_And32,
11524 assign( dcm2, binop( Iop_Shl32,
11525 binop( Iop_And32,
11529 assign( dcm3, binop( Iop_Shl32,
11530 binop( Iop_And32,
11534 assign( dcm4, binop( Iop_Shl32,
11535 binop( Iop_And32,
11539 assign( dcm5, binop( Iop_And32, mkexpr( SNaN_true), mkU32( 1 ) ) );
11543 assign( extreme_true, binop( Iop_Or32,
11545 binop( Iop_CmpEQ32,
11549 binop( Iop_CmpEQ32,
11554 Get_lmd( &lmd, binop( Iop_Shr32,
11558 binop( Iop_CmpEQ32,
11572 assign( dcm0, binop( Iop_Shl32,
11573 binop( Iop_And32,
11574 binop( Iop_And32,
11581 assign( dcm1, binop( Iop_Shl32,
11582 binop( Iop_And32,
11583 binop( Iop_And32,
11589 assign( dcm2, binop( Iop_Shl32,
11590 binop( Iop_And32,
11591 binop( Iop_Or32,
11592 binop( Iop_And32,
11599 assign( dcm3, binop( Iop_Shl32,
11600 binop( Iop_And32,
11601 binop( Iop_And32,
11602 binop( Iop_And32,
11607 binop( Iop_CmpEQ32,
11613 assign( dcm4, binop( Iop_Shl32,
11614 binop( Iop_And32,
11615 binop( Iop_And32,
11616 binop( Iop_And32,
11621 binop( Iop_CmpNE32,
11627 assign( dcm5, binop( Iop_And32,
11628 binop( Iop_Or32,
11630 binop( Iop_Or32,
11638 binop( Iop_Or32,
11640 binop( Iop_Or32,
11642 binop( Iop_Or32,
11644 binop( Iop_Or32,
11646 binop( Iop_Or32,
11653 binop( Iop_CmpEQ32,
11654 binop( Iop_Shr32,
11672 assign( field, binop( Iop_Or32,
11673 binop( Iop_Shl32,
11676 binop( Iop_Shl32,
11678 binop( Iop_CmpNE32,
11679 binop( Iop_And32,
11720 binop( Iop_Shr32,
11725 binop( Iop_32HLto64,
11726 binop( Iop_Or32,
11727 binop( Iop_Shl32, mkexpr( lmd ), mkU8( 28 ) ),
11742 binop( Iop_Or32,
11743 binop( Iop_Shr32,
11754 binop( Iop_Xor32,
11755 binop( Iop_Shr32,
11760 assign( sign, binop( Iop_Or32, mkexpr( tmp32 ), mkU32( 0xD ) ) );
11770 binop( Iop_32HLto64,
11771 binop( Iop_Or32,
11772 binop( Iop_Shr32,
11775 binop( Iop_Shl32,
11778 binop( Iop_Or32,
11780 binop( Iop_Shl32,
11807 binop( Iop_Shr32,
11808 binop( Iop_And32,
11820 binop( Iop_InsertExpD64,
11823 binop( Iop_32HLto64,
11827 binop( Iop_Shr32,
11828 binop( Iop_And32,
11834 binop( Iop_Shl32,
11839 binop( Iop_32HLto64,
11840 binop( Iop_Or32,
11841 binop( Iop_And32,
11859 binop( Iop_32HLto64,
11860 binop( Iop_Shr32,
11864 binop( Iop_Or32,
11865 binop( Iop_Shr32,
11869 binop( Iop_Shl32,
11879 binop( Iop_And32,
11896 binop( Iop_Shr32,
11908 binop( Iop_InsertExpD64,
11911 binop( Iop_32HLto64,
11912 binop( Iop_Or32,
11923 binop( Iop_32HLto64,
11924 binop( Iop_Or32,
11925 binop( Iop_And32,
11929 binop( Iop_And32,
11932 binop( Iop_Or32,
11933 binop( Iop_And32,
11936 binop( Iop_And32,
11995 binop( Iop_32HLto64,
11996 binop( Iop_Or32,
11997 binop( Iop_Shl32,
12000 binop( Iop_Shr32,
12003 binop( Iop_Or32,
12004 binop( Iop_Shl32,
12007 binop( Iop_Shr32,
12012 binop( Iop_32HLto64,
12013 binop( Iop_Or32,
12014 binop( Iop_Shl32,
12030 binop( Iop_Or32,
12031 binop( Iop_Shr32,
12043 binop( Iop_Xor32,
12044 binop( Iop_Shr32,
12049 assign( sign, binop( Iop_Or32, mkexpr( tmp32 ), mkU32( 0xD ) ) );
12056 binop( Iop_32HLto64,
12057 binop( Iop_Or32,
12058 binop( Iop_Shl32,
12065 binop( Iop_32HLto64,
12066 binop( Iop_Or32,
12067 binop( Iop_Shl32,
12070 binop( Iop_Shr32,
12073 binop( Iop_Or32,
12074 binop( Iop_Shl32,
12114 binop( Iop_32HLto64,
12116 binop( Iop_And32,
12117 binop( Iop_Shr32,
12123 binop( Iop_32HLto64,
12124 binop( Iop_Or32,
12125 binop( Iop_Shr32,
12129 binop( Iop_Shl32,
12133 binop( Iop_Or32,
12134 binop( Iop_Shl32,
12138 binop( Iop_Shr32,
12164 binop( Iop_Or32,
12168 binop( Iop_Or32,
12187 binop( Iop_And32,
12198 binop( Iop_32HLto64,
12200 binop( Iop_Shr32,
12209 binop( Iop_32HLto64,
12210 binop( Iop_Shr32,
12214 binop( Iop_Or32,
12215 binop( Iop_Shl32,
12219 binop( Iop_Shr32,
12244 binop( Iop_Or32,
12248 binop( Iop_Or32,
12255 binop( Iop_Shr32,
12272 binop( Iop_D64HLtoD128,
12274 binop( Iop_32HLto64,
12275 binop( Iop_Or32,
12278 binop( Iop_Or32,
12279 binop( Iop_Shl32,
12282 binop( Iop_Shr32,
12286 binop( Iop_32HLto64,
12287 binop( Iop_Or32,
12289 binop( Iop_Shl32,
12299 binop( Iop_InsertExpD128,
12312 binop( Iop_32HLto64,
12313 binop( Iop_Or32,
12314 binop( Iop_And32,
12317 binop( Iop_And32,
12320 binop( Iop_Or32,
12321 binop( Iop_And32,
12324 binop( Iop_And32,
12329 binop( Iop_32HLto64,
12330 binop( Iop_Or32,
12331 binop( Iop_And32,
12334 binop( Iop_And32,
12337 binop( Iop_Or32,
12338 binop( Iop_And32,
12341 binop( Iop_And32,
12383 binop( Iop_And32,
12409 binop( Iop_Shr32,
12418 binop( Iop_Sub8,
12452 binop( Iop_Shr32,
12465 binop( Iop_Sub8,
12492 binop( Iop_CmpEQ32,
12497 binop( Iop_CmpLT32U,
12502 binop( Iop_CmpLT32U,
12508 binop( Iop_CmpEQ32,
12513 binop( Iop_CmpNE32,
12518 binop( Iop_Or32,
12519 binop( Iop_And32,
12521 binop( Iop_Or32,
12522 binop( Iop_And32,
12525 binop( Iop_Or32,
12526 binop( Iop_And32,
12529 binop( Iop_And32,
12532 binop( Iop_And32,
12537 binop( Iop_Or32,
12538 binop( Iop_And32,
12541 binop( Iop_And32,
12739 binop( Iop_64HLtoV128, binop( Iop_F64toI64S,
12747 binop( Iop_64HLtoV128,
12749 binop( Iop_F64toI32S,
12758 binop( Iop_64HLtoV128,
12759 binop( Iop_F64toI64U,
12769 binop( Iop_64HLtoV128,
12771 binop( Iop_RoundF64toF32,
12773 binop( Iop_I64StoF64,
12783 binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
12784 binop( Iop_I64StoF64, get_IR_roundingmode(),
12793 binop( Iop_64HLtoV128,
12795 binop( Iop_RoundF64toF32,
12797 binop( Iop_I64UtoF64,
12807 binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
12808 binop( Iop_I64UtoF64, get_IR_roundingmode(),
12820 assign(hiResult_32, binop(Iop_F64toI32S, rmZero, mkexpr(xB)));
12821 assign(loResult_32, binop(Iop_F64toI32S, rmZero, mkexpr(xB2)));
12823 binop( Iop_64HLtoV128,
12876 binop( Iop_64HLtoV128,
12877 binop( Iop_32HLto64, b3_result, b2_result ),
12878 binop( Iop_32HLto64, b1_result, b0_result ) ) );
12885 binop( Iop_64HLtoV128,
12886 binop( Iop_32HLto64,
12889 binop( Iop_RoundF64toF32,
12899 binop( Iop_64HLtoV128,
12900 binop( Iop_32HLto64,
12911 binop( Iop_64HLtoV128,
12912 binop( Iop_32HLto64,
12914 binop( Iop_F64toI32U,
12922 binop( Iop_64HLtoV128,
12931 binop( Iop_64HLtoV128,
12941 binop( Iop_64HLtoV128,
12942 binop( Iop_32HLto64,
12945 binop( Iop_RoundF64toF32,
12949 binop( Iop_32HLto64,
12952 binop( Iop_RoundF64toF32,
12962 binop( Iop_64HLtoV128,
12963 binop( Iop_F64toI64U, mkU32( Irrm_ZERO ), mkexpr( xB ) ),
12964 binop( Iop_F64toI64U, mkU32( Irrm_ZERO ), mkexpr( xB2 ) ) ) );
12970 binop( Iop_64HLtoV128,
12971 binop( Iop_32HLto64,
12972 binop( Iop_F64toI32U,
12976 binop( Iop_32HLto64,
12977 binop( Iop_F64toI32U,
12985 binop( Iop_64HLtoV128,
12999 binop( Iop_64HLtoV128,
13000 binop( Iop_F64toI64S,
13004 binop( Iop_F64toI64S,
13013 binop( Iop_64HLtoV128,
13014 binop( Iop_F64toI64U,
13018 binop( Iop_F64toI64U,
13027 binop( Iop_64HLtoV128,
13028 binop( Iop_F64toI64S, mkU32( Irrm_ZERO ), mkexpr( xB ) ),
13029 binop( Iop_F64toI64S, mkU32( Irrm_ZERO ), mkexpr( xB2 ) ) ) );
13035 binop( Iop_64HLtoV128,
13037 binop( Iop_I64StoF64,
13041 binop( Iop_I64StoF64,
13049 binop( Iop_64HLtoV128,
13051 binop( Iop_I64UtoF64,
13055 binop( Iop_I64UtoF64,
13064 binop( Iop_64HLtoV128,
13065 binop( Iop_32HLto64,
13068 binop( Iop_RoundF64toF32,
13070 binop( Iop_I64StoF64,
13074 binop( Iop_32HLto64,
13077 binop( Iop_RoundF64toF32,
13079 binop( Iop_I64StoF64,
13088 binop( Iop_64HLtoV128,
13089 binop( Iop_32HLto64,
13092 binop( Iop_RoundF64toF32,
13094 binop( Iop_I64UtoF64,
13098 binop( Iop_32HLto64,
13101 binop( Iop_RoundF64toF32,
13103 binop( Iop_I64UtoF64,
13112 binop( Iop_64HLtoV128,
13114 binop( Iop_I64StoF64, get_IR_roundingmode(),
13117 binop( Iop_I64StoF64, get_IR_roundingmode(),
13123 binop( Iop_64HLtoV128,
13125 binop( Iop_I64UtoF64, get_IR_roundingmode(),
13128 binop( Iop_I64UtoF64, get_IR_roundingmode(),
13214 binop( Iop_64HLtoV128, mkexpr( hiResult ), mkexpr( loResult ) ) );
13225 binop( Iop_SqrtF64, rm, mkexpr( frB ) ) ) );
13228 binop( Iop_SqrtF64, rm, mkexpr( frB2 ) ) ) );
13230 binop( Iop_64HLtoV128, mkexpr( hiResult ), mkexpr( loResult ) ) );
13304 binop( Iop_64HLtoV128,
13330 binop( Iop_Or32,
13331 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13332 binop( Iop_Shl32, mkexpr(fg_flagHi), mkU8( 2 ) ) ),
13333 binop( Iop_Shl32, mkexpr(fe_flagHi), mkU8( 1 ) ) ) );
13335 binop( Iop_Or32,
13336 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13337 binop( Iop_Shl32, mkexpr(fg_flagLo), mkU8( 2 ) ) ),
13338 binop( Iop_Shl32, mkexpr(fe_flagLo), mkU8( 1 ) ) ) );
13340 binop( Iop_Or32, mkexpr( flagsHi ), mkexpr( flagsLo ) ),
13368 binop( Iop_Or32,
13369 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13370 binop( Iop_Shl32, mkexpr(fg_flagHi), mkU8( 2 ) ) ),
13371 binop( Iop_Shl32, mkexpr(fe_flagHi), mkU8( 1 ) ) ) );
13373 binop( Iop_Or32,
13374 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13375 binop( Iop_Shl32, mkexpr(fg_flagLo), mkU8( 2 ) ) ),
13376 binop( Iop_Shl32, mkexpr(fe_flagLo), mkU8( 1 ) ) ) );
13378 binop( Iop_Or32, mkexpr( flagsHi ), mkexpr( flagsLo ) ),
13471 binop( Iop_64HLtoV128,
13472 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
13473 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
13489 binop(Iop_SqrtF64, rm, mkexpr( b0 ) ) ) ) );
13493 binop(Iop_SqrtF64, rm, mkexpr( b1 ) ) ) ) );
13497 binop(Iop_SqrtF64, rm, mkexpr( b2) ) ) ) );
13501 binop(Iop_SqrtF64, rm, mkexpr( b3 ) ) ) ) );
13504 binop( Iop_64HLtoV128,
13505 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
13506 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
13591 binop( Iop_64HLtoV128,
13592 binop( Iop_32HLto64, mkexpr( negate ? getNegatedResult_32( res3 ) : res3 ),
13594 binop( Iop_32HLto64, mkexpr( negate ? getNegatedResult_32( res1 ) : res1 ),
13622 binop( Iop_Or32,
13623 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13624 binop( Iop_Shl32, mkexpr(fg_flag0), mkU8( 2 ) ) ),
13625 binop( Iop_Shl32, mkexpr(fe_flag0), mkU8( 1 ) ) ) );
13627 binop( Iop_Or32,
13628 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13629 binop( Iop_Shl32, mkexpr(fg_flag1), mkU8( 2 ) ) ),
13630 binop( Iop_Shl32, mkexpr(fe_flag1), mkU8( 1 ) ) ) );
13632 binop( Iop_Or32,
13633 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13634 binop( Iop_Shl32, mkexpr(fg_flag2), mkU8( 2 ) ) ),
13635 binop( Iop_Shl32, mkexpr(fe_flag2), mkU8( 1 ) ) ) );
13637 binop( Iop_Or32,
13638 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13639 binop( Iop_Shl32, mkexpr(fg_flag3), mkU8( 2 ) ) ),
13640 binop( Iop_Shl32, mkexpr(fe_flag3), mkU8( 1 ) ) ) );
13642 binop( Iop_Or32,
13644 binop( Iop_Or32,
13646 binop( Iop_Or32,
13677 binop( Iop_Or32,
13678 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13679 binop( Iop_Shl32, mkexpr(fg_flag0), mkU8( 2 ) ) ),
13680 binop( Iop_Shl32, mkexpr(fe_flag0), mkU8( 1 ) ) ) );
13682 binop( Iop_Or32,
13683 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13684 binop( Iop_Shl32, mkexpr(fg_flag1), mkU8( 2 ) ) ),
13685 binop( Iop_Shl32, mkexpr(fe_flag1), mkU8( 1 ) ) ) );
13687 binop( Iop_Or32,
13688 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13689 binop( Iop_Shl32, mkexpr(fg_flag2), mkU8( 2 ) ) ),
13690 binop( Iop_Shl32, mkexpr(fe_flag2), mkU8( 1 ) ) ) );
13692 binop( Iop_Or32,
13693 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13694 binop( Iop_Shl32, mkexpr(fg_flag3), mkU8( 2 ) ) ),
13695 binop( Iop_Shl32, mkexpr(fe_flag3), mkU8( 1 ) ) ) );
13697 binop( Iop_Or32,
13699 binop( Iop_Or32,
13701 binop( Iop_Or32,
13844 putVReg( vRT_addr, binop( Iop_64HLtoV128,
13862 putVReg( vRT_addr, binop( Iop_64HLtoV128,
13892 from a binop( Iop_CmpF64, fpA, fpB), whose result is returned
13915 binop( Iop_Shl32,
13918 binop( Iop_Or32,
13919 binop( Iop_And32,
13921 binop( Iop_Shr32,
13925 binop( Iop_And32,
13926 binop( Iop_Xor32,
13928 binop( Iop_Shr32,
13957 binop( Iop_CmpEQ32,
13958 binop( Iop_And32,
13964 binop( Iop_CmpEQ32,
13965 binop( Iop_And32,
13993 binop(Iop_Or64, mkexpr(frA_I64), mkU64(SNAN_MASK)),
13997 binop(Iop_Or64, mkexpr(frB_I64), mkU64(SNAN_MASK)),
14011 IRTemp src1cmpsrc2 = get_fp_cmp_CR_val( binop( Iop_CmpF64,
14017 return IRExpr_ITE( binop( Iop_CmpEQ32,
14055 IRExpr_ITE( binop( Iop_CmpEQ32,
14125 binop( Iop_F64toI64S, rxpi_rm,
14135 binop( Iop_CmpNE8,
14137 binop( Iop_CmpF64,
14143 binop( Iop_CmpNE32,
14144 binop( Iop_Shr32,
14151 binop( Iop_I64StoF64,
14154 binop( Iop_I64StoF64,
14168 binop( Iop_CmpEQ32,
14169 binop( Iop_And32, hi32, mkU32( 0x00080000 ) ),
14174 binop( Iop_Xor64,
14214 binop( Iop_SqrtF64,
14218 binop( Iop_SqrtF64,
14223 binop( Iop_64HLtoV128,
14263 assign( sqrt3, binop( Iop_SqrtF64, rm, mkexpr( b3 ) ) );
14264 assign( sqrt2, binop( Iop_SqrtF64, rm, mkexpr( b2 ) ) );
14265 assign( sqrt1, binop( Iop_SqrtF64, rm, mkexpr( b1 ) ) );
14266 assign( sqrt0, binop( Iop_SqrtF64, rm, mkexpr( b0 ) ) );
14298 binop( Iop_64HLtoV128,
14299 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
14300 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
14358 binop( Iop_64HLtoV128,
14359 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
14360 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
14378 putVSReg( XT, binop( Iop_64HLtoV128, get_max_min_fp(frA, frB, isMin), get_max_min_fp(frA2, frB2, isMin) ) );
14396 binop( Iop_64HLtoV128,
14397 binop( Iop_Or64,
14398 binop( Iop_And64,
14401 binop( Iop_And64,
14404 binop( Iop_Or64,
14405 binop( Iop_And64,
14408 binop( Iop_And64,
14428 binop( Iop_32HLto64,
14429 binop( Iop_Or32,
14430 binop( Iop_And32,
14433 binop( Iop_And32,
14437 binop( Iop_Or32,
14438 binop( Iop_And32,
14441 binop( Iop_And32,
14445 binop( Iop_32HLto64,
14446 binop( Iop_Or32,
14447 binop( Iop_And32,
14450 binop( Iop_And32,
14454 binop( Iop_Or32,
14455 binop( Iop_And32,
14458 binop( Iop_And32,
14461 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( resHi ), mkexpr( resLo ) ) );
14484 putVSReg( XT, binop( Iop_64HLtoV128,
14502 binop( Iop_64HLtoV128,
14503 binop( Iop_32HLto64, mkU32( 1 ), mkU32( 1 ) ),
14504 binop( Iop_32HLto64, mkU32( 1 ), mkU32( 1 ) ) ) );
14506 binop( Iop_Shr32x4,
14507 binop( Iop_Shl32x4,
14514 binop( Iop_64HLtoV128,
14515 binop( Iop_32HLto64,
14518 binop( Iop_32HLto64,
14522 binop( Iop_OrV128,
14538 binop( Iop_64HLtoV128,
14563 binop( Iop_64HLtoV128,
14628 binop( Iop_64HLtoV128,
14629 binop( Iop_32HLto64,
14632 binop( Iop_32HLto64,
14677 putVSReg( XT, binop( Iop_64HLtoV128,
14679 binop( Iop_RoundF64toF32, rm,
14687 putVSReg( XT, binop( Iop_64HLtoV128,
14689 binop( Iop_RoundF64toF32, rm,
14697 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14705 putVSReg( XT, binop( Iop_64HLtoV128,
14707 binop( Iop_RoundF64toF32, rm,
14715 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14731 binop( Iop_64HLtoV128,
14733 binop( Iop_RoundF64toF32, rm,
14748 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14766 binop( Iop_64HLtoV128,
14768 binop( Iop_RoundF64toF32, rm,
14783 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14812 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( getNegatedResult(maddResult) ),
14829 binop( Iop_RoundF64toF32, rm,
14835 putVSReg( XT, binop( Iop_64HLtoV128,
14853 binop( Iop_RoundF64toF32, rm,
14859 putVSReg( XT, binop( Iop_64HLtoV128,
14882 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( getNegatedResult(msubResult) ), mkU64( 0 ) ) );
14889 putVSReg( XT, binop( Iop_64HLtoV128,
14891 binop( Iop_RoundF64toF32, rm,
14900 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14908 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14918 binop( Iop_64HLtoV128,
14920 binop( Iop_RoundF64toF32, rm,
14921 binop( Iop_SqrtF64, rm,
14928 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14929 binop( Iop_SqrtF64, rm,
14959 binop( Iop_Or32,
14960 binop( Iop_Or32, mkU32( 8 ), // fl_flag
14961 binop( Iop_Shl32, mkexpr(fg_flag), mkU8( 2 ) ) ),
14962 binop( Iop_Shl32, mkexpr(fe_flag), mkU8( 1 ) ) ) );
15004 ccPPC32 = get_fp_cmp_CR_val( binop(Iop_CmpF64, mkexpr(frA), mkexpr(frB)));
15038 ccIR_hi = get_fp_cmp_CR_val( binop( Iop_CmpF64,
15041 ccIR_lo = get_fp_cmp_CR_val( binop( Iop_CmpF64,
15048 binop( Iop_CmpEQ32, mkexpr( ccIR_hi ), mkU32( cmp_type ) ) ) );
15051 binop( Iop_CmpEQ32, mkexpr( ccIR_lo ), mkU32( cmp_type ) ) ) );
15058 assign(hi_GE, mkOR1( binop( Iop_CmpEQ32, mkexpr( ccIR_hi ), mkU32( 2 ) ),
15059 binop( Iop_CmpEQ32, mkexpr( ccIR_hi ), mkU32( 4 ) ) ) );
15062 assign(lo_GE, mkOR1( binop( Iop_CmpEQ32, mkexpr( ccIR_lo ), mkU32( 2 ) ),
15063 binop( Iop_CmpEQ32, mkexpr( ccIR_lo ), mkU32( 4 ) ) ) );
15069 binop( Iop_CmpEQ32,
15073 binop( Iop_64HLtoV128, mkexpr( hiResult ), mkexpr( loResult ) ) );
15078 binop( Iop_CmpEQ32,
15086 binop( Iop_CmpEQ32,
15091 binop( Iop_Or32,
15092 binop( Iop_Shl32, mkexpr( all_elem_false ), mkU8( 1 ) ),
15093 binop( Iop_Shl32, mkexpr( all_elem_true ), mkU8( 3 ) ) ) );
15154 assign( vD, binop(Iop_CmpEQ32Fx4, mkexpr(vA), mkexpr(vB)) );
15168 assign( vD, binop(Iop_CmpGE32Fx4, mkexpr(vA), mkexpr(vB)) );
15182 assign( vD, binop(Iop_CmpGT32Fx4, mkexpr(vA), mkexpr(vB)) );
15234 assign( absVal, binop( Iop_64HLtoV128,
15235 binop( Iop_And64, mkexpr(hi64),
15239 assign(absVal, binop(Iop_ShrV128,
15240 binop(Iop_ShlV128, mkexpr(vB),
15254 assign( vecA_signed, binop( Iop_And64,
15258 assign( vecB_unsigned, binop( Iop_And64,
15262 assign( vec_result, binop( Iop_64HLtoV128,
15263 binop( Iop_Or64,
15275 assign( BHi_signed, binop( Iop_Or64,
15279 putVSReg(XT, binop( Iop_64HLtoV128,
15293 assign( BHi_unsigned, binop( Iop_And64, mkexpr(BHi_signed),
15298 binop( Iop_Shr32,
15300 binop( Iop_And64,
15306 binop( Iop_Or64,
15307 binop( Iop_32HLto64,
15308 binop( Iop_Shl32,
15314 assign( vec_result, binop( Iop_64HLtoV128, mkexpr(BHi_negated),
15329 putVSReg( XT, binop( Iop_64HLtoV128, get_max_min_fp(frA, frB, isMin), mkU64( 0 ) ) );
15347 binop( Iop_64HLtoV128,
15371 binop( Iop_SqrtF64,
15375 binop( Iop_64HLtoV128,
15377 binop( Iop_RoundF64toF32, rm,
15403 binop( Iop_SqrtF64,
15407 binop( Iop_64HLtoV128,
15426 putVSReg( XT, binop( Iop_64HLtoV128,
15428 binop( Iop_RoundF64toF32,
15467 putVSReg( XT, binop( Iop_XorV128, mkexpr( vA ), mkexpr( vB ) ) );
15471 putVSReg( XT, binop( Iop_OrV128, mkexpr( vA ), mkexpr( vB ) ) );
15475 putVSReg( XT, unop( Iop_NotV128, binop( Iop_OrV128, mkexpr( vA ),
15480 putVSReg( XT, binop( Iop_AndV128, mkexpr( vA ), mkexpr( vB ) ) );
15484 putVSReg( XT, binop( Iop_AndV128, mkexpr( vA ), unop( Iop_NotV128,
15489 putVSReg( XT, binop( Iop_OrV128,
15496 binop( Iop_AndV128, mkexpr( vA ),
15502 binop( Iop_XorV128,
15547 putVSReg( XT, binop( Iop_64HLtoV128,
15562 putVSReg( XT, binop( Iop_64HLtoV128,
15580 putVSReg( XT, binop( Iop_64HLtoV128, exp, mkU64( 0 ) ) );
15591 putVSReg( XT, binop( Iop_64HLtoV128, exp, exp ) );
15602 high_addr = binop( addOp, mkexpr( EA ), ty == Ity_I64 ? mkU64( ea_off )
15605 putVSReg( XT, binop( Iop_64HLtoV128, high, low ) );
15613 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( data ), mkexpr( data ) ) );
15630 assign( perm_LE, binop( Iop_64HLtoV128, mkU64(0x0c0d0e0f08090a0bULL),
15633 t0 = binop( Iop_Perm8x16, t0_BE, mkexpr(perm_LE) );
15715 store( binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15734 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15738 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15742 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15786 assign( hi, binop(Iop_ShlV128, mkexpr(vA), mkU8(SHW*32)) );
15787 assign( lo, binop(Iop_ShrV128, mkexpr(vB), mkU8(128-SHW*32)) );
15788 assign ( result, binop(Iop_OrV128, mkexpr(hi), mkexpr(lo)) );
15811 assign( vT, binop(Iop_64HLtoV128, mkexpr(hi), mkexpr(lo)) );
15837 assign( vT, binop(Iop_64HLtoV128,
15838 binop(Iop_32HLto64, mkexpr(ahi32), mkexpr(bhi32)),
15839 binop(Iop_32HLto64, mkexpr(alo32), mkexpr(blo32))) );
15852 putVSReg( XT, binop(Iop_OrV128,
15853 binop(Iop_AndV128, mkexpr(vA), unop(Iop_NotV128, mkexpr(vC))),
15854 binop(Iop_AndV128, mkexpr(vB), mkexpr(vC))) );
15865 binop( Iop_ShrV128, mkexpr( vB ), mkU8( sh_uim ) ) ) ) );
15909 binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
15916 binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
15958 binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
15965 binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
16070 assign( eb, binop(Iop_And8, mkU8(0xF),
16074 assign( idx, binop(Iop_Shl8, mkexpr(eb), mkU8(3)) );
16076 assign( idx, binop(Iop_Shl8,
16077 binop(Iop_Sub8, mkU8(15), mkexpr(eb)),
16082 binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
16088 assign( eb, binop(Iop_And8, mkU8(0xF),
16091 assign( idx, binop(Iop_Shl8, mkexpr(eb), mkU8(3)) );
16093 assign( idx, binop(Iop_Shl8,
16094 binop(Iop_Sub8, mkU8(14), mkexpr(eb)),
16099 binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
16105 assign( eb, binop(Iop_And8, mkU8(0xF),
16108 assign( idx, binop(Iop_Shl8, mkexpr(eb), mkU8(3)) );
16110 assign( idx, binop(Iop_Shl8,
16111 binop(Iop_Sub8, mkU8(12), mkexpr(eb)),
16116 binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx))) );
16178 putVReg( vD_addr, binop(Iop_ShrN32x4,
16179 binop(Iop_CmpGT32Ux4, mkexpr(vB),
16186 putVReg( vD_addr, binop(Iop_Add8x16, mkexpr(vA), mkexpr(vB)) );
16191 putVReg( vD_addr, binop(Iop_Add16x8, mkexpr(vA), mkexpr(vB)) );
16196 putVReg( vD_addr, binop(Iop_Add32x4, mkexpr(vA), mkexpr(vB)) );
16201 putVReg( vD_addr, binop(Iop_Add64x2, mkexpr(vA), mkexpr(vB)) );
16206 putVReg( vD_addr, binop(Iop_QAdd8Ux16, mkexpr(vA), mkexpr(vB)) );
16212 putVReg( vD_addr, binop(Iop_QAdd16Ux8, mkexpr(vA), mkexpr(vB)) );
16218 putVReg( vD_addr, binop(Iop_QAdd32Ux4, mkexpr(vA), mkexpr(vB)) );
16224 putVReg( vD_addr, binop(Iop_QAdd8Sx16, mkexpr(vA), mkexpr(vB)) );
16230 putVReg( vD_addr, binop(Iop_QAdd16Sx8, mkexpr(vA), mkexpr(vB)) );
16236 putVReg( vD_addr, binop(Iop_QAdd32Sx4, mkexpr(vA), mkexpr(vB)) );
16245 putVReg( vD_addr, binop(Iop_ShrN32x4,
16247 binop(Iop_CmpGT32Ux4, mkexpr(vB),
16254 putVReg( vD_addr, binop(Iop_Sub8x16, mkexpr(vA), mkexpr(vB)) );
16259 putVReg( vD_addr, binop(Iop_Sub16x8, mkexpr(vA), mkexpr(vB)) );
16264 putVReg( vD_addr, binop(Iop_Sub32x4, mkexpr(vA), mkexpr(vB)) );
16269 putVReg( vD_addr, binop(Iop_Sub64x2, mkexpr(vA), mkexpr(vB)) );
16274 putVReg( vD_addr, binop(Iop_QSub8Ux16, mkexpr(vA), mkexpr(vB)) );
16280 putVReg( vD_addr, binop(Iop_QSub16Ux8, mkexpr(vA), mkexpr(vB)) );
16286 putVReg( vD_addr, binop(Iop_QSub32Ux4, mkexpr(vA), mkexpr(vB)) );
16292 putVReg( vD_addr, binop(Iop_QSub8Sx16, mkexpr(vA), mkexpr(vB)) );
16298 putVReg( vD_addr, binop(Iop_QSub16Sx8, mkexpr(vA), mkexpr(vB)) );
16304 putVReg( vD_addr, binop(Iop_QSub32Sx4, mkexpr(vA), mkexpr(vB)) );
16312 putVReg( vD_addr, binop(Iop_Max8Ux16, mkexpr(vA), mkexpr(vB)) );
16317 putVReg( vD_addr, binop(Iop_Max16Ux8, mkexpr(vA), mkexpr(vB)) );
16322 putVReg( vD_addr, binop(Iop_Max32Ux4, mkexpr(vA), mkexpr(vB)) );
16327 putVReg( vD_addr, binop(Iop_Max64Ux2, mkexpr(vA), mkexpr(vB)) );
16332 putVReg( vD_addr, binop(Iop_Max8Sx16, mkexpr(vA), mkexpr(vB)) );
16337 putVReg( vD_addr, binop(Iop_Max16Sx8, mkexpr(vA), mkexpr(vB)) );
16342 putVReg( vD_addr, binop(Iop_Max32Sx4, mkexpr(vA), mkexpr(vB)) );
16347 putVReg( vD_addr, binop(Iop_Max64Sx2, mkexpr(vA), mkexpr(vB)) );
16353 putVReg( vD_addr, binop(Iop_Min8Ux16, mkexpr(vA), mkexpr(vB)) );
16358 putVReg( vD_addr, binop(Iop_Min16Ux8, mkexpr(vA), mkexpr(vB)) );
16363 putVReg( vD_addr, binop(Iop_Min32Ux4, mkexpr(vA), mkexpr(vB)) );
16368 putVReg( vD_addr, binop(Iop_Min64Ux2, mkexpr(vA), mkexpr(vB)) );
16373 putVReg( vD_addr, binop(Iop_Min8Sx16, mkexpr(vA), mkexpr(vB)) );
16378 putVReg( vD_addr, binop(Iop_Min16Sx8, mkexpr(vA), mkexpr(vB)) );
16383 putVReg( vD_addr, binop(Iop_Min32Sx4, mkexpr(vA), mkexpr(vB)) );
16388 putVReg( vD_addr, binop(Iop_Min64Sx2, mkexpr(vA), mkexpr(vB)) );
16395 putVReg( vD_addr, binop(Iop_Avg8Ux16, mkexpr(vA), mkexpr(vB)) );
16400 putVReg( vD_addr, binop(Iop_Avg16Ux8, mkexpr(vA), mkexpr(vB)) );
16405 putVReg( vD_addr, binop(Iop_Avg32Ux4, mkexpr(vA), mkexpr(vB)) );
16410 putVReg( vD_addr, binop(Iop_Avg8Sx16, mkexpr(vA), mkexpr(vB)) );
16415 putVReg( vD_addr, binop(Iop_Avg16Sx8, mkexpr(vA), mkexpr(vB)) );
16420 putVReg( vD_addr, binop(Iop_Avg32Sx4, mkexpr(vA), mkexpr(vB)) );
16428 binop(Iop_MullEven8Ux16, mkexpr(vA), mkexpr(vB)));
16434 binop(Iop_MullEven16Ux8, mkexpr(vA), mkexpr(vB)));
16439 putVReg( vD_addr, binop( Iop_MullEven32Ux4, mkexpr(vA), mkexpr(vB) ) );
16444 putVReg( vD_addr, binop( Iop_Mul32x4, mkexpr(vA), mkexpr(vB) ) );
16450 binop(Iop_MullEven8Sx16, mkexpr(vA), mkexpr(vB)));
16456 binop(Iop_MullEven16Sx8, mkexpr(vA), mkexpr(vB)));
16461 putVReg( vD_addr, binop( Iop_MullEven32Sx4, mkexpr(vA), mkexpr(vB) ) );
16513 assign( z3, binop(Iop_Add64, mkexpr(b3),
16514 binop(Iop_Add64,
16515 binop(Iop_Add64, mkexpr(a15), mkexpr(a14)),
16516 binop(Iop_Add64, mkexpr(a13), mkexpr(a12)))) );
16517 assign( z2, binop(Iop_Add64, mkexpr(b2),
16518 binop(Iop_Add64,
16519 binop(Iop_Add64, mkexpr(a11), mkexpr(a10)),
16520 binop(Iop_Add64, mkexpr(a9), mkexpr(a8)))) );
16521 assign( z1, binop(Iop_Add64, mkexpr(b1),
16522 binop(Iop_Add64,
16523 binop(Iop_Add64, mkexpr(a7), mkexpr(a6)),
16524 binop(Iop_Add64, mkexpr(a5), mkexpr(a4)))) );
16525 assign( z0, binop(Iop_Add64, mkexpr(b0),
16526 binop(Iop_Add64,
16527 binop(Iop_Add64, mkexpr(a3), mkexpr(a2)),
16528 binop(Iop_Add64, mkexpr(a1), mkexpr(a0)))) );
16553 assign( z3, binop(Iop_Add64, mkexpr(b3),
16554 binop(Iop_Add64,
16555 binop(Iop_Add64, mkexpr(a15), mkexpr(a14)),
16556 binop(Iop_Add64, mkexpr(a13), mkexpr(a12)))) );
16557 assign( z2, binop(Iop_Add64, mkexpr(b2),
16558 binop(Iop_Add64,
16559 binop(Iop_Add64, mkexpr(a11), mkexpr(a10)),
16560 binop(Iop_Add64, mkexpr(a9), mkexpr(a8)))) );
16561 assign( z1, binop(Iop_Add64, mkexpr(b1),
16562 binop(Iop_Add64,
16563 binop(Iop_Add64, mkexpr(a7), mkexpr(a6)),
16564 binop(Iop_Add64, mkexpr(a5), mkexpr(a4)))) );
16565 assign( z0, binop(Iop_Add64, mkexpr(b0),
16566 binop(Iop_Add64,
16567 binop(Iop_Add64, mkexpr(a3), mkexpr(a2)),
16568 binop(Iop_Add64, mkexpr(a1), mkexpr(a0)))) );
16587 assign( z3, binop(Iop_Add64, mkexpr(b3),
16588 binop(Iop_Add64, mkexpr(a7), mkexpr(a6))));
16589 assign( z2, binop(Iop_Add64, mkexpr(b2),
16590 binop(Iop_Add64, mkexpr(a5), mkexpr(a4))));
16591 assign( z1, binop(Iop_Add64, mkexpr(b1),
16592 binop(Iop_Add64, mkexpr(a3), mkexpr(a2))));
16593 assign( z0, binop(Iop_Add64, mkexpr(b0),
16594 binop(Iop_Add64, mkexpr(a1), mkexpr(a0))));
16609 assign( z2, binop(Iop_Add64, mkexpr(b2),
16610 binop(Iop_Add64, mkexpr(a3), mkexpr(a2))) );
16611 assign( z0, binop(Iop_Add64, mkexpr(b0),
16612 binop(Iop_Add64, mkexpr(a1), mkexpr(a0))) );
16627 assign( z0, binop(Iop_Add64, mkexpr(b0),
16628 binop(Iop_Add64,
16629 binop(Iop_Add64, mkexpr(a3), mkexpr(a2)),
16630 binop(Iop_Add64, mkexpr(a1), mkexpr(a0)))) );
16669 putVReg( vD_addr, binop(Iop_AndV128, mkexpr(vA), mkexpr(vB)) );
16674 putVReg( vD_addr, binop(Iop_AndV128, mkexpr(vA),
16680 putVReg( vD_addr, binop(Iop_OrV128, mkexpr(vA), mkexpr(vB)) );
16685 putVReg( vD_addr, binop(Iop_XorV128, mkexpr(vA), mkexpr(vB)) );
16691 unop(Iop_NotV128, binop(Iop_OrV128, mkexpr(vA), mkexpr(vB))) );
16696 putVReg( vD_addr, binop( Iop_OrV128,
16704 binop(Iop_AndV128, mkexpr( vA ),
16711 binop( Iop_XorV128, mkexpr( vA ),
16750 assign( vD, binop(Iop_CmpEQ8x16, mkexpr(vA), mkexpr(vB)) );
16756 assign( vD, binop(Iop_CmpEQ16x8, mkexpr(vA), mkexpr(vB)) );
16762 assign( vD, binop(Iop_CmpEQ32x4, mkexpr(vA), mkexpr(vB)) );
16768 assign( vD, binop(Iop_CmpEQ64x2, mkexpr(vA), mkexpr(vB)) );
16774 assign( vD, binop(Iop_CmpGT8Ux16, mkexpr(vA), mkexpr(vB)) );
16780 assign( vD, binop(Iop_CmpGT16Ux8, mkexpr(vA), mkexpr(vB)) );
16786 assign( vD, binop(Iop_CmpGT32Ux4, mkexpr(vA), mkexpr(vB)) );
16792 assign( vD, binop(Iop_CmpGT64Ux2, mkexpr(vA), mkexpr(vB)) );
16798 assign( vD, binop(Iop_CmpGT8Sx16, mkexpr(vA), mkexpr(vB)) );
16804 assign( vD, binop(Iop_CmpGT16Sx8, mkexpr(vA), mkexpr(vB)) );
16810 assign( vD, binop(Iop_CmpGT32Sx4, mkexpr(vA), mkexpr(vB)) );
16816 assign( vD, binop(Iop_CmpGT64Sx2, mkexpr(vA), mkexpr(vB)) );
16885 assign(cSigns, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vC)));
16886 assign(aLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vA)));
16887 assign(bLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vB)));
16888 assign(cLo, binop(Iop_InterleaveLO16x8, mkexpr(cSigns),mkexpr(vC)));
16889 assign(aHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vA)));
16890 assign(bHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vB)));
16891 assign(cHi, binop(Iop_InterleaveHI16x8, mkexpr(cSigns),mkexpr(vC)));
16893 assign( zLo, binop(Iop_Add32x4, mkexpr(cLo),
16894 binop(Iop_SarN32x4,
16895 binop(Iop_MullEven16Sx8,
16899 assign( zHi, binop(Iop_Add32x4, mkexpr(cHi),
16900 binop(Iop_SarN32x4,
16901 binop(Iop_MullEven16Sx8,
16906 binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
16914 assign(cSigns, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vC)) );
16915 assign(aLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vA)));
16916 assign(bLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vB)));
16917 assign(cLo, binop(Iop_InterleaveLO16x8, mkexpr(cSigns),mkexpr(vC)));
16918 assign(aHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vA)));
16919 assign(bHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vB)));
16920 assign(cHi, binop(Iop_InterleaveHI16x8, mkexpr(cSigns),mkexpr(vC)));
16923 assign( zKonst, binop(Iop_ShlN32x4, unop(Iop_Dup32x4, mkU32(0x1)),
16926 assign( zLo, binop(Iop_Add32x4, mkexpr(cLo),
16927 binop(Iop_SarN32x4,
16928 binop(Iop_Add32x4, mkexpr(zKonst),
16929 binop(Iop_MullEven16Sx8,
16933 assign( zHi, binop(Iop_Add32x4, mkexpr(cHi),
16934 binop(Iop_SarN32x4,
16935 binop(Iop_Add32x4, mkexpr(zKonst),
16936 binop(Iop_MullEven16Sx8,
16941 binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
16947 assign(aLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vA)));
16948 assign(bLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vB)));
16949 assign(cLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vC)));
16950 assign(aHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vA)));
16951 assign(bHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vB)));
16952 assign(cHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vC)));
16953 assign(zLo, binop(Iop_Add32x4,
16954 binop(Iop_MullEven16Ux8, mkexpr(aLo), mkexpr(bLo)),
16956 assign(zHi, binop(Iop_Add32x4,
16957 binop(Iop_MullEven16Ux8, mkexpr(aHi), mkexpr(bHi)),
16960 binop(Iop_NarrowBin32to16x8, mkexpr(zHi), mkexpr(zLo)) );
16974 assign( abOdd, binop(Iop_MullEven8Ux16, mkexpr(vA), mkexpr(vB)) );
16981 binop(Iop_Add32x4, mkexpr(vC),
16982 binop(Iop_Add32x4,
16983 binop(Iop_Add32x4, mkexpr(abEE), mkexpr(abEO)),
16984 binop(Iop_Add32x4, mkexpr(abOE), mkexpr(abOO)))) );
17004 assign( abEO, binop(Iop_MullEven16Sx8, mkexpr(aEvn), mkexpr(bEvn)) );
17006 assign( abOO, binop(Iop_MullEven16Sx8, mkexpr(aOdd), mkexpr(bOdd)) );
17010 binop(Iop_QAdd32Sx4, mkexpr(vC),
17011 binop(Iop_QAdd32Sx4,
17012 binop(Iop_QAdd32Sx4, mkexpr(abEE), mkexpr(abEO)),
17013 binop(Iop_QAdd32Sx4, mkexpr(abOE), mkexpr(abOO)))) );
17020 assign( abOdd, binop(Iop_MullEven16Ux8, mkexpr(vA), mkexpr(vB)) );
17022 binop(Iop_Add32x4, mkexpr(vC),
17023 binop(Iop_Add32x4, mkexpr(abEvn), mkexpr(abOdd))) );
17031 assign( abOdd, binop(Iop_MullEven16Ux8, mkexpr(vA), mkexpr(vB)) );
17039 assign( z3, binop(Iop_Add64, mkexpr(c3),
17040 binop(Iop_Add64, mkexpr(ab7), mkexpr(ab6))));
17041 assign( z2, binop(Iop_Add64, mkexpr(c2),
17042 binop(Iop_Add64, mkexpr(ab5), mkexpr(ab4))));
17043 assign( z1, binop(Iop_Add64, mkexpr(c1),
17044 binop(Iop_Add64, mkexpr(ab3), mkexpr(ab2))));
17045 assign( z0, binop(Iop_Add64, mkexpr(c0),
17046 binop(Iop_Add64, mkexpr(ab1), mkexpr(ab0))));
17058 assign( abOdd, binop(Iop_MullEven16Sx8, mkexpr(vA), mkexpr(vB)) );
17060 binop(Iop_Add32x4, mkexpr(vC),
17061 binop(Iop_Add32x4, mkexpr(abOdd), mkexpr(abEvn))) );
17069 assign( abOdd, binop(Iop_MullEven16Sx8, mkexpr(vA), mkexpr(vB)) );
17077 assign( z3, binop(Iop_Add64, mkexpr(c3),
17078 binop(Iop_Add64, mkexpr(ab7), mkexpr(ab6))));
17079 assign( z2, binop(Iop_Add64, mkexpr(c2),
17080 binop(Iop_Add64, mkexpr(ab5), mkexpr(ab4))));
17081 assign( z1, binop(Iop_Add64, mkexpr(c1),
17082 binop(Iop_Add64, mkexpr(ab3), mkexpr(ab2))));
17083 assign( z0, binop(Iop_Add64, mkexpr(c0),
17084 binop(Iop_Add64, mkexpr(ab1), mkexpr(ab0))));
17127 putVReg( vD_addr, binop(Iop_PolynomialMulAdd8x16,
17132 putVReg( vD_addr, binop(Iop_PolynomialMulAdd64x2,
17137 putVReg( vD_addr, binop(Iop_PolynomialMulAdd32x4,
17142 putVReg( vD_addr, binop(Iop_PolynomialMulAdd16x8,
17178 putVReg( vD_addr, binop(Iop_Rol8x16, mkexpr(vA), mkexpr(vB)) );
17183 putVReg( vD_addr, binop(Iop_Rol16x8, mkexpr(vA), mkexpr(vB)) );
17188 putVReg( vD_addr, binop(Iop_Rol32x4, mkexpr(vA), mkexpr(vB)) );
17193 putVReg( vD_addr, binop(Iop_Rol64x2, mkexpr(vA), mkexpr(vB)) );
17200 putVReg( vD_addr, binop(Iop_Shl8x16, mkexpr(vA), mkexpr(vB)) );
17205 putVReg( vD_addr, binop(Iop_Shl16x8, mkexpr(vA), mkexpr(vB)) );
17210 putVReg( vD_addr, binop(Iop_Shl32x4, mkexpr(vA), mkexpr(vB)) );
17215 putVReg( vD_addr, binop(Iop_Shl64x2, mkexpr(vA), mkexpr(vB)) );
17221 assign( sh, binop(Iop_And8, mkU8(0x7),
17225 binop(Iop_ShlV128, mkexpr(vA), mkexpr(sh)) );
17231 assign( sh, binop(Iop_And8, mkU8(0x78),
17235 binop(Iop_ShlV128, mkexpr(vA), mkexpr(sh)) );
17243 putVReg( vD_addr, binop(Iop_Shr8x16, mkexpr(vA), mkexpr(vB)) );
17248 putVReg( vD_addr, binop(Iop_Shr16x8, mkexpr(vA), mkexpr(vB)) );
17253 putVReg( vD_addr, binop(Iop_Shr32x4, mkexpr(vA), mkexpr(vB)) );
17259 assign( sh, binop(Iop_And8, mkU8(0x7),
17263 binop(Iop_ShrV128, mkexpr(vA), mkexpr(sh)) );
17268 putVReg( vD_addr, binop(Iop_Sar8x16, mkexpr(vA), mkexpr(vB)) );
17273 putVReg( vD_addr, binop(Iop_Sar16x8, mkexpr(vA), mkexpr(vB)) );
17278 putVReg( vD_addr, binop(Iop_Sar32x4, mkexpr(vA), mkexpr(vB)) );
17283 putVReg( vD_addr, binop(Iop_Sar64x2, mkexpr(vA), mkexpr(vB)) );
17289 assign( sh, binop(Iop_And8, mkU8(0x78),
17293 binop(Iop_ShrV128, mkexpr(vA), mkexpr(sh)) );
17299 putVReg( vD_addr, binop(Iop_Shr64x2, mkexpr(vA), mkexpr(vB)) );
17344 putVReg( vD_addr, binop(Iop_OrV128,
17345 binop(Iop_AndV128, mkexpr(vA), unop(Iop_NotV128, mkexpr(vC))),
17346 binop(Iop_AndV128, mkexpr(vB), mkexpr(vC))) );
17361 binop(Iop_AndV128, mkexpr(vC),
17364 binop(Iop_Perm8x16, mkexpr(vA), mkexpr(vC_andF)) );
17366 binop(Iop_Perm8x16, mkexpr(vB), mkexpr(vC_andF)) );
17368 assign( mask, binop(Iop_SarN8x16,
17369 binop(Iop_ShlN8x16, mkexpr(vC), mkU8(3)),
17372 putVReg( vD_addr, binop(Iop_OrV128,
17373 binop(Iop_AndV128, mkexpr(a_perm),
17375 binop(Iop_AndV128, mkexpr(b_perm),
17390 binop(Iop_OrV128,
17391 binop(Iop_ShlV128, mkexpr(vA), mkU8(SHB_uimm4*8)),
17392 binop(Iop_ShrV128, mkexpr(vB), mkU8((16-SHB_uimm4)*8))) );
17401 assign( vrc_b, binop( Iop_AndV128, mkexpr( vC ),
17403 assign( vrc_a, binop( Iop_ShrV128,
17404 binop( Iop_AndV128, mkexpr( vC ),
17407 assign( a_perm, binop( Iop_Perm8x16, mkexpr( vA ), mkexpr( vrc_a ) ) );
17408 assign( b_perm, binop( Iop_Perm8x16, mkexpr( vB ), mkexpr( vrc_b ) ) );
17409 putVReg( vD_addr, binop( Iop_XorV128,
17424 binop(Iop_InterleaveHI8x16, mkexpr(vA), mkexpr(vB)) );
17430 binop(Iop_InterleaveHI16x8, mkexpr(vA), mkexpr(vB)) );
17436 binop(Iop_InterleaveHI32x4, mkexpr(vA), mkexpr(vB)) );
17442 binop(Iop_InterleaveLO8x16, mkexpr(vA), mkexpr(vB)) );
17448 binop(Iop_InterleaveLO16x8, mkexpr(vA), mkexpr(vB)) );
17454 binop(Iop_InterleaveLO32x4, mkexpr(vA), mkexpr(vB)) );
17465 binop(Iop_ShrV128, mkexpr(vB), mkU8(sh_uimm))))) );
17473 binop(Iop_ShrV128, mkexpr(vB), mkU8(sh_uimm))))) );
17482 binop(Iop_ShrV128, mkexpr(vB), mkU8(sh_uimm)))) );
17510 binop(Iop_CatOddLanes32x4, mkexpr(vA), mkexpr(vB) ) );
17521 binop(Iop_CatEvenLanes32x4, mkexpr(vA), mkexpr(vB) ) );
17559 binop(Iop_NarrowBin16to8x16, mkexpr(vA), mkexpr(vB)) );
17565 binop(Iop_NarrowBin32to16x8, mkexpr(vA), mkexpr(vB)) );
17571 binop(Iop_QNarrowBin16Uto8Ux16, mkexpr(vA), mkexpr(vB)) );
17578 binop(Iop_QNarrowBin32Uto16Ux8, mkexpr(vA), mkexpr(vB)) );
17589 assign( vA_tmp, binop(Iop_AndV128, mkexpr(vA),
17591 binop(Iop_SarN16x8,
17593 assign( vB_tmp, binop(Iop_AndV128, mkexpr(vB),
17595 binop(Iop_SarN16x8,
17597 putVReg( vD_addr, binop(Iop_QNarrowBin16Uto8Ux16,
17609 assign( vA_tmp, binop(Iop_AndV128, mkexpr(vA),
17611 binop(Iop_SarN32x4,
17613 assign( vB_tmp, binop(Iop_AndV128, mkexpr(vB),
17615 binop(Iop_SarN32x4,
17617 putVReg( vD_addr, binop(Iop_QNarrowBin32Uto16Ux8,
17625 binop(Iop_QNarrowBin16Sto8Sx16, mkexpr(vA), mkexpr(vB)) );
17632 binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(vA), mkexpr(vB)) );
17648 assign( a1, binop(Iop_ShlN16x8,
17649 binop(Iop_ShrN32x4, mkexpr(vA), mkU8(19)),
17651 assign( a2, binop(Iop_ShlN16x8,
17652 binop(Iop_ShrN16x8, mkexpr(vA), mkU8(11)),
17654 assign( a3, binop(Iop_ShrN16x8,
17655 binop(Iop_ShlN16x8, mkexpr(vA), mkU8(8)),
17657 assign( a_tmp, binop(Iop_OrV128, mkexpr(a1),
17658 binop(Iop_OrV128, mkexpr(a2), mkexpr(a3))) );
17660 assign( b1, binop(Iop_ShlN16x8,
17661 binop(Iop_ShrN32x4, mkexpr(vB), mkU8(19)),
17663 assign( b2, binop(Iop_ShlN16x8,
17664 binop(Iop_ShrN16x8, mkexpr(vB), mkU8(11)),
17666 assign( b3, binop(Iop_ShrN16x8,
17667 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(8)),
17669 assign( b_tmp, binop(Iop_OrV128, mkexpr(b1),
17670 binop(Iop_OrV128, mkexpr(b2), mkexpr(b3))) );
17672 putVReg( vD_addr, binop(Iop_NarrowBin32to16x8,
17680 binop(Iop_NarrowBin64to32x4, mkexpr(vA), mkexpr(vB)) );
17686 binop(Iop_QNarrowBin64Uto32Ux4, mkexpr(vA), mkexpr(vB)) );
17699 assign( vA_tmp, binop(Iop_AndV128, mkexpr(vA),
17701 binop(Iop_SarN64x2,
17703 assign( vB_tmp, binop(Iop_AndV128, mkexpr(vB),
17705 binop(Iop_SarN64x2,
17707 putVReg( vD_addr, binop(Iop_QNarrowBin64Uto32Ux4,
17716 binop(Iop_QNarrowBin64Sto32Sx4, mkexpr(vA), mkexpr(vB)) );
17737 assign( signs, binop(Iop_CmpGT8Sx16, mkexpr(zeros), mkexpr(vB)) );
17739 binop(Iop_InterleaveHI8x16, mkexpr(signs), mkexpr(vB)) );
17744 assign( signs, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vB)) );
17746 binop(Iop_InterleaveHI16x8, mkexpr(signs), mkexpr(vB)) );
17751 assign( signs, binop(Iop_CmpGT8Sx16, mkexpr(zeros), mkexpr(vB)) );
17753 binop(Iop_InterleaveLO8x16, mkexpr(signs), mkexpr(vB)) );
17758 assign( signs, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vB)) );
17760 binop(Iop_InterleaveLO16x8, mkexpr(signs), mkexpr(vB)) );
17773 assign( z0, binop(Iop_ShlN16x8,
17774 binop(Iop_SarN16x8, mkexpr(vB), mkU8(15)),
17776 assign( z1, binop(Iop_ShrN16x8,
17777 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(1)),
17779 assign( z01, binop(Iop_InterleaveHI16x8, mkexpr(zeros),
17780 binop(Iop_OrV128, mkexpr(z0), mkexpr(z1))) );
17781 assign( z2, binop(Iop_ShrN16x8,
17782 binop(Iop_ShlN16x8,
17783 binop(Iop_ShrN16x8, mkexpr(vB), mkU8(5)),
17786 assign( z3, binop(Iop_ShrN16x8,
17787 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(11)),
17789 assign( z23, binop(Iop_InterleaveHI16x8, mkexpr(zeros),
17790 binop(Iop_OrV128, mkexpr(z2), mkexpr(z3))) );
17792 binop(Iop_OrV128,
17793 binop(Iop_ShlN32x4, mkexpr(z01), mkU8(16)),
17806 assign( z0, binop(Iop_ShlN16x8,
17807 binop(Iop_SarN16x8, mkexpr(vB), mkU8(15)),
17809 assign( z1, binop(Iop_ShrN16x8,
17810 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(1)),
17812 assign( z01, binop(Iop_InterleaveLO16x8, mkexpr(zeros),
17813 binop(Iop_OrV128, mkexpr(z0), mkexpr(z1))) );
17814 assign( z2, binop(Iop_ShrN16x8,
17815 binop(Iop_ShlN16x8,
17816 binop(Iop_ShrN16x8, mkexpr(vB), mkU8(5)),
17819 assign( z3, binop(Iop_ShrN16x8,
17820 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(11)),
17822 assign( z23, binop(Iop_InterleaveLO16x8, mkexpr(zeros),
17823 binop(Iop_OrV128, mkexpr(z2), mkexpr(z3))) );
17825 binop(Iop_OrV128,
17826 binop(Iop_ShlN32x4, mkexpr(z01), mkU8(16)),
17832 assign( signs, binop(Iop_CmpGT32Sx4, mkexpr(zeros), mkexpr(vB)) );
17834 binop(Iop_InterleaveHI32x4, mkexpr(signs), mkexpr(vB)) );
17839 assign( signs, binop(Iop_CmpGT32Sx4, mkexpr(zeros), mkexpr(vB)) );
17841 binop(Iop_InterleaveLO32x4, mkexpr(signs), mkexpr(vB)) );
17876 binop(Iop_CipherV128, mkexpr(vA), mkexpr(vB)) );
17882 binop(Iop_CipherLV128, mkexpr(vA), mkexpr(vB)) );
17888 binop(Iop_NCipherV128, mkexpr(vA), mkexpr(vB)) );
17894 binop(Iop_NCipherLV128, mkexpr(vA), mkexpr(vB)) );
17938 assign( dst, binop( Iop_SHA256, mkexpr( vA ), mkU8( s_field) ) );
17944 putVReg( vRT_addr, binop( Iop_SHA512, mkexpr( vA ), mkU8( s_field) ) );
18003 assign(res_32, binop( Iop_Add32,
18004 binop( Iop_Add32,
18005 binop ( Iop_Add32,
18012 assign(result, binop( Iop_OrV128,
18013 (i == 0) ? binop( Iop_64HLtoV128,
18016 binop( Iop_ShlV128,
18017 binop( Iop_64HLtoV128,
18019 binop( Iop_32HLto64,
18027 assign(carry, unop(Iop_1Uto32, binop( Iop_CmpLT32U,
18095 IRExpr * res = binop(Iop_AndV128, mkV128(0), mkV128(0));
18105 binop( Iop_AndV128,
18106 binop( Iop_64HLtoV128,
18111 binop( Iop_CmpEQ32,
18113 unop( Iop_V128to64, binop( Iop_ShrV128,
18122 binop( Iop_And8,
18129 binop( Iop_64HLtoV128,
18134 binop( Iop_AndV128,
18136 binop( Iop_ShrV128,
18137 binop( Iop_AndV128,
18138 binop (Iop_64HLtoV128,
18141 binop( Iop_ShlV128,
18145 res = binop( Iop_OrV128,
18147 binop( Iop_ShlV128,
18150 vB_expr = binop( Iop_ShrV128, vB_expr, mkU8( 8 ) );
18171 assign(cin, binop( Iop_And32,
18185 assign(cin, binop( Iop_And32,
18198 assign(cin, binop( Iop_And32,
18214 assign(cin, binop( Iop_And32,
18354 putVReg( vD_addr, binop(Iop_Max32Fx4, mkexpr(vA), mkexpr(vB)) );
18359 putVReg( vD_addr, binop(Iop_Min32Fx4, mkexpr(vA), mkexpr(vB)) );
18430 assign( vD, binop(Iop_CmpEQ32Fx4, mkexpr(vA), mkexpr(vB)) );
18436 assign( vD, binop(Iop_CmpGE32Fx4, mkexpr(vA), mkexpr(vB)) );
18442 assign( vD, binop(Iop_CmpGT32Fx4, mkexpr(vA), mkexpr(vB)) );
18463 binop(Iop_CmpLE32Fx4, mkexpr(vA), mkexpr(vB))) );
18465 binop(Iop_CmpGE32Fx4, mkexpr(vA),
18471 assign( vD, binop(Iop_ShlN32x4,
18472 binop(Iop_OrV128,
18473 binop(Iop_AndV128, mkexpr(gt),
18475 binop(Iop_AndV128, mkexpr(lt),
20107 IRExpr_ITE( binop(Iop_CmpNE32, getCRbit( bi ), mkU32(0)),
20588 // assign(n2, binop(Iop_Or32, mkexpr(n1), binop(Iop_Shr32, mkexpr(n1), mkU8(1))));
20589 // assign(n3, binop(Iop_Or32, mkexpr(n2), binop(Iop_Shr32, mkexpr(n2), mkU8(2))));
20590 // assign(n4, binop(Iop_Or32, mkexpr(n3), binop(Iop_Shr32, mkexpr(n3), mkU8(4))));
20591 // assign(n5, binop(Iop_Or32, mkexpr(n4), binop(Iop_Shr32, mkexpr(n4), mkU8(8))));
20592 // assign(n6, binop(Iop_Or32, mkexpr(n5), binop(Iop_Shr32, mkexpr(n5), mkU8(16))));
20610 // binop(Iop_Sub32,
20612 // binop(Iop_And32,
20613 // binop(Iop_Shr32, mkexpr(n7), mkU8(1)),
20616 // binop(Iop_Add32,
20617 // binop(Iop_And32, mkexpr(n8), mkU32(0x33333333)),
20618 // binop(Iop_And32,
20619 // binop(Iop_Shr32, mkexpr(n8), mkU8(2)),
20622 // binop(Iop_And32,
20623 // binop(Iop_Add32,
20625 // binop(Iop_Shr32, mkexpr(n9), mkU8(4))),
20628 // binop(Iop_Add32,
20630 // binop(Iop_Shr32, mkexpr(n10), mkU8(8))));
20632 // binop(Iop_Add32,
20634 // binop(Iop_Shr32, mkexpr(n11), mkU8(16))));
20636 // binop(Iop_And32, mkexpr(n12), mkU32(0x3F));