Home | History | Annotate | Download | only in priv

Lines Matching refs:binop

541 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
598 return unop(Iop_32to1, binop(Iop_Or32, unop(Iop_1Uto32, arg1),
606 return unop(Iop_32to1, binop(Iop_And32, unop(Iop_1Uto32, arg1),
623 assign( *vOdd, binop(Iop_MullEven8Ux16, mkexpr(ones8x16), vIn) );
624 assign( *vEvn, binop(Iop_MullEven8Ux16, mkexpr(ones8x16),
625 binop(Iop_ShrV128, vIn, mkU8(8))) );
641 assign( *vOdd, binop(Iop_MullEven8Sx16, mkexpr(ones8x16), vIn) );
642 assign( *vEvn, binop(Iop_MullEven8Sx16, mkexpr(ones8x16),
643 binop(Iop_ShrV128, vIn, mkU8(8))) );
659 assign( *vOdd, binop(Iop_MullEven16Ux8, mkexpr(ones16x8), vIn) );
660 assign( *vEvn, binop(Iop_MullEven16Ux8, mkexpr(ones16x8),
661 binop(Iop_ShrV128, vIn, mkU8(16))) );
677 assign( *vOdd, binop(Iop_MullEven16Sx8, mkexpr(ones16x8), vIn) );
678 assign( *vEvn, binop(Iop_MullEven16Sx8, mkexpr(ones16x8),
679 binop(Iop_ShrV128, vIn, mkU8(16))) );
804 binop( Iop_64HLtoV128,
805 binop(Iop_32HLto64, mkexpr(t3), mkexpr(t2)),
806 binop(Iop_32HLto64, mkexpr(t1), mkexpr(t0))
824 binop(Iop_CmpEQ32, mkexpr(hi32),
825 binop( Iop_Sar32, mkexpr(lo32), mkU8(31))),
829 binop(Iop_Add32, mkU32(0x7FFFFFFF),
830 binop(Iop_Shr32, mkexpr(hi32), mkU8(31))));
846 binop(Iop_CmpEQ32, mkexpr(hi32), mkU32(0)),
861 return binop(Iop_64HLtoV128,
862 binop(Iop_32HLto64,
865 binop(Iop_32HLto64,
878 return binop(Iop_64HLtoV128,
879 binop(Iop_32HLto64,
882 binop(Iop_32HLto64,
889 binop(Iop_MullEven8Ux16, \
890 binop(Iop_ShrV128, expr_vA, mkU8(8)), \
891 binop(Iop_ShrV128, expr_vB, mkU8(8)))
894 binop(Iop_MullEven8Sx16, \
895 binop(Iop_ShrV128, expr_vA, mkU8(8)), \
896 binop(Iop_ShrV128, expr_vB, mkU8(8)))
899 binop(Iop_MullEven16Ux8, \
900 binop(Iop_ShrV128, expr_vA, mkU8(16)), \
901 binop(Iop_ShrV128, expr_vB, mkU8(16)))
904 binop(Iop_MullEven32Ux4, \
905 binop(Iop_ShrV128, expr_vA, mkU8(32)), \
906 binop(Iop_ShrV128, expr_vB, mkU8(32)))
909 binop(Iop_MullEven16Sx8, \
910 binop(Iop_ShrV128, expr_vA, mkU8(16)), \
911 binop(Iop_ShrV128, expr_vB, mkU8(16)))
914 binop(Iop_MullEven32Sx4, \
915 binop(Iop_ShrV128, expr_vA, mkU8(32)), \
916 binop(Iop_ShrV128, expr_vB, mkU8(32)))
1176 return binop( Iop_D64HLtoD128, high, low );
1427 binop(Iop_Add32,
1428 binop(Iop_And32,
1431 binop(Iop_And32,
1432 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
1456 binop( Iop_Add64,
1457 binop( Iop_And64, mkexpr( old ), mkexpr( mask[i] ) ),
1458 binop( Iop_And64,
1459 binop( Iop_Shr64, mkexpr( old ), mkU8( shift[i] ) ),
1493 binop(Iop_Add32,
1494 binop(Iop_And32,
1497 binop(Iop_And32,
1498 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
1507 binop(Iop_Add32,
1508 binop(Iop_And32,
1511 binop(Iop_And32,
1512 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
1516 assign(retval, unop(Iop_32Uto64, binop(Iop_Add32, mkexpr(nyu1), mkexpr(nyu2))));
1530 mask = binop(Iop_And8, rot_amt, mkU8(63));
1531 rot = binop(Iop_Or64,
1532 binop(Iop_Shl64, src, mask),
1533 binop(Iop_Shr64, src, binop(Iop_Sub8, mkU8(64), mask)));
1536 mask = binop(Iop_And8, rot_amt, mkU8(31));
1537 rot = binop(Iop_Or32,
1538 binop(Iop_Shl32, src, mask),
1539 binop(Iop_Shr32, src, binop(Iop_Sub8, mkU8(32), mask)));
1545 return IRExpr_ITE( binop(Iop_CmpNE8, mask, mkU8(0)),
1556 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA), getIReg(rB));
1564 return binop(mkSzOp(ty, Iop_Add8), getIReg(rA),
1617 return binop( mkSzOp(ty, Iop_And8), addr, mkSzImm(ty, mask) );
1631 binop(Iop_CmpNE64,
1632 binop(Iop_And64, mkexpr(addr), mkU64(align-1)),
1642 binop(Iop_CmpNE32,
1643 binop(Iop_And32, mkexpr(addr), mkU32(align-1)),
1669 binop(Iop_Sub64, getIReg(1), mkU64(szB)),
1676 binop(Iop_Sub32, getIReg(1), mkU32(szB)),
1757 return binop(Iop_And32, unop(Iop_8Uto32, getCR0(n)), mkU32(1));
1760 return binop( Iop_And32,
1761 binop( Iop_Shr32,
1775 safe = binop(Iop_And32, bit, mkU32(1));
1788 binop( Iop_Or32,
1790 binop(Iop_And32, unop(Iop_8Uto32, getCR321(n)),
1793 binop(Iop_Shl32, safe, mkU8(toUChar(off)))
1818 return binop(Iop_And32, unop(Iop_8Uto32, getCR0(n)), mkU32(1));
1822 return binop( Iop_And32,
1838 binop(Iop_CmpORD64S, result, mkU64(0))) );
1841 binop(Iop_CmpORD32S, result, mkU32(0))) );
1866 assign( v1, binop(Iop_ShrV128, result, mkU8(32)) );
1867 assign( v2, binop(Iop_ShrV128, result, mkU8(64)) );
1868 assign( v3, binop(Iop_ShrV128, result, mkU8(96)) );
1871 binop(Iop_CmpEQ32, mkU32(0xFFFFFFFF),
1874 binop(Iop_OrV128,
1875 binop(Iop_OrV128, mkexpr(v0), mkexpr(v1)),
1876 binop(Iop_OrV128, mkexpr(v2), mkexpr(v3))))
1881 binop(Iop_CmpEQ32, mkU32(0xFFFFFFFF),
1883 binop(Iop_AndV128,
1884 binop(Iop_AndV128, mkexpr(v0), mkexpr(v1)),
1885 binop(Iop_AndV128, mkexpr(v2), mkexpr(v3)))
1887 putCR321( 6, binop(Iop_Or8,
1888 binop(Iop_Shl8, mkexpr(rOnes), mkU8(3)),
1889 binop(Iop_Shl8, mkexpr(rZeros), mkU8(1))) );
1891 putCR321( 6, binop(Iop_Shl8, mkexpr(rZeros), mkU8(1)) );
1906 so = binop(Iop_And8, e, mkU8(1));
1914 ov = binop(Iop_And8, e, mkU8(1));
1922 ca = binop(Iop_And8, e, mkU8(1));
1930 bc = binop(Iop_And8, e, mkU8(0x7F));
1941 return binop( Iop_And32, unop(Iop_8Uto32, getXER_SO()), mkU32(1) );
1951 return binop( Iop_And32, unop(Iop_8Uto32, getXER_OV()), mkU32(1) );
1957 return binop( Iop_And32, unop(Iop_8Uto32, ca ), mkU32(1) );
1968 return binop( Iop_And32, unop(Iop_8Uto32, bc), mkU32(0x7F) );
1988 binop(Iop_Xor32,(_aa),(_bb))
1991 binop(Iop_Xor32,binop(Iop_Xor32,(_cc),(_dd)),(_ee))
1994 binop(Iop_And32,binop(Iop_And32,(_ff),(_gg)),(_hh))
2010 = binop(Iop_Shr32, xer_ov, mkU8(31) );
2018 binop(Iop_CmpEQ32, argL, mkU32(INT32_MIN)),
2019 binop(Iop_CmpEQ32, argR, mkU32(-1))
2021 binop(Iop_CmpEQ32, argR, mkU32(0) )
2030 = unop(Iop_1Uto32, binop(Iop_CmpEQ32, argR, mkU32(0)));
2037 assign( t64, binop(Iop_MullS32, argL, argR) );
2039 = binop( Iop_CmpNE32,
2041 binop( Iop_Sar32,
2053 binop(Iop_CmpEQ32, argL, mkU32(INT32_MIN)) );
2066 = binop(Iop_Shr32, xer_ov, mkU8(31) );
2071 = binop( Iop_Or32,
2072 unop( Iop_1Uto32, binop( Iop_CmpEQ32, argR, mkU32( 0 ) ) ),
2073 unop( Iop_1Uto32, binop( Iop_CmpLT32U, argR, argL ) ) );
2082 xer_ov = binop( Iop_Or32,
2083 unop( Iop_1Uto32, binop( Iop_CmpEQ32, argR, mkU32( 0 ) ) ),
2084 unop( Iop_1Uto32, mkAND1( binop( Iop_CmpEQ32, res, mkU32( 0 ) ),
2085 mkAND1( binop( Iop_CmpNE32, argL, mkU32( 0 ) ),
2086 binop( Iop_CmpNE32, argR, mkU32( 0 ) ) ) ) ) );
2100 putXER_SO( binop(Iop_Or8, getXER_SO(), getXER_OV()) );
2121 binop(Iop_Xor64,(_aa),(_bb))
2124 binop(Iop_Xor64,binop(Iop_Xor64,(_cc),(_dd)),(_ee))
2127 binop(Iop_And64,binop(Iop_And64,(_ff),(_gg)),(_hh))
2143 = unop(Iop_64to1, binop(Iop_Shr64, xer_ov, mkU8(63)));
2151 binop(Iop_CmpEQ64, argL, mkU64(INT64_MIN)),
2152 binop(Iop_CmpEQ64, argR, mkU64(-1))
2154 binop(Iop_CmpEQ64, argR, mkU64(0) )
2161 = binop(Iop_CmpEQ64, argR, mkU64(0));
2168 = binop( Iop_CmpNE32,
2170 binop( Iop_Sar32,
2180 = binop(Iop_CmpEQ64, argL, mkU64(INT64_MIN));
2193 = unop(Iop_64to1, binop(Iop_Shr64, xer_ov, mkU8(63)));
2204 = mkOR1( binop( Iop_CmpEQ64, argR, mkU64( 0 ) ),
2205 mkAND1( binop( Iop_CmpEQ64, res, mkU64( 0 ) ),
2206 mkAND1( binop( Iop_CmpNE64, argL, mkU64( 0 ) ),
2207 binop( Iop_CmpNE64, argR, mkU64( 0 ) ) ) ) );
2212 xer_ov = mkOR1( binop( Iop_CmpEQ64, argR, mkU64( 0 ) ),
2213 binop( Iop_CmpLE64U, argR, argL ) );
2221 assign( t128, binop(Iop_MullS64, argL, argR) );
2223 = binop( Iop_CmpNE64,
2225 binop( Iop_Sar64,
2241 putXER_SO( binop(Iop_Or8, getXER_SO(), getXER_OV()) );
2284 = unop(Iop_1Uto32, binop(Iop_CmpLT32U, res, argL));
2291 binop(Iop_CmpLT32U, res, argL),
2293 binop(Iop_CmpEQ32, oldca, mkU32(1)),
2294 binop(Iop_CmpEQ32, res, argL)
2305 binop(Iop_CmpLT32U, res, argR),
2307 binop(Iop_CmpEQ32, oldca, mkU32(1)),
2308 binop(Iop_CmpEQ32, res, argR)
2319 = unop(Iop_1Uto32, binop(Iop_CmpLE32U, res, argR));
2328 = binop(
2330 binop(Iop_Sar32, argL, mkU8(31)),
2331 binop( Iop_And32,
2333 binop( Iop_Sub32,
2334 binop(Iop_Shl32, mkU32(1),
2342 binop(Iop_CmpLT32U, mkU32(31), argR),
2344 binop(Iop_Shr32, argL, mkU8(31)),
2346 unop(Iop_1Uto32, binop(Iop_CmpNE32, xer_ca, mkU32(0)))
2358 = binop(
2360 binop(Iop_Sar32, argL, mkU8(31)),
2361 binop( Iop_And32,
2363 binop( Iop_Sub32,
2364 binop(Iop_Shl32, mkU32(1),
2370 = unop(Iop_1Uto32, binop(Iop_CmpNE32, xer_ca, mkU32(0)));
2402 = unop(Iop_1Uto32, binop(Iop_CmpLT64U, res, argL));
2409 binop(Iop_CmpLT64U, res, argL),
2411 binop(Iop_CmpEQ64, oldca, mkU64(1)),
2412 binop(Iop_CmpEQ64, res, argL)
2423 binop(Iop_CmpLT64U, res, argR),
2425 binop(Iop_CmpEQ64, oldca, mkU64(1)),
2426 binop(Iop_CmpEQ64, res, argR)
2437 = unop(Iop_1Uto32, binop(Iop_CmpLE64U, res, argR));
2448 = binop(
2450 binop(Iop_Sar64, argL, mkU8(31)),
2451 binop( Iop_And64,
2453 binop( Iop_Sub64,
2454 binop(Iop_Shl64, mkU64(1),
2462 binop(Iop_CmpLT64U, mkU64(31), argR),
2464 unop(Iop_64to32, binop(Iop_Shr64, argL, mkU8(63))),
2466 unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)))
2479 = binop(
2481 binop(Iop_Sar64, argL, mkU8(31)),
2482 binop( Iop_And64,
2484 binop( Iop_Sub64,
2485 binop(Iop_Shl64, mkU64(1),
2491 = unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)));
2502 = binop(
2504 binop(Iop_Sar64, argL, mkU8(63)),
2505 binop( Iop_And64,
2507 binop( Iop_Sub64,
2508 binop(Iop_Shl64, mkU64(1),
2516 binop(Iop_CmpLT64U, mkU64(63), argR),
2518 unop(Iop_64to32, binop(Iop_Shr64, argL, mkU8(63))),
2520 unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)))
2534 = binop(
2536 binop(Iop_Sar64, argL, mkU8(63)),
2537 binop( Iop_And64,
2539 binop( Iop_Sub64,
2540 binop(Iop_Shl64, mkU64(1),
2546 = unop(Iop_1Uto32, binop(Iop_CmpNE64, xer_ca, mkU64(0)));
2593 return binop(Iop_And32, IRExpr_Get( OFFB_VSCR,Ity_I32 ),
2599 binop(Iop_Shl32, \
2601 binop(Iop_Or8, \
2602 binop(Iop_And8, getCR321(_n), mkU8(7<<1)), \
2603 binop(Iop_And8, getCR0(_n), mkU8(1)) \
2608 return binop(Iop_Or32,
2609 binop(Iop_Or32,
2610 binop(Iop_Or32, FIELD(0), FIELD(1)),
2611 binop(Iop_Or32, FIELD(2), FIELD(3))
2613 binop(Iop_Or32,
2614 binop(Iop_Or32, FIELD(4), FIELD(5)),
2615 binop(Iop_Or32, FIELD(6), FIELD(7))
2622 return binop(Iop_Or32,
2623 binop(Iop_Or32,
2624 binop( Iop_Shl32, getXER_SO32(), mkU8(31)),
2625 binop( Iop_Shl32, getXER_OV32(), mkU8(30))),
2626 binop(Iop_Or32,
2627 binop( Iop_Shl32, getXER_CA32(), mkU8(29)),
2676 return binop(Iop_And32, mkexpr(val), mkU32(mask));
2695 val = binop( Iop_And32,
2728 return binop(Iop_Or32,
2729 binop(Iop_Or32,
2730 binop(Iop_Shl32, getXER_SO32(), mkU8(3)),
2731 binop(Iop_Shl32, getXER_OV32(), mkU8(2))),
2732 binop( Iop_Shl32, getXER_CA32(), mkU8(1)));
2739 return binop(Iop_Shr32,
2774 binop(Iop_And32, src,
2779 putXER_SO( unop(Iop_32to8, binop(Iop_Shr32, src, mkU8(31))) );
2780 putXER_OV( unop(Iop_32to8, binop(Iop_Shr32, src, mkU8(30))) );
2781 putXER_CA( unop(Iop_32to8, binop(Iop_Shr32, src, mkU8(29))) );
2833 binop( Iop_And32,
2839 binop( Iop_And32,
2858 binop(Iop_CmpNE32, mkU32(ew), mkU32(EmNote_NONE)),
2893 putCR0 (fld, binop(Iop_And8, mkU8(1 ), unop(Iop_32to8, src)));
2894 putCR321(fld, binop(Iop_And8, mkU8(7<<1), unop(Iop_32to8, src)));
2905 binop( Iop_Shl64, src64, mkU8( toUChar( shft ) ) ),
2920 #define FP_FRAC_PART(x) binop( Iop_And64, \
2927 return binop( Iop_And32,
2928 binop( Iop_Shr32, mkexpr( src ), mkU8( 23 ) ),
2940 exp = binop( Iop_And32, binop( Iop_Shr32, unop( Iop_64HIto32,
2945 binop( Iop_And64,
2946 binop( Iop_Shr64, mkexpr( src ), mkU8( 52 ) ),
2956 assign( frac_part, binop( Iop_And32, mkexpr(src), mkU32(0x007fffff)) );
2957 Inf_exp = binop( Iop_CmpEQ32, fp_exp_part( src, True /*single precision*/ ), mkU32( 0xff ) );
2958 return mkAND1( Inf_exp, binop( Iop_CmpEQ32, mkexpr( frac_part ), mkU32( 0 ) ) );
2973 Inf_exp = binop( Iop_CmpEQ32, fp_exp_part( src, False /*not single precision*/ ), mkU32( 0x7ff ) );
2976 return mkAND1( Inf_exp, binop( Iop_CmpEQ32, binop( Iop_Or32, low32, hi32 ),
2983 assign( sign_less_part, binop( Iop_And32, mkexpr( src ), mkU32( SIGN_MASK32 ) ) );
2984 return binop( Iop_CmpEQ32, mkexpr( sign_less_part ), mkU32( 0 ) );
2997 assign( sign_less_part, binop( Iop_And64, mkexpr( src ), mkU64( SIGN_MASK ) ) );
3000 return binop( Iop_CmpEQ32, binop( Iop_Or32, low32, hi32 ),
3016 NaN_exp = binop( Iop_CmpEQ32, fp_exp_part( src, False /*not single precision*/ ),
3019 return mkAND1( NaN_exp, binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
3029 #define FP_FRAC_PART32(x) binop( Iop_And32, \
3034 IRExpr * exp_part = binop( Iop_And32,
3035 binop( Iop_Shr32, mkexpr( src ), mkU8( 23 ) ),
3037 IRExpr * NaN_exp = binop( Iop_CmpEQ32, exp_part, mkU32( 0xff ) );
3039 return mkAND1( NaN_exp, binop( Iop_CmpNE32, frac_part, mkU32( 0 ) ) );
3060 binop( Iop_CmpEQ32,
3061 binop( Iop_And32, mkexpr( tmp ),
3065 assign ( mask, binop( Iop_And32,
3068 return binop( Iop_Or32, mkexpr( mask ), mkexpr( tmp) );
3086 assign( signbit_32, binop( Iop_Shr32,
3088 binop( Iop_And64, mkexpr( intermediateResult ),
3096 binop( Iop_CmpEQ32,
3097 binop( Iop_Xor32,
3103 binop( Iop_Or64,
3104 binop( Iop_And64,
3107 binop( Iop_32HLto64,
3108 binop( Iop_Shl32,
3130 assign( signbit_32, binop( Iop_Shr32,
3131 binop( Iop_And32, mkexpr( intermediateResult ),
3139 binop( Iop_CmpEQ32,
3140 binop( Iop_Xor32,
3146 binop( Iop_Or32,
3147 binop( Iop_And32,
3150 binop( Iop_Shl32,
3235 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3244 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3261 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3273 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3282 binop(Iop_MullS64, mkexpr(rA),
3286 binop(Iop_MullS32, mkexpr(rA),
3293 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3310 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3322 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3340 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3341 binop( mkSzOp(ty, Iop_Add8),
3367 assign( rD, binop( mkSzOp(ty, Iop_Add8), mkexpr(rA),
3368 binop( mkSzOp(ty, Iop_Add8),
3392 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3418 assign( rD, mk64lo32Uto64( binop(Iop_DivS64, dividend,
3425 assign( rD, binop(Iop_DivS32, mkexpr(rA), mkexpr(rB)) );
3449 assign( rD, mk64lo32Uto64( binop(Iop_DivU64, dividend,
3456 assign( rD, binop(Iop_DivU32, mkexpr(rA), mkexpr(rB)) );
3475 assign( rD, binop(Iop_Sar64,
3476 binop(Iop_Mul64,
3482 binop(Iop_MullS32,
3497 assign( rD, binop(Iop_Sar64,
3498 binop(Iop_Mul64,
3504 binop(Iop_MullU32,
3518 assign( rD, binop(Iop_MullS32, a, b) );
3526 binop(Iop_MullU32,
3544 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3558 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3571 assign( rD, binop( mkSzOp(ty, Iop_Sub8),
3589 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3591 binop( mkSzOp(ty, Iop_Add8),
3617 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3619 binop( mkSzOp(ty, Iop_Add8),
3643 assign( rD, binop( mkSzOp(ty, Iop_Add8),
3666 binop(Iop_MullS64,
3679 binop(Iop_MullU64,
3687 assign( rD, binop(Iop_Mul64, mkexpr(rA), mkexpr(rB)) );
3698 assign( rD, binop(Iop_DivS64, mkexpr(rA), mkexpr(rB)) );
3713 assign( rD, binop(Iop_DivU64, mkexpr(rA), mkexpr(rB)) );
3738 assign( res, binop( Iop_DivU32E, dividend, divisor ) );
3739 assign( rD, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( res ) ) );
3743 assign( res, binop( Iop_DivU32E, dividend, divisor ) );
3773 assign( res, binop( Iop_DivS32E, dividend, divisor ) );
3774 assign( rD, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( res ) ) );
3778 assign( res, binop( Iop_DivS32E, dividend, divisor ) );
3802 assign( rD, binop(Iop_DivS64E, mkexpr(rA), mkexpr(rB)) );
3814 assign( rD, binop(Iop_DivU64E, mkexpr(rA), mkexpr(rB)) );
3878 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64S, a, b)));
3882 putCR321(crfD, unop(Iop_32to8, binop(Iop_CmpORD32S, a, b)));
3891 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64U, a, b)));
3895 putCR321(crfD, unop(Iop_32to8, binop(Iop_CmpORD32U, a, b)));
3919 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64S, a, b)));
3923 putCR321(crfD, unop(Iop_32to8,binop(Iop_CmpORD32S, a, b)));
3938 putCR321(crfD, unop(Iop_64to8, binop(Iop_CmpORD64U, a, b)));
3942 putCR321(crfD, unop(Iop_32to8, binop(Iop_CmpORD32U, a, b)));
3989 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
3997 assign( rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4005 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4011 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4017 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4023 assign( rA, binop( mkSzOp(ty, Iop_Xor8), mkexpr(rS),
4035 assign(rA, binop( mkSzOp(ty, Iop_And8),
4042 assign(rA, binop( mkSzOp(ty, Iop_And8), mkexpr(rS),
4060 irx = binop(Iop_CmpNE32, lo32, mkU32(0));
4075 binop( mkSzOp(ty, Iop_Xor8),
4111 binop( mkSzOp(ty, Iop_And8),
4119 binop( mkSzOp(ty, Iop_Or8),
4130 assign( rA, binop( mkSzOp(ty, Iop_Or8),
4138 assign( rA, binop( mkSzOp(ty, Iop_Or8), mkexpr(rS),
4145 assign( rA, binop( mkSzOp(ty, Iop_Xor8),
4168 irx = binop(Iop_CmpNE64, mkexpr(rS), mkU64(0));
4180 binop( Iop_CmpEQ8x16,
4181 binop( Iop_64HLtoV128, mkU64(0), mkexpr(rS) ),
4182 binop( Iop_64HLtoV128, mkU64(0), mkexpr(rB) )
4186 binop( Iop_CmpEQ8x16,
4236 putIReg( rA_addr, binop(Iop_32HLto64, mkexpr(resultHi), mkexpr(resultLo)));
4255 putIReg( rA_addr, binop(Iop_32HLto64, mkexpr(resultHi),
4275 IRExpr * res = binop(Iop_And64, mkU64(0), mkU64(0));
4285 binop( Iop_And64, mkU64( BPERMD_IDX_MASK ), rS_expr ) );
4287 binop( Iop_CmpLT64U, mkexpr( idx_tmp ), mkU64( 64 ) ) );
4289 binop( Iop_And8,
4301 binop( Iop_And64,
4303 binop( Iop_Shr64,
4304 binop( Iop_And64,
4306 binop( Iop_Shl64,
4310 res = binop( Iop_Or64,
4312 binop( Iop_Shl64,
4315 rS_expr = binop( Iop_Shr64, rS_expr, mkU8( 8 ) );
4387 assign( rS1, binop(shr_op, mkexpr(rS), mkU8(8)) );
4388 assign( iTot2, binop(Iop_Add32,
4391 assign( rS2, binop(shr_op, mkexpr(rS1), mkU8(8)) );
4392 assign( iTot3, binop(Iop_Add32,
4395 assign( rS3, binop(shr_op, mkexpr(rS2), mkU8(8)) );
4396 assign( iTot4, binop(Iop_Add32,
4400 assign( rS4, binop(shr_op, mkexpr(rS3), mkU8(8)) );
4401 assign( iTot5, binop(Iop_Add32,
4404 assign( rS5, binop(shr_op, mkexpr(rS4), mkU8(8)) );
4405 assign( iTot6, binop(Iop_Add32,
4408 assign( rS6, binop(shr_op, mkexpr(rS5), mkU8(8)) );
4409 assign( iTot7, binop(Iop_Add32,
4412 assign( rS7, binop(shr_op, mkexpr(rS6), mkU8(8)) );
4413 assign( iTot8, binop(Iop_Add32,
4417 binop(Iop_And32, mkexpr(iTot8), mkU32(1))) );
4424 assign( rS1, binop(shr_op, mkexpr(rS), mkU8(8)) );
4425 assign( iTot2, binop(Iop_Add32,
4428 assign( rS2, binop(shr_op, mkexpr(rS1), mkU8(8)) );
4429 assign( iTot3, binop(Iop_Add32,
4432 assign( rS3, binop(shr_op, mkexpr(rS2), mkU8(8)) );
4433 assign( iTot4, binop(Iop_Add32,
4439 assign( rS4, binop(shr_op, mkexpr(rS3), mkU8(8)) );
4441 assign( rS5, binop(shr_op, mkexpr(rS4), mkU8(8)) );
4442 assign( iTot6, binop(Iop_Add32,
4445 assign( rS6, binop(shr_op, mkexpr(rS5), mkU8(8)) );
4446 assign( iTot7, binop(Iop_Add32,
4449 assign( rS7, binop(shr_op, mkexpr(rS6), mkU8(8)));
4450 assign( iTot8, binop(Iop_Add32,
4453 assign( iHi, binop(Iop_And32, mkU32(1), mkexpr(iTot8)) ),
4454 assign( rA, binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo)) );
4456 assign( rA, binop(Iop_Or32, mkU32(0), mkexpr(iLo)) );
4510 assign( rot, binop(Iop_Or64, r,
4511 binop(Iop_Shl64, r, mkU8(32))) );
4513 binop(Iop_Or64,
4514 binop(Iop_And64, mkexpr(rot), mkU64(mask64)),
4515 binop(Iop_And64, getIReg(rA_addr), mkU64(~mask64))) );
4522 binop(Iop_Or32,
4523 binop(Iop_And32, mkU32(mask32), r),
4524 binop(Iop_And32, getIReg(rA_addr), mkU32(~mask32))) );
4546 assign( rot, binop(Iop_Or64, mkexpr(rTmp),
4547 binop(Iop_Shl64, mkexpr(rTmp), mkU8(32))) );
4548 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4556 assign( rA, binop(Iop_Shl32, mkexpr(rS), mkU8(sh_imm)) );
4563 assign( rA, binop(Iop_Shr32, mkexpr(rS), mkU8(MaskBeg)) );
4571 assign( rA, binop(Iop_And32,
4593 assign(rot, binop(Iop_Or64, r, binop(Iop_Shl64, r, mkU8(32))));
4594 assign( rA, binop(Iop_And64, mkexpr(rot), mkU64(mask64)) );
4599 assign( rA, binop(Iop_And32,
4625 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4631 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4641 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4658 assign( rA, binop(Iop_Shr64, mkexpr(rS), mkU8(msk_imm)) );
4664 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4675 assign( rA, binop(Iop_Shl64, mkexpr(rS), mkU8(sh_imm)) );
4681 assign( rA, binop(Iop_And64, r, mkU64(mask64)) );
4692 assign( rA, binop(Iop_Or64,
4693 binop(Iop_And64, mkU64(mask64), r),
4694 binop(Iop_And64, mkU64(~mask64),
4985 assign(low, loadBE(ty, binop( Iop_Add64,
4989 assign(high, loadBE(ty, binop( Iop_Add32,
4992 assign(low, loadBE(ty, binop( Iop_Add32,
5258 irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
5268 irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
5302 stmt( IRStmt_Exit( binop(Iop_CmpLT32U, e_nbytes, mkU32(i+1)),
5317 binop(
5320 binop(
5325 binop(mkSzOp(ty,Iop_Add8), e_EA, mkSzImm(ty,i)))
5353 stmt( IRStmt_Exit( binop(Iop_CmpLT32U, e_nbytes, mkU32(i+1)),
5364 binop(mkSzOp(ty,Iop_Add8), e_EA, mkSzImm(ty,i)),
5366 binop(Iop_Shr32,
5410 binop(Iop_Add32, mkexpr(t_EA), mkU32(4))) );
5444 storeBE( binop(Iop_Add32, mkexpr(t_EA), mkU32(4)),
5491 binop( mkSzOp(ty, Iop_CmpEQ8),
5496 binop( mkSzOp(ty, Iop_CmpNE8),
5531 assign( res, binop(Iop_Xor32, mkexpr(cr_bi),
5621 binop(mkSzOp(ty, Iop_Sub8),
5633 binop(Iop_And32, mkexpr(cond_ok), mkexpr(ctr_ok)) );
5645 binop(Iop_CmpNE32, mkexpr(do_branch), mkU32(0)),
5680 binop(Iop_CmpEQ32, mkexpr(cond_ok), mkU32(0)),
5704 binop(mkSzOp(ty, Iop_Sub8),
5712 binop(Iop_And32, mkexpr(cond_ok), mkexpr(ctr_ok)) );
5720 binop(Iop_CmpEQ32, mkexpr(do_branch), mkU32(0)),
5795 assign( crbD, binop(Iop_And32, mkexpr(crbA), mkexpr(crbB)) );
5799 assign( crbD, binop(Iop_And32,
5806 binop(Iop_Xor32, mkexpr(crbA), mkexpr(crbB))) );
5811 binop(Iop_And32, mkexpr(crbA), mkexpr(crbB))) );
5816 binop(Iop_Or32, mkexpr(crbA), mkexpr(crbB))) );
5820 assign( crbD, binop(Iop_Or32, mkexpr(crbA), mkexpr(crbB)) );
5824 assign( crbD, binop(Iop_Or32,
5830 assign( crbD, binop(Iop_Xor32, mkexpr(crbA), mkexpr(crbB)) );
5887 binop(opCMPEQ, const0, const0),
5911 tmp = binop(opAND, binop(opCMPORDS, argLe, argRe), const8);
5912 cond = binop(opOR, tmp, cond);
5915 tmp = binop(opAND, binop(opCMPORDS, argLe, argRe), const4);
5916 cond = binop(opOR, tmp, cond);
5919 tmp = binop(opAND, binop(opCMPORDS, argLe, argRe), const2);
5920 cond = binop(opOR, tmp, cond);
5923 tmp = binop(opAND, binop(opCMPORDU, argLe, argRe), const8);
5924 cond = binop(opOR, tmp, cond);
5927 tmp = binop(opAND, binop(opCMPORDU, argLe, argRe), const4);
5928 cond = binop(opOR, tmp, cond);
5931 binop(opCMPNE, cond, const0),
6178 putCR321(0, binop(Iop_Shl8, unop(Iop_1Uto8, mkexpr(resSC)), mkU8(1)));
6271 putCR321(0, binop(Iop_Shl8, unop(Iop_1Uto8, mkexpr(resSC)), mkU8(1)));
6300 binop(Iop_Add64, mkexpr(EA), mkU64(8) ),
6304 binop( Iop_Add32, mkexpr(EA), mkU32(4) ),
6307 binop( Iop_Add32, mkexpr(EA), mkU32(12) ),
6338 storeBE(binop( Iop_Add64, mkexpr(EA), mkU64(8) ), mkexpr(rS_lo) );
6340 stmt( IRStmt_LLSC( Iend_BE, resSC, binop( Iop_Add32,
6344 storeBE(binop(Iop_Add32, mkexpr(EA), mkU32(12) ), mkexpr(rS_lo) );
6349 putCR321(0, binop( Iop_Shl8,
6412 binop( Iop_And32,
6413 binop( Iop_Shl32,
6416 binop(Iop_And32,
6419 binop( Iop_Sar32,
6420 binop(Iop_Shl32, mkexpr(rB_lo32), mkU8(26)),
6435 assign( sh_amt, binop(Iop_And32, mkU32(0x3F),
6438 binop(Iop_CmpLT32U, mkU32(31), mkexpr(sh_amt)) );
6439 e_tmp = binop( Iop_Sar32,
6460 assign( rA, binop(Iop_Sar64,
6461 binop(Iop_Shl64, getIReg(rS_addr),
6465 assign( rA, binop(Iop_Sar32, mkexpr(rS_lo32),
6486 binop(
6488 binop( Iop_Shr32,
6491 binop(Iop_And32, mkexpr(rB_lo32),
6494 binop( Iop_Sar32,
6495 binop(Iop_Shl32, mkexpr(rB_lo32),
6513 binop(
6515 binop( Iop_Shl64,
6518 binop(Iop_And64, mkexpr(rB), mkU64(63)))),
6520 binop( Iop_Sar64,
6521 binop(Iop_Shl64, mkexpr(rB), mkU8(57)),
6533 assign( sh_amt, binop(Iop_And64, mkU64(0x7F), mkexpr(rB)) );
6535 binop(Iop_CmpLT64U, mkU64(63), mkexpr(sh_amt)) );
6537 binop( Iop_Sar64,
6555 assign( rA, binop(Iop_Sar64, getIReg(rS_addr), mkU8(sh_imm)) );
6574 binop(
6576 binop( Iop_Shr64,
6579 binop(Iop_And64, mkexpr(rB), mkU64(63)))),
6581 binop( Iop_Sar64,
6582 binop(Iop_Shl64, mkexpr(rB), mkU8(57)),
6613 binop(Iop_Or32,
6614 binop(Iop_Shl32, mkexpr(t), mkU8(24)),
6615 binop(Iop_Or32,
6616 binop(Iop_And32, binop(Iop_Shl32, mkexpr(t), mkU8(8)),
6618 binop(Iop_Or32,
6619 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t), mkU8(8)),
6621 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t), mkU8(24)),
6632 binop(Iop_Or32,
6633 binop(Iop_And32, binop(Iop_Shl32, mkexpr(t), mkU8(8)),
6635 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t), mkU8(8)),
6689 nextAddr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
6693 putIReg( rD_addr, binop( Iop_32HLto64, mkexpr( w4 ), mkexpr( w2 ) ) );
6719 binop( Iop_32HLto64, gen_byterev32( hi ), gen_byterev32( lo ) ) );
6960 binop(Iop_Shr32,
7045 binop( Iop_And64, high64, mkU64( 0xFFFFFFFF ) ) :
7047 binop( Iop_And64, high64, mkU64( 0xFFFFFFFF ) ) ) );
7067 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( rA ), mkU64( 0 ) ) );
7069 putVSReg( XT, binop( Iop_64HLtoV128,
7070 binop( Iop_32HLto64,
7095 putVSReg( XT, binop( Iop_64HLtoV128,
7119 putVSReg( XT, binop( Iop_64HLtoV128,
7120 binop( Iop_32HLto64, mkU32( 0 ), mkexpr ( rA ) ),
7231 assign( addr, binop( Iop_And64,
7236 irx_addr = binop( Iop_Add64, mkexpr(addr), mkU64(i*8) );
7241 assign( addr, binop( Iop_And32,
7246 irx_addr = binop( Iop_Add32, mkexpr(addr), mkU32(i*4) );
7263 assign( addr, binop( mkSzOp(ty, Iop_And8),
7309 return binop( Iop_Xor32,
7311 binop( Iop_And32,
7312 binop(Iop_Shl32, mkexpr(rm_PPC32), mkU8(1)),
7337 return binop( Iop_Xor32,
7339 binop( Iop_And32,
7340 binop( Iop_Shl32, mkexpr( rm_PPC32 ), mkU8( 1 ) ),
7369 binop( Iop_Or32,
7374 binop( Iop_CmpEQ32,
7375 binop( Iop_And32,
7382 binop( Iop_Or8,
7384 binop( Iop_CmpNE32,
7385 binop( Iop_And32,
7392 binop( Iop_CmpNE32,
7393 binop( Iop_And32,
7400 binop( Iop_And8,
7411 return binop( Iop_32HLto64,
7412 binop( Iop_Or32,
7413 binop( Iop_And32,
7418 binop( Iop_And32,
7538 assign( iHi, binop(Iop_Sub32,
7540 binop(Iop_Shr32, mkexpr(iLo), mkU8(31))) );
7542 binop(Iop_32HLto64, mkexpr(iHi), mkexpr(iLo))) );
7551 assign( dw, binop( Iop_32HLto64, mkU32( 0 ), mkexpr( iLo ) ) );
7775 assign( frD, binop( Iop_SqrtF64, rm, mkexpr(frB) ));
7849 assign( frD, binop(Iop_SqrtF64, rm, mkexpr(frB)) );
7862 assign( cc, binop(Iop_CmpF64, mkexpr(frA),
7864 assign( cc_b0, binop(Iop_And32, mkexpr(cc), mkU32(1)) );
7870 binop(Iop_CmpEQ32, mkexpr(cc_b0), mkU32(0)),
8129 assign(e_b, binop( Iop_Sub32, mkexpr(frB_exp_shR), mkU32( bias ) ));
8142 eb_LTE = binop( Iop_CmpLE32S, mkexpr( e_b ), mkU32( test_value ) );
8144 frBNeg = binop( Iop_CmpEQ32,
8145 binop( Iop_Shr32,
8166 assign( frac_part, binop( Iop_And32, mkexpr(frB_Int), mkU32(0x007fffff)) );
8168 = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ), mkU32( 0 ) ),
8169 binop( Iop_CmpNE32, mkexpr( frac_part ), mkU32( 0 ) ) );
8177 fraction_is_nonzero = binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
8180 = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ), mkU32( 0 ) ),
8255 assign(e_a, binop( Iop_Sub32, mkexpr(frA_exp_shR), mkU32( bias ) ));
8256 assign(e_b, binop( Iop_Sub32, mkexpr(frB_exp_shR), mkU32( bias ) ));
8295 eb_LTE = binop(Iop_CmpLE32S, mkexpr(e_b), mkU32(test_value));
8304 eb_GTE = binop(Iop_CmpLT32S, mkU32(test_value), mkexpr(e_b));
8312 binop( Iop_CmpLT32S, mkU32( bias ),
8313 binop( Iop_Sub32, mkexpr( e_a ),
8323 binop( Iop_CmpLE32S,
8324 binop( Iop_Sub32,
8336 ea_LTE = mkAND1( mkexpr( fraNotZero_tmp ), binop( Iop_CmpLE32S,
8360 fraction_is_nonzero = binop( Iop_CmpNE32, FP_FRAC_PART32(frB_int),
8369 fraction_is_nonzero = binop( Iop_CmpNE32, binop( Iop_Or32, low32, hi32 ),
8372 frbDenorm = mkAND1( binop( Iop_CmpEQ32, mkexpr( frB_exp_shR ),
8416 return binop( Iop_Or32,
8417 binop( Iop_Or32,
8418 binop( Iop_Shl32, fl_flag, mkU8( 3 ) ),
8419 binop( Iop_Shl32, mkexpr(fg_flag), mkU8( 2 ) ) ),
8420 binop( Iop_Shl32, mkexpr(fe_flag), mkU8( 1 ) ) );
8471 binop( Iop_Or32,
8472 binop( Iop_Or32, mkU32( 8 ), // fl_flag
8473 binop( Iop_Shl32, mkexpr(fg_flag), mkU8( 2 ) ) ),
8474 binop( Iop_Shl32, mkexpr(fe_flag), mkU8( 1 ) ) ) );
8515 assign( ccIR, binop(Iop_CmpF64, mkexpr(frA), mkexpr(frB)) );
8531 binop(
8536 binop(
8538 binop(
8542 binop(Iop_Shr32, mkexpr(ccIR), mkU8(5))
8546 binop(
8548 binop(
8551 binop(Iop_Shr32, mkexpr(ccIR), mkU8(6))
8630 assign( frD, binop( Iop_RoundF64toF32, rm, binop( Iop_I64StoF64, rm,
8637 assign( frD, unop( Iop_F32toF64, binop( Iop_I64UtoF32, rm, mkexpr( r_tmp64 ) ) ) );
8646 assign( frD, binop( Iop_RoundF64toF32, rm, mkexpr(frB) ));
8652 binop(Iop_F64toI32S, rm, mkexpr(frB)) );
8662 binop(Iop_F64toI32S, mkU32(Irrm_ZERO), mkexpr(frB) ));
8673 binop( Iop_F64toI32U,
8686 binop(Iop_F64toI64S, rm, mkexpr(frB)) );
8695 binop(Iop_F64toI64S, mkU32(Irrm_ZERO), mkexpr(frB)) );
8706 binop(Iop_F64toI64U, opc2 == 0x3AE ? rm : mkU32(Irrm_ZERO), mkexpr(frB)) );
8716 binop(Iop_I64StoF64, rm, mkexpr(r_tmp64)) );
8722 assign( frD, binop( Iop_I64UtoF64, rm, mkexpr( r_tmp64 ) ) );
8730 binop(Iop_F64toI64S, mkU32(Irrm_NEAREST), mkexpr(frB)) );
8735 binop(Iop_F64toI64S, mkU32(Irrm_ZERO), mkexpr(frB)) );
8740 binop(Iop_F64toI64S, mkU32(Irrm_PosINF), mkexpr(frB)) );
8745 binop(Iop_F64toI64S, mkU32(Irrm_NegINF), mkexpr(frB)) );
8755 binop(Iop_CmpNE8,
8757 binop(Iop_CmpF64,
8763 binop(Iop_CmpNE32,
8764 binop(Iop_Shr32,
8772 binop(Iop_I64StoF64, mkU32(0),
8774 binop(Iop_I64StoF64, mkU32(0), mkexpr(r_tmp64) )
8862 assign( EA_lo, binop(Iop_Add64, mkexpr(EA_hi), mkU64(8)) );
8864 assign( EA_lo, binop(Iop_Add32, mkexpr(EA_hi), mkU32(8)) );
8904 binop( Iop_32HLto64,
8917 binop( Iop_32HLto64,
8973 assign(signA, binop(Iop_And32,
8981 assign(hiD, binop(Iop_Or32,
8982 binop(Iop_And32,
8990 binop(Iop_32HLto64,
9082 assign( tmp, binop(Iop_And32,
9083 binop(Iop_Shr32,fpscr_all,mkU8(4 * (7-crfS))),
9142 binop( Iop_32HLto64, fpscr_upper, fpscr_lower ) ) );
9238 #define AND(x, y) binop( Iop_And32, x, y )
9240 #define OR(x, y) binop( Iop_Or32, x, y )
9245 #define SHL(value, by) binop( Iop_Shl32, value, mkU8( by ) )
9246 #define SHR(value, by) binop( Iop_Shr32, value, mkU8( by ) )
9280 unop( Iop_1Sto32, binop( Iop_CmpLE32U, lmd32, mkU32( 7 ) ) ) );
9282 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmd32, mkU32( 8 ) ) ) );
9284 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmd32, mkU32( 9 ) ) ) );
9286 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmexp, mkU32( 0 ) ) ) );
9288 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmexp, mkU32( 1 ) ) ) );
9290 unop( Iop_1Sto32, binop( Iop_CmpEQ32, lmexp, mkU32( 2 ) ) ) );
9296 binop( Iop_Or32, binop( Iop_Shl32, lmexp, mkU8( 3 ) ), lmd32 ) );
9298 binop( Iop_Or32,
9299 binop( Iop_Or32,
9300 binop( Iop_And32,
9303 binop( Iop_And32,
9306 binop( Iop_And32, mkexpr( lmexp_10_mask ), mkU32( 28 ) ) ) );
9308 binop( Iop_Or32,
9309 binop( Iop_Or32,
9310 binop( Iop_And32,
9313 binop( Iop_And32,
9316 binop( Iop_And32, mkexpr( lmexp_10_mask ), mkU32( 29 ) ) ) );
9319 return binop( Iop_Or32,
9320 binop( Iop_Or32,
9321 binop( Iop_And32,
9324 binop( Iop_And32,
9327 binop( Iop_And32, mkexpr( lmd_9_mask ), mkexpr( lmd_9_val ) ) );
9360 unop( Iop_1Sto32, binop( Iop_CmpLE32U,
9364 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9368 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9372 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9376 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9380 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9384 unop( Iop_1Sto32, binop( Iop_CmpEQ32,
9391 assign( lmd_07_val, binop( Iop_And32, gfield_0_4, mkU32( 0x7 ) ) );
9423 binop( Iop_CmpLE32U,
9424 binop( Iop_And32,
9429 binop( Iop_CmpLE32U,
9430 binop( Iop_And32,
9431 binop( Iop_Shr32,
9437 binop( Iop_CmpLE32U,
9438 binop( Iop_And32,
9439 binop( Iop_Shr32,
9445 binop( Iop_CmpLE32U,
9446 binop( Iop_And32,
9447 binop( Iop_Shr32,
9453 binop( Iop_CmpLE32U,
9454 binop( Iop_And32,
9455 binop( Iop_Shr32,
9461 binop( Iop_CmpLE32U,
9462 binop( Iop_And32,
9463 binop( Iop_Shr32,
9469 binop( Iop_CmpLE32U,
9470 binop( Iop_And32,
9471 binop( Iop_Shr32,
9477 binop( Iop_CmpLE32U,
9478 binop( Iop_And32,
9479 binop( Iop_Shr32,
9485 binop( Iop_CmpLE32U,
9486 binop( Iop_And32,
9491 binop( Iop_CmpLE32U,
9492 binop( Iop_And32,
9493 binop( Iop_Shr32,
9499 binop( Iop_CmpLE32U,
9500 binop( Iop_And32,
9501 binop( Iop_Shr32,
9507 binop( Iop_CmpLE32U,
9508 binop( Iop_And32,
9509 binop( Iop_Shr32,
9515 binop( Iop_CmpLE32U,
9516 binop( Iop_And32,
9517 binop( Iop_Shr32,
9523 binop( Iop_CmpLE32U,
9524 binop( Iop_And32,
9525 binop( Iop_Shr32,
9531 binop( Iop_CmpLE32U,
9532 binop( Iop_And32,
9533 binop( Iop_Shr32,
9539 binop( Iop_CmpLE32U,
9540 binop( Iop_And32,
9541 binop( Iop_Shr32,
9559 return binop( Iop_Or32,
9560 unop( Iop_1Sto32, binop( Iop_CmpEQ32, sign, mkU32( 0xB ) ) ),
9561 unop( Iop_1Sto32, binop( Iop_CmpEQ32, sign, mkU32( 0xD ) ) )
9567 return binop( Iop_Or32,
9568 binop( Iop_Or32,
9570 binop( Iop_CmpEQ32, sign, mkU32( 0xA ) ) ),
9572 binop( Iop_CmpEQ32, sign, mkU32( 0xC ) ) ) ),
9573 binop( Iop_Or32,
9575 binop( Iop_CmpEQ32, sign, mkU32( 0xE ) ) ),
9577 binop( Iop_CmpEQ32, sign, mkU32( 0xF ) ) ) ) );
9583 return binop( Iop_Or32,
9584 binop( Iop_And32, neg_sign_mask, mkU32( 0x80000000 ) ),
9585 binop( Iop_And32, pos_sign_mask, mkU32( 0x00000000 ) ) );
9593 return binop( Iop_Or32,
9596 binop( Iop_CmpEQ32,
9597 binop( Iop_Or32, pos_sign_mask, neg_sign_mask ),
9618 binop( Iop_32HLto64,
9619 binop( Iop_And32,
9635 binop( Iop_32HLto64,
9636 binop( Iop_Or32,
9637 binop( Iop_Shl32,
9638 binop( Iop_And32,
9642 binop( Iop_Shr32,
9645 binop( Iop_Or32,
9646 binop( Iop_Shl32,
9649 binop( Iop_Shr32,
9662 binop( Iop_32HLto64,
9664 binop( Iop_And32,
9665 binop( Iop_Shr32,
9695 binop( Iop_Add8,
9697 binop(Iop_And8,
9699 binop(Iop_CmpEQ32,
9700 binop(Iop_And32,
9705 binop( Iop_Xor8, /* complement flag */
9711 binop(Iop_Or8,
9713 binop(Iop_CmpNE32,
9714 binop(Iop_And32,
9736 assign( num_lmd, unop( Iop_1Uto8, binop( Iop_CmpEQ32, lmd, mkU32( 0 ) ) ) );
9775 assign( num_lmd, unop( Iop_1Uto8, binop( Iop_CmpEQ32, lmd, mkU32( 0 ) ) ) );
9791 binop( Iop_Or32,
9792 binop( Iop_Shl32, mid_60_u, mkU8( 2 ) ),
9793 binop( Iop_Shr32, mid_60_l, mkU8( 30 ) ) ) );
9807 binop( Iop_Or32,
9808 binop( Iop_Shl32, low_60_u, mkU8( 2 ) ),
9809 binop( Iop_Shr32, low_60_l, mkU8( 30 ) ) ) );
9827 binop( Iop_And32,
9828 binop( Iop_Shr32, unop( Iop_64HIto32, val ), mkU8( 26 ) ),
9832 return binop( Iop_Or32, /* QNaN check */
9834 binop( Iop_CmpEQ32,
9838 binop( Iop_CmpEQ32,
9991 assign( frS, binop( Iop_ShlD64, mkexpr( frA ), mkU8( shift_val ) ) );
9996 assign( frS, binop( Iop_ShrD64, mkexpr( frA ), mkU8( shift_val ) ) );
10028 assign( frS, binop( Iop_ShlD128, mkexpr( frA ), mkU8( shift_val ) ) );
10033 assign( frS, binop( Iop_ShrD128, mkexpr( frA ), mkU8( shift_val ) ) );
10075 assign( frS, binop( Iop_D64toD32, round, mkexpr( frB ) ) );
10087 assign( tmp, binop( Iop_D64toI64S, round, mkexpr( frB ) ) );
10098 assign( frS, binop( Iop_I64StoD64,
10141 assign( tmp, binop( Iop_D128toI64S, round, mkexpr( frB128 ) ) );
10150 assign( frS64, binop( Iop_D128toD64, round, mkexpr( frB128 ) ) );
10205 assign( frS, binop( Iop_RoundD64toInt,
10246 assign( frS, binop( Iop_RoundD128toInt,
10296 binop( Iop_Sub32, mkU32( 397 ),
10297 binop( Iop_And32, mkU32( 0xF ),
10304 binop( Iop_Add32, mkU32( 398 ), mkU32( TE_value ) )
10308 assign( frA, binop( Iop_InsertExpD64, mkexpr( TE_I64 ),
10390 binop( Iop_Sub32, mkU32( 6175 ),
10391 binop( Iop_And32, mkU32( 0xF ),
10398 binop( Iop_Add32,
10404 binop( Iop_InsertExpD128, mkexpr( TE_I64 ),
10479 assign( frS, binop( Iop_InsertExpD64,
10531 assign( frS, binop( Iop_InsertExpD128,
10574 assign( ccIR, binop( Iop_CmpD64, mkexpr( frA ), mkexpr( frB ) ) );
10583 assign( ccIR, binop( Iop_CmpD128, mkexpr( frA ), mkexpr( frB ) ) );
10601 binop( Iop_Shl32,
10604 binop( Iop_Or32,
10605 binop( Iop_And32,
10607 binop( Iop_Shr32,
10611 binop( Iop_And32,
10612 binop( Iop_Xor32,
10614 binop( Iop_Shr32,
10689 assign( gfield_A, binop( Iop_And32,
10695 assign( gfield_B, binop( Iop_And32,
10702 assign( A_NaN_true, binop(Iop_Or32,
10704 binop( Iop_CmpEQ32,
10708 binop( Iop_CmpEQ32,
10712 assign( B_NaN_true, binop(Iop_Or32,
10714 binop( Iop_CmpEQ32,
10718 binop( Iop_CmpEQ32,
10726 binop( Iop_CmpEQ32,
10732 binop( Iop_CmpEQ32,
10738 binop( Iop_Or32,
10739 binop( Iop_Or32,
10742 binop( Iop_Or32,
10752 binop( Iop_Or32,
10754 binop( Iop_CmpEQ32,
10757 binop( Iop_Or32,
10758 binop( Iop_And32,
10761 binop( Iop_And32,
10765 assign( cc0, binop( Iop_And32,
10767 binop( Iop_Shl32,
10769 binop( Iop_CmpLT32U,
10774 assign( cc1, binop( Iop_And32,
10776 binop( Iop_Shl32,
10778 binop( Iop_CmpLT32U,
10783 assign( cc2, binop( Iop_Shl32,
10784 binop( Iop_And32,
10789 assign( cc3, binop( Iop_And32,
10791 binop( Iop_And32,
10793 binop( Iop_Or32,
10794 binop( Iop_Or32,
10797 binop( Iop_Or32,
10804 binop( Iop_Or32,
10806 binop( Iop_Or32,
10808 binop( Iop_Or32,
10882 binop( Iop_And64,
10905 binop( Iop_InsertExpD64,
10910 binop( Iop_CmpD64,
10916 binop( Iop_CmpD64,
10948 binop( Iop_InsertExpD128,
10953 binop( Iop_CmpD128,
10954 binop( Iop_D64HLtoD128,
10956 binop( Iop_And64,
10963 binop( Iop_CmpD128,
10964 binop( Iop_D64HLtoD128,
10982 assign( gfield, binop( Iop_And32,
10999 binop( Iop_CmpEQ32,
11000 binop( Iop_And32,
11007 binop( Iop_CmpEQ32,
11008 binop( Iop_And32,
11014 binop( Iop_And32,
11016 binop( Iop_CmpEQ32,
11017 binop( Iop_And32,
11025 binop( Iop_And32,
11027 binop( Iop_CmpEQ32,
11031 binop( Iop_Or32,
11033 binop( Iop_Or32,
11041 binop( Iop_And32,
11042 binop( Iop_Or32,
11044 binop( Iop_CmpEQ32,
11048 binop( Iop_CmpEQ32,
11052 binop( Iop_Or32,
11053 binop( Iop_Or32,
11056 binop( Iop_Or32,
11063 binop( Iop_Or32,
11064 binop( Iop_Or32,
11067 binop( Iop_Or32,
11069 binop( Iop_Or32,
11086 assign( dcm0, binop( Iop_Shl32,
11089 assign( dcm1, binop( Iop_Shl32,
11090 binop( Iop_And32,
11094 assign( dcm2, binop( Iop_Shl32,
11095 binop( Iop_And32,
11099 assign( dcm3, binop( Iop_Shl32,
11100 binop( Iop_And32,
11104 assign( dcm4, binop( Iop_Shl32,
11105 binop( Iop_And32,
11109 assign( dcm5, binop( Iop_And32, mkexpr( SNaN_true), mkU32( 1 ) ) );
11113 assign( extreme_true, binop( Iop_Or32,
11115 binop( Iop_CmpEQ32,
11119 binop( Iop_CmpEQ32,
11124 Get_lmd( &lmd, binop( Iop_Shr32,
11128 binop( Iop_CmpEQ32,
11142 assign( dcm0, binop( Iop_Shl32,
11143 binop( Iop_And32,
11144 binop( Iop_And32,
11151 assign( dcm1, binop( Iop_Shl32,
11152 binop( Iop_And32,
11153 binop( Iop_And32,
11159 assign( dcm2, binop( Iop_Shl32,
11160 binop( Iop_And32,
11161 binop( Iop_Or32,
11162 binop( Iop_And32,
11169 assign( dcm3, binop( Iop_Shl32,
11170 binop( Iop_And32,
11171 binop( Iop_And32,
11172 binop( Iop_And32,
11177 binop( Iop_CmpEQ32,
11183 assign( dcm4, binop( Iop_Shl32,
11184 binop( Iop_And32,
11185 binop( Iop_And32,
11186 binop( Iop_And32,
11191 binop( Iop_CmpNE32,
11197 assign( dcm5, binop( Iop_And32,
11198 binop( Iop_Or32,
11200 binop( Iop_Or32,
11208 binop( Iop_Or32,
11210 binop( Iop_Or32,
11212 binop( Iop_Or32,
11214 binop( Iop_Or32,
11216 binop( Iop_Or32,
11223 binop( Iop_CmpEQ32,
11224 binop( Iop_Shr32,
11242 assign( field, binop( Iop_Or32,
11243 binop( Iop_Shl32,
11246 binop( Iop_Shl32,
11248 binop( Iop_CmpNE32,
11249 binop( Iop_And32,
11290 binop( Iop_Shr32,
11295 binop( Iop_32HLto64,
11296 binop( Iop_Or32,
11297 binop( Iop_Shl32, mkexpr( lmd ), mkU8( 28 ) ),
11312 binop( Iop_Or32,
11313 binop( Iop_Shr32,
11324 binop( Iop_Xor32,
11325 binop( Iop_Shr32,
11330 assign( sign, binop( Iop_Or32, mkexpr( tmp32 ), mkU32( 0xD ) ) );
11340 binop( Iop_32HLto64,
11341 binop( Iop_Or32,
11342 binop( Iop_Shr32,
11345 binop( Iop_Shl32,
11348 binop( Iop_Or32,
11350 binop( Iop_Shl32,
11377 binop( Iop_Shr32,
11378 binop( Iop_And32,
11390 binop( Iop_InsertExpD64,
11393 binop( Iop_32HLto64,
11397 binop( Iop_Shr32,
11398 binop( Iop_And32,
11404 binop( Iop_Shl32,
11409 binop( Iop_32HLto64,
11410 binop( Iop_Or32,
11411 binop( Iop_And32,
11429 binop( Iop_32HLto64,
11430 binop( Iop_Shr32,
11434 binop( Iop_Or32,
11435 binop( Iop_Shr32,
11439 binop( Iop_Shl32,
11449 binop( Iop_And32,
11466 binop( Iop_Shr32,
11478 binop( Iop_InsertExpD64,
11481 binop( Iop_32HLto64,
11482 binop( Iop_Or32,
11493 binop( Iop_32HLto64,
11494 binop( Iop_Or32,
11495 binop( Iop_And32,
11499 binop( Iop_And32,
11502 binop( Iop_Or32,
11503 binop( Iop_And32,
11506 binop( Iop_And32,
11565 binop( Iop_32HLto64,
11566 binop( Iop_Or32,
11567 binop( Iop_Shl32,
11570 binop( Iop_Shr32,
11573 binop( Iop_Or32,
11574 binop( Iop_Shl32,
11577 binop( Iop_Shr32,
11582 binop( Iop_32HLto64,
11583 binop( Iop_Or32,
11584 binop( Iop_Shl32,
11600 binop( Iop_Or32,
11601 binop( Iop_Shr32,
11613 binop( Iop_Xor32,
11614 binop( Iop_Shr32,
11619 assign( sign, binop( Iop_Or32, mkexpr( tmp32 ), mkU32( 0xD ) ) );
11626 binop( Iop_32HLto64,
11627 binop( Iop_Or32,
11628 binop( Iop_Shl32,
11635 binop( Iop_32HLto64,
11636 binop( Iop_Or32,
11637 binop( Iop_Shl32,
11640 binop( Iop_Shr32,
11643 binop( Iop_Or32,
11644 binop( Iop_Shl32,
11684 binop( Iop_32HLto64,
11686 binop( Iop_And32,
11687 binop( Iop_Shr32,
11693 binop( Iop_32HLto64,
11694 binop( Iop_Or32,
11695 binop( Iop_Shr32,
11699 binop( Iop_Shl32,
11703 binop( Iop_Or32,
11704 binop( Iop_Shl32,
11708 binop( Iop_Shr32,
11734 binop( Iop_Or32,
11738 binop( Iop_Or32,
11757 binop( Iop_And32,
11768 binop( Iop_32HLto64,
11770 binop( Iop_Shr32,
11779 binop( Iop_32HLto64,
11780 binop( Iop_Shr32,
11784 binop( Iop_Or32,
11785 binop( Iop_Shl32,
11789 binop( Iop_Shr32,
11814 binop( Iop_Or32,
11818 binop( Iop_Or32,
11825 binop( Iop_Shr32,
11842 binop( Iop_D64HLtoD128,
11844 binop( Iop_32HLto64,
11845 binop( Iop_Or32,
11848 binop( Iop_Or32,
11849 binop( Iop_Shl32,
11852 binop( Iop_Shr32,
11856 binop( Iop_32HLto64,
11857 binop( Iop_Or32,
11859 binop( Iop_Shl32,
11869 binop( Iop_InsertExpD128,
11882 binop( Iop_32HLto64,
11883 binop( Iop_Or32,
11884 binop( Iop_And32,
11887 binop( Iop_And32,
11890 binop( Iop_Or32,
11891 binop( Iop_And32,
11894 binop( Iop_And32,
11899 binop( Iop_32HLto64,
11900 binop( Iop_Or32,
11901 binop( Iop_And32,
11904 binop( Iop_And32,
11907 binop( Iop_Or32,
11908 binop( Iop_And32,
11911 binop( Iop_And32,
11953 binop( Iop_And32,
11979 binop( Iop_Shr32,
11988 binop( Iop_Sub8,
12022 binop( Iop_Shr32,
12035 binop( Iop_Sub8,
12062 binop( Iop_CmpEQ32,
12067 binop( Iop_CmpLT32U,
12072 binop( Iop_CmpLT32U,
12078 binop( Iop_CmpEQ32,
12083 binop( Iop_CmpNE32,
12088 binop( Iop_Or32,
12089 binop( Iop_And32,
12091 binop( Iop_Or32,
12092 binop( Iop_And32,
12095 binop( Iop_Or32,
12096 binop( Iop_And32,
12099 binop( Iop_And32,
12102 binop( Iop_And32,
12107 binop( Iop_Or32,
12108 binop( Iop_And32,
12111 binop( Iop_And32,
12309 binop( Iop_64HLtoV128, binop( Iop_F64toI64S,
12317 binop( Iop_64HLtoV128,
12319 binop( Iop_F64toI32S,
12328 binop( Iop_64HLtoV128,
12329 binop( Iop_F64toI64U,
12339 binop( Iop_64HLtoV128,
12341 binop( Iop_RoundF64toF32,
12343 binop( Iop_I64StoF64,
12353 binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
12354 binop( Iop_I64StoF64, get_IR_roundingmode(),
12363 binop( Iop_64HLtoV128,
12365 binop( Iop_RoundF64toF32,
12367 binop( Iop_I64UtoF64,
12377 binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
12378 binop( Iop_I64UtoF64, get_IR_roundingmode(),
12390 assign(hiResult_32, binop(Iop_F64toI32S, rmZero, mkexpr(xB)));
12391 assign(loResult_32, binop(Iop_F64toI32S, rmZero, mkexpr(xB2)));
12393 binop( Iop_64HLtoV128,
12446 binop( Iop_64HLtoV128,
12447 binop( Iop_32HLto64, b3_result, b2_result ),
12448 binop( Iop_32HLto64, b1_result, b0_result ) ) );
12455 binop( Iop_64HLtoV128,
12456 binop( Iop_32HLto64,
12459 binop( Iop_RoundF64toF32,
12469 binop( Iop_64HLtoV128,
12470 binop( Iop_32HLto64,
12481 binop( Iop_64HLtoV128,
12482 binop( Iop_32HLto64,
12484 binop( Iop_F64toI32U,
12492 binop( Iop_64HLtoV128,
12501 binop( Iop_64HLtoV128,
12511 binop( Iop_64HLtoV128,
12512 binop( Iop_32HLto64,
12515 binop( Iop_RoundF64toF32,
12519 binop( Iop_32HLto64,
12522 binop( Iop_RoundF64toF32,
12532 binop( Iop_64HLtoV128,
12533 binop( Iop_F64toI64U, mkU32( Irrm_ZERO ), mkexpr( xB ) ),
12534 binop( Iop_F64toI64U, mkU32( Irrm_ZERO ), mkexpr( xB2 ) ) ) );
12540 binop( Iop_64HLtoV128,
12541 binop( Iop_32HLto64,
12542 binop( Iop_F64toI32U,
12546 binop( Iop_32HLto64,
12547 binop( Iop_F64toI32U,
12555 binop( Iop_64HLtoV128,
12569 binop( Iop_64HLtoV128,
12570 binop( Iop_F64toI64S,
12574 binop( Iop_F64toI64S,
12583 binop( Iop_64HLtoV128,
12584 binop( Iop_F64toI64U,
12588 binop( Iop_F64toI64U,
12597 binop( Iop_64HLtoV128,
12598 binop( Iop_F64toI64S, mkU32( Irrm_ZERO ), mkexpr( xB ) ),
12599 binop( Iop_F64toI64S, mkU32( Irrm_ZERO ), mkexpr( xB2 ) ) ) );
12605 binop( Iop_64HLtoV128,
12607 binop( Iop_I64StoF64,
12611 binop( Iop_I64StoF64,
12619 binop( Iop_64HLtoV128,
12621 binop( Iop_I64UtoF64,
12625 binop( Iop_I64UtoF64,
12634 binop( Iop_64HLtoV128,
12635 binop( Iop_32HLto64,
12638 binop( Iop_RoundF64toF32,
12640 binop( Iop_I64StoF64,
12644 binop( Iop_32HLto64,
12647 binop( Iop_RoundF64toF32,
12649 binop( Iop_I64StoF64,
12658 binop( Iop_64HLtoV128,
12659 binop( Iop_32HLto64,
12662 binop( Iop_RoundF64toF32,
12664 binop( Iop_I64UtoF64,
12668 binop( Iop_32HLto64,
12671 binop( Iop_RoundF64toF32,
12673 binop( Iop_I64UtoF64,
12682 binop( Iop_64HLtoV128,
12684 binop( Iop_I64StoF64, get_IR_roundingmode(),
12687 binop( Iop_I64StoF64, get_IR_roundingmode(),
12693 binop( Iop_64HLtoV128,
12695 binop( Iop_I64UtoF64, get_IR_roundingmode(),
12698 binop( Iop_I64UtoF64, get_IR_roundingmode(),
12784 binop( Iop_64HLtoV128, mkexpr( hiResult ), mkexpr( loResult ) ) );
12795 binop( Iop_SqrtF64, rm, mkexpr( frB ) ) ) );
12798 binop( Iop_SqrtF64, rm, mkexpr( frB2 ) ) ) );
12800 binop( Iop_64HLtoV128, mkexpr( hiResult ), mkexpr( loResult ) ) );
12874 binop( Iop_64HLtoV128,
12900 binop( Iop_Or32,
12901 binop( Iop_Or32, mkU32( 8 ), // fl_flag
12902 binop( Iop_Shl32, mkexpr(fg_flagHi), mkU8( 2 ) ) ),
12903 binop( Iop_Shl32, mkexpr(fe_flagHi), mkU8( 1 ) ) ) );
12905 binop( Iop_Or32,
12906 binop( Iop_Or32, mkU32( 8 ), // fl_flag
12907 binop( Iop_Shl32, mkexpr(fg_flagLo), mkU8( 2 ) ) ),
12908 binop( Iop_Shl32, mkexpr(fe_flagLo), mkU8( 1 ) ) ) );
12910 binop( Iop_Or32, mkexpr( flagsHi ), mkexpr( flagsLo ) ),
12938 binop( Iop_Or32,
12939 binop( Iop_Or32, mkU32( 8 ), // fl_flag
12940 binop( Iop_Shl32, mkexpr(fg_flagHi), mkU8( 2 ) ) ),
12941 binop( Iop_Shl32, mkexpr(fe_flagHi), mkU8( 1 ) ) ) );
12943 binop( Iop_Or32,
12944 binop( Iop_Or32, mkU32( 8 ), // fl_flag
12945 binop( Iop_Shl32, mkexpr(fg_flagLo), mkU8( 2 ) ) ),
12946 binop( Iop_Shl32, mkexpr(fe_flagLo), mkU8( 1 ) ) ) );
12948 binop( Iop_Or32, mkexpr( flagsHi ), mkexpr( flagsLo ) ),
13041 binop( Iop_64HLtoV128,
13042 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
13043 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
13059 binop(Iop_SqrtF64, rm, mkexpr( b0 ) ) ) ) );
13063 binop(Iop_SqrtF64, rm, mkexpr( b1 ) ) ) ) );
13067 binop(Iop_SqrtF64, rm, mkexpr( b2) ) ) ) );
13071 binop(Iop_SqrtF64, rm, mkexpr( b3 ) ) ) ) );
13074 binop( Iop_64HLtoV128,
13075 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
13076 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
13161 binop( Iop_64HLtoV128,
13162 binop( Iop_32HLto64, mkexpr( negate ? getNegatedResult_32( res3 ) : res3 ),
13164 binop( Iop_32HLto64, mkexpr( negate ? getNegatedResult_32( res1 ) : res1 ),
13192 binop( Iop_Or32,
13193 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13194 binop( Iop_Shl32, mkexpr(fg_flag0), mkU8( 2 ) ) ),
13195 binop( Iop_Shl32, mkexpr(fe_flag0), mkU8( 1 ) ) ) );
13197 binop( Iop_Or32,
13198 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13199 binop( Iop_Shl32, mkexpr(fg_flag1), mkU8( 2 ) ) ),
13200 binop( Iop_Shl32, mkexpr(fe_flag1), mkU8( 1 ) ) ) );
13202 binop( Iop_Or32,
13203 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13204 binop( Iop_Shl32, mkexpr(fg_flag2), mkU8( 2 ) ) ),
13205 binop( Iop_Shl32, mkexpr(fe_flag2), mkU8( 1 ) ) ) );
13207 binop( Iop_Or32,
13208 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13209 binop( Iop_Shl32, mkexpr(fg_flag3), mkU8( 2 ) ) ),
13210 binop( Iop_Shl32, mkexpr(fe_flag3), mkU8( 1 ) ) ) );
13212 binop( Iop_Or32,
13214 binop( Iop_Or32,
13216 binop( Iop_Or32,
13247 binop( Iop_Or32,
13248 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13249 binop( Iop_Shl32, mkexpr(fg_flag0), mkU8( 2 ) ) ),
13250 binop( Iop_Shl32, mkexpr(fe_flag0), mkU8( 1 ) ) ) );
13252 binop( Iop_Or32,
13253 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13254 binop( Iop_Shl32, mkexpr(fg_flag1), mkU8( 2 ) ) ),
13255 binop( Iop_Shl32, mkexpr(fe_flag1), mkU8( 1 ) ) ) );
13257 binop( Iop_Or32,
13258 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13259 binop( Iop_Shl32, mkexpr(fg_flag2), mkU8( 2 ) ) ),
13260 binop( Iop_Shl32, mkexpr(fe_flag2), mkU8( 1 ) ) ) );
13262 binop( Iop_Or32,
13263 binop( Iop_Or32, mkU32( 8 ), // fl_flag
13264 binop( Iop_Shl32, mkexpr(fg_flag3), mkU8( 2 ) ) ),
13265 binop( Iop_Shl32, mkexpr(fe_flag3), mkU8( 1 ) ) ) );
13267 binop( Iop_Or32,
13269 binop( Iop_Or32,
13271 binop( Iop_Or32,
13414 putVReg( vRT_addr, binop( Iop_64HLtoV128,
13432 putVReg( vRT_addr, binop( Iop_64HLtoV128,
13462 from a binop( Iop_CmpF64, fpA, fpB), whose result is returned
13485 binop( Iop_Shl32,
13488 binop( Iop_Or32,
13489 binop( Iop_And32,
13491 binop( Iop_Shr32,
13495 binop( Iop_And32,
13496 binop( Iop_Xor32,
13498 binop( Iop_Shr32,
13527 binop( Iop_CmpEQ32,
13528 binop( Iop_And32,
13534 binop( Iop_CmpEQ32,
13535 binop( Iop_And32,
13563 binop(Iop_Or64, mkexpr(frA_I64), mkU64(SNAN_MASK)),
13567 binop(Iop_Or64, mkexpr(frB_I64), mkU64(SNAN_MASK)),
13581 IRTemp src1cmpsrc2 = get_fp_cmp_CR_val( binop( Iop_CmpF64,
13587 return IRExpr_ITE( binop( Iop_CmpEQ32,
13625 IRExpr_ITE( binop( Iop_CmpEQ32,
13695 binop( Iop_F64toI64S, rxpi_rm,
13705 binop( Iop_CmpNE8,
13707 binop( Iop_CmpF64,
13713 binop( Iop_CmpNE32,
13714 binop( Iop_Shr32,
13721 binop( Iop_I64StoF64,
13724 binop( Iop_I64StoF64,
13738 binop( Iop_CmpEQ32,
13739 binop( Iop_And32, hi32, mkU32( 0x00080000 ) ),
13744 binop( Iop_Xor64,
13784 binop( Iop_SqrtF64,
13788 binop( Iop_SqrtF64,
13793 binop( Iop_64HLtoV128,
13833 assign( sqrt3, binop( Iop_SqrtF64, rm, mkexpr( b3 ) ) );
13834 assign( sqrt2, binop( Iop_SqrtF64, rm, mkexpr( b2 ) ) );
13835 assign( sqrt1, binop( Iop_SqrtF64, rm, mkexpr( b1 ) ) );
13836 assign( sqrt0, binop( Iop_SqrtF64, rm, mkexpr( b0 ) ) );
13868 binop( Iop_64HLtoV128,
13869 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
13870 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
13928 binop( Iop_64HLtoV128,
13929 binop( Iop_32HLto64, mkexpr( res3 ), mkexpr( res2 ) ),
13930 binop( Iop_32HLto64, mkexpr( res1 ), mkexpr( res0 ) ) ) );
13948 putVSReg( XT, binop( Iop_64HLtoV128, get_max_min_fp(frA, frB, isMin), get_max_min_fp(frA2, frB2, isMin) ) );
13966 binop( Iop_64HLtoV128,
13967 binop( Iop_Or64,
13968 binop( Iop_And64,
13971 binop( Iop_And64,
13974 binop( Iop_Or64,
13975 binop( Iop_And64,
13978 binop( Iop_And64,
13998 binop( Iop_32HLto64,
13999 binop( Iop_Or32,
14000 binop( Iop_And32,
14003 binop( Iop_And32,
14007 binop( Iop_Or32,
14008 binop( Iop_And32,
14011 binop( Iop_And32,
14015 binop( Iop_32HLto64,
14016 binop( Iop_Or32,
14017 binop( Iop_And32,
14020 binop( Iop_And32,
14024 binop( Iop_Or32,
14025 binop( Iop_And32,
14028 binop( Iop_And32,
14031 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( resHi ), mkexpr( resLo ) ) );
14054 putVSReg( XT, binop( Iop_64HLtoV128,
14072 binop( Iop_64HLtoV128,
14073 binop( Iop_32HLto64, mkU32( 1 ), mkU32( 1 ) ),
14074 binop( Iop_32HLto64, mkU32( 1 ), mkU32( 1 ) ) ) );
14076 binop( Iop_Shr32x4,
14077 binop( Iop_Shl32x4,
14084 binop( Iop_64HLtoV128,
14085 binop( Iop_32HLto64,
14088 binop( Iop_32HLto64,
14092 binop( Iop_OrV128,
14108 binop( Iop_64HLtoV128,
14133 binop( Iop_64HLtoV128,
14198 binop( Iop_64HLtoV128,
14199 binop( Iop_32HLto64,
14202 binop( Iop_32HLto64,
14247 putVSReg( XT, binop( Iop_64HLtoV128,
14249 binop( Iop_RoundF64toF32, rm,
14257 putVSReg( XT, binop( Iop_64HLtoV128,
14259 binop( Iop_RoundF64toF32, rm,
14267 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14275 putVSReg( XT, binop( Iop_64HLtoV128,
14277 binop( Iop_RoundF64toF32, rm,
14285 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14301 binop( Iop_64HLtoV128,
14303 binop( Iop_RoundF64toF32, rm,
14318 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14336 binop( Iop_64HLtoV128,
14338 binop( Iop_RoundF64toF32, rm,
14353 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14382 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( getNegatedResult(maddResult) ),
14399 binop( Iop_RoundF64toF32, rm,
14405 putVSReg( XT, binop( Iop_64HLtoV128,
14423 binop( Iop_RoundF64toF32, rm,
14429 putVSReg( XT, binop( Iop_64HLtoV128,
14452 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( getNegatedResult(msubResult) ), mkU64( 0 ) ) );
14459 putVSReg( XT, binop( Iop_64HLtoV128,
14461 binop( Iop_RoundF64toF32, rm,
14470 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14478 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14488 binop( Iop_64HLtoV128,
14490 binop( Iop_RoundF64toF32, rm,
14491 binop( Iop_SqrtF64, rm,
14498 putVSReg( XT, binop( Iop_64HLtoV128, unop( Iop_ReinterpF64asI64,
14499 binop( Iop_SqrtF64, rm,
14529 binop( Iop_Or32,
14530 binop( Iop_Or32, mkU32( 8 ), // fl_flag
14531 binop( Iop_Shl32, mkexpr(fg_flag), mkU8( 2 ) ) ),
14532 binop( Iop_Shl32, mkexpr(fe_flag), mkU8( 1 ) ) ) );
14574 ccPPC32 = get_fp_cmp_CR_val( binop(Iop_CmpF64, mkexpr(frA), mkexpr(frB)));
14608 ccIR_hi = get_fp_cmp_CR_val( binop( Iop_CmpF64,
14611 ccIR_lo = get_fp_cmp_CR_val( binop( Iop_CmpF64,
14618 binop( Iop_CmpEQ32, mkexpr( ccIR_hi ), mkU32( cmp_type ) ) ) );
14621 binop( Iop_CmpEQ32, mkexpr( ccIR_lo ), mkU32( cmp_type ) ) ) );
14628 assign(hi_GE, mkOR1( binop( Iop_CmpEQ32, mkexpr( ccIR_hi ), mkU32( 2 ) ),
14629 binop( Iop_CmpEQ32, mkexpr( ccIR_hi ), mkU32( 4 ) ) ) );
14632 assign(lo_GE, mkOR1( binop( Iop_CmpEQ32, mkexpr( ccIR_lo ), mkU32( 2 ) ),
14633 binop( Iop_CmpEQ32, mkexpr( ccIR_lo ), mkU32( 4 ) ) ) );
14639 binop( Iop_CmpEQ32,
14643 binop( Iop_64HLtoV128, mkexpr( hiResult ), mkexpr( loResult ) ) );
14648 binop( Iop_CmpEQ32,
14656 binop( Iop_CmpEQ32,
14661 binop( Iop_Or32,
14662 binop( Iop_Shl32, mkexpr( all_elem_false ), mkU8( 1 ) ),
14663 binop( Iop_Shl32, mkexpr( all_elem_true ), mkU8( 3 ) ) ) );
14724 assign( vD, binop(Iop_CmpEQ32Fx4, mkexpr(vA), mkexpr(vB)) );
14738 assign( vD, binop(Iop_CmpGE32Fx4, mkexpr(vA), mkexpr(vB)) );
14752 assign( vD, binop(Iop_CmpGT32Fx4, mkexpr(vA), mkexpr(vB)) );
14798 assign(absVal, binop(Iop_ShrV128, binop(Iop_ShlV128, mkexpr(vB), mkU8(1)), mkU8(1)));
14810 assign( vecB_no_signbit, binop( Iop_ShrV128, binop( Iop_ShlV128,
14814 assign( vecA_signbit, binop( Iop_ShlV128, binop( Iop_ShrV128,
14818 assign( vec_result, binop( Iop_OrV128, mkexpr(vecA_signbit), mkexpr( vecB_no_signbit ) ) );
14827 assign( vec_neg_signbit, unop( Iop_NotV128, binop( Iop_ShrV128,
14830 putVSReg(XT, binop(Iop_OrV128, mkexpr(vec_neg_signbit), mkexpr(vB)));
14839 assign( vecB_no_signbit, binop( Iop_ShrV128, binop( Iop_ShlV128,
14843 assign( vecB_signbit_comp, binop( Iop_ShlV128,
14845 binop( Iop_ShrV128,
14849 putVSReg( XT, binop( Iop_OrV128, mkexpr( vecB_no_signbit ),
14863 putVSReg( XT, binop( Iop_64HLtoV128, get_max_min_fp(frA, frB, isMin), mkU64( 0 ) ) );
14881 binop( Iop_64HLtoV128,
14905 binop( Iop_SqrtF64,
14909 binop( Iop_64HLtoV128,
14911 binop( Iop_RoundF64toF32, rm,
14937 binop( Iop_SqrtF64,
14941 binop( Iop_64HLtoV128,
14960 putVSReg( XT, binop( Iop_64HLtoV128,
14962 binop( Iop_RoundF64toF32,
15001 putVSReg( XT, binop( Iop_XorV128, mkexpr( vA ), mkexpr( vB ) ) );
15005 putVSReg( XT, binop( Iop_OrV128, mkexpr( vA ), mkexpr( vB ) ) );
15009 putVSReg( XT, unop( Iop_NotV128, binop( Iop_OrV128, mkexpr( vA ),
15014 putVSReg( XT, binop( Iop_AndV128, mkexpr( vA ), mkexpr( vB ) ) );
15018 putVSReg( XT, binop( Iop_AndV128, mkexpr( vA ), unop( Iop_NotV128,
15023 putVSReg( XT, binop( Iop_OrV128,
15030 binop( Iop_AndV128, mkexpr( vA ),
15036 binop( Iop_XorV128,
15076 putVSReg( XT, binop( Iop_64HLtoV128,
15086 putVSReg( XT, binop( Iop_64HLtoV128,
15105 putVSReg( XT, binop( Iop_64HLtoV128, exp, mkU64( 0 ) ) );
15116 putVSReg( XT, binop( Iop_64HLtoV128, exp, exp ) );
15127 high_addr = binop( addOp, mkexpr( EA ), ty == Ity_I64 ? mkU64( ea_off )
15130 putVSReg( XT, binop( Iop_64HLtoV128, high, low ) );
15138 putVSReg( XT, binop( Iop_64HLtoV128, mkexpr( data ), mkexpr( data ) ) );
15150 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15154 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15158 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15161 putVSReg( XT, binop( Iop_64HLtoV128, binop( Iop_32HLto64, t3, t2 ),
15162 binop( Iop_32HLto64, t1, t0 ) ) );
15239 storeBE( binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ), ty == Ity_I64 ? mkU64( 8 )
15259 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15263 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15267 irx_addr = binop( mkSzOp( ty, Iop_Add8 ), mkexpr( EA ),
15311 assign( hi, binop(Iop_ShlV128, mkexpr(vA), mkU8(SHW*32)) );
15312 assign( lo, binop(Iop_ShrV128, mkexpr(vB), mkU8(128-SHW*32)) );
15313 assign ( result, binop(Iop_OrV128, mkexpr(hi), mkexpr(lo)) );
15336 assign( vT, binop(Iop_64HLtoV128, mkexpr(hi), mkexpr(lo)) );
15362 assign( vT, binop(Iop_64HLtoV128,
15363 binop(Iop_32HLto64, mkexpr(ahi32), mkexpr(bhi32)),
15364 binop(Iop_32HLto64, mkexpr(alo32), mkexpr(blo32))) );
15377 putVSReg( XT, binop(Iop_OrV128,
15378 binop(Iop_AndV128, mkexpr(vA), unop(Iop_NotV128, mkexpr(vC))),
15379 binop(Iop_AndV128, mkexpr(vB), mkexpr(vC))) );
15390 binop( Iop_ShrV128, mkexpr( vB ), mkU8( sh_uim ) ) ) ) );
15434 binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
15468 binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
15564 assign( eb, binop(Iop_And8, mkU8(0xF),
15567 assign( idx, binop(Iop_Shl8,
15568 binop(Iop_Sub8, mkU8(15), mkexpr(eb)),
15572 binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
15578 assign( eb, binop(Iop_And8, mkU8(0xF),
15580 assign( idx, binop(Iop_Shl8,
15581 binop(Iop_Sub8, mkU8(14), mkexpr(eb)),
15585 binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx)))) );
15591 assign( eb, binop(Iop_And8, mkU8(0xF),
15593 assign( idx, binop(Iop_Shl8,
15594 binop(Iop_Sub8, mkU8(12), mkexpr(eb)),
15598 binop(Iop_ShrV128, mkexpr(vS), mkexpr(idx))) );
15660 binop(Iop_ShrN32x4,
15661 binop(Iop_CmpGT32Ux4, mkexpr(vB),
15668 putVReg( vD_addr, binop(Iop_Add8x16, mkexpr(vA), mkexpr(vB)) );
15673 putVReg( vD_addr, binop(Iop_Add16x8, mkexpr(vA), mkexpr(vB)) );
15678 putVReg( vD_addr, binop(Iop_Add32x4, mkexpr(vA), mkexpr(vB)) );
15683 putVReg( vD_addr, binop(Iop_Add64x2, mkexpr(vA), mkexpr(vB)) );
15688 putVReg( vD_addr, binop(Iop_QAdd8Ux16, mkexpr(vA), mkexpr(vB)) );
15694 putVReg( vD_addr, binop(Iop_QAdd16Ux8, mkexpr(vA), mkexpr(vB)) );
15700 putVReg( vD_addr, binop(Iop_QAdd32Ux4, mkexpr(vA), mkexpr(vB)) );
15706 putVReg( vD_addr, binop(Iop_QAdd8Sx16, mkexpr(vA), mkexpr(vB)) );
15712 putVReg( vD_addr, binop(Iop_QAdd16Sx8, mkexpr(vA), mkexpr(vB)) );
15718 putVReg( vD_addr, binop(Iop_QAdd32Sx4, mkexpr(vA), mkexpr(vB)) );
15727 putVReg( vD_addr, binop(Iop_ShrN32x4,
15729 binop(Iop_CmpGT32Ux4, mkexpr(vB),
15736 putVReg( vD_addr, binop(Iop_Sub8x16, mkexpr(vA), mkexpr(vB)) );
15741 putVReg( vD_addr, binop(Iop_Sub16x8, mkexpr(vA), mkexpr(vB)) );
15746 putVReg( vD_addr, binop(Iop_Sub32x4, mkexpr(vA), mkexpr(vB)) );
15751 putVReg( vD_addr, binop(Iop_Sub64x2, mkexpr(vA), mkexpr(vB)) );
15756 putVReg( vD_addr, binop(Iop_QSub8Ux16, mkexpr(vA), mkexpr(vB)) );
15762 putVReg( vD_addr, binop(Iop_QSub16Ux8, mkexpr(vA), mkexpr(vB)) );
15768 putVReg( vD_addr, binop(Iop_QSub32Ux4, mkexpr(vA), mkexpr(vB)) );
15774 putVReg( vD_addr, binop(Iop_QSub8Sx16, mkexpr(vA), mkexpr(vB)) );
15780 putVReg( vD_addr, binop(Iop_QSub16Sx8, mkexpr(vA), mkexpr(vB)) );
15786 putVReg( vD_addr, binop(Iop_QSub32Sx4, mkexpr(vA), mkexpr(vB)) );
15794 putVReg( vD_addr, binop(Iop_Max8Ux16, mkexpr(vA), mkexpr(vB)) );
15799 putVReg( vD_addr, binop(Iop_Max16Ux8, mkexpr(vA), mkexpr(vB)) );
15804 putVReg( vD_addr, binop(Iop_Max32Ux4, mkexpr(vA), mkexpr(vB)) );
15809 putVReg( vD_addr, binop(Iop_Max64Ux2, mkexpr(vA), mkexpr(vB)) );
15814 putVReg( vD_addr, binop(Iop_Max8Sx16, mkexpr(vA), mkexpr(vB)) );
15819 putVReg( vD_addr, binop(Iop_Max16Sx8, mkexpr(vA), mkexpr(vB)) );
15824 putVReg( vD_addr, binop(Iop_Max32Sx4, mkexpr(vA), mkexpr(vB)) );
15829 putVReg( vD_addr, binop(Iop_Max64Sx2, mkexpr(vA), mkexpr(vB)) );
15835 putVReg( vD_addr, binop(Iop_Min8Ux16, mkexpr(vA), mkexpr(vB)) );
15840 putVReg( vD_addr, binop(Iop_Min16Ux8, mkexpr(vA), mkexpr(vB)) );
15845 putVReg( vD_addr, binop(Iop_Min32Ux4, mkexpr(vA), mkexpr(vB)) );
15850 putVReg( vD_addr, binop(Iop_Min64Ux2, mkexpr(vA), mkexpr(vB)) );
15855 putVReg( vD_addr, binop(Iop_Min8Sx16, mkexpr(vA), mkexpr(vB)) );
15860 putVReg( vD_addr, binop(Iop_Min16Sx8, mkexpr(vA), mkexpr(vB)) );
15865 putVReg( vD_addr, binop(Iop_Min32Sx4, mkexpr(vA), mkexpr(vB)) );
15870 putVReg( vD_addr, binop(Iop_Min64Sx2, mkexpr(vA), mkexpr(vB)) );
15877 putVReg( vD_addr, binop(Iop_Avg8Ux16, mkexpr(vA), mkexpr(vB)) );
15882 putVReg( vD_addr, binop(Iop_Avg16Ux8, mkexpr(vA), mkexpr(vB)) );
15887 putVReg( vD_addr, binop(Iop_Avg32Ux4, mkexpr(vA), mkexpr(vB)) );
15892 putVReg( vD_addr, binop(Iop_Avg8Sx16, mkexpr(vA), mkexpr(vB)) );
15897 putVReg( vD_addr, binop(Iop_Avg16Sx8, mkexpr(vA), mkexpr(vB)) );
15902 putVReg( vD_addr, binop(Iop_Avg32Sx4, mkexpr(vA), mkexpr(vB)) );
15910 binop(Iop_MullEven8Ux16, mkexpr(vA), mkexpr(vB)));
15916 binop(Iop_MullEven16Ux8, mkexpr(vA), mkexpr(vB)));
15921 putVReg( vD_addr, binop( Iop_MullEven32Ux4, mkexpr(vA), mkexpr(vB) ) );
15926 putVReg( vD_addr, binop( Iop_Mul32x4, mkexpr(vA), mkexpr(vB) ) );
15932 binop(Iop_MullEven8Sx16, mkexpr(vA), mkexpr(vB)));
15938 binop(Iop_MullEven16Sx8, mkexpr(vA), mkexpr(vB)));
15943 putVReg( vD_addr, binop( Iop_MullEven32Sx4, mkexpr(vA), mkexpr(vB) ) );
15995 assign( z3, binop(Iop_Add64, mkexpr(b3),
15996 binop(Iop_Add64,
15997 binop(Iop_Add64, mkexpr(a15), mkexpr(a14)),
15998 binop(Iop_Add64, mkexpr(a13), mkexpr(a12)))) );
15999 assign( z2, binop(Iop_Add64, mkexpr(b2),
16000 binop(Iop_Add64,
16001 binop(Iop_Add64, mkexpr(a11), mkexpr(a10)),
16002 binop(Iop_Add64, mkexpr(a9), mkexpr(a8)))) );
16003 assign( z1, binop(Iop_Add64, mkexpr(b1),
16004 binop(Iop_Add64,
16005 binop(Iop_Add64, mkexpr(a7), mkexpr(a6)),
16006 binop(Iop_Add64, mkexpr(a5), mkexpr(a4)))) );
16007 assign( z0, binop(Iop_Add64, mkexpr(b0),
16008 binop(Iop_Add64,
16009 binop(Iop_Add64, mkexpr(a3), mkexpr(a2)),
16010 binop(Iop_Add64, mkexpr(a1), mkexpr(a0)))) );
16035 assign( z3, binop(Iop_Add64, mkexpr(b3),
16036 binop(Iop_Add64,
16037 binop(Iop_Add64, mkexpr(a15), mkexpr(a14)),
16038 binop(Iop_Add64, mkexpr(a13), mkexpr(a12)))) );
16039 assign( z2, binop(Iop_Add64, mkexpr(b2),
16040 binop(Iop_Add64,
16041 binop(Iop_Add64, mkexpr(a11), mkexpr(a10)),
16042 binop(Iop_Add64, mkexpr(a9), mkexpr(a8)))) );
16043 assign( z1, binop(Iop_Add64, mkexpr(b1),
16044 binop(Iop_Add64,
16045 binop(Iop_Add64, mkexpr(a7), mkexpr(a6)),
16046 binop(Iop_Add64, mkexpr(a5), mkexpr(a4)))) );
16047 assign( z0, binop
16048 binop(Iop_Add64,
16049 binop(Iop_Add64, mkexpr(a3), mkexpr(a2)),
16050 binop(Iop_Add64, mkexpr(a1), mkexpr(a0)))) );
16069 assign( z3, binop(Iop_Add64, mkexpr(b3),
16070 binop(Iop_Add64, mkexpr(a7), mkexpr(a6))));
16071 assign( z2, binop(Iop_Add64, mkexpr(b2),
16072 binop(Iop_Add64, mkexpr(a5), mkexpr(a4))));
16073 assign( z1, binop(Iop_Add64, mkexpr(b1),
16074 binop(Iop_Add64, mkexpr(a3), mkexpr(a2))));
16075 assign( z0, binop(Iop_Add64, mkexpr(b0),
16076 binop(Iop_Add64, mkexpr(a1), mkexpr(a0))));
16091 assign( z2, binop(Iop_Add64, mkexpr(b2),
16092 binop(Iop_Add64, mkexpr(a3), mkexpr(a2))) );
16093 assign( z0, binop(Iop_Add64, mkexpr(b0),
16094 binop(Iop_Add64, mkexpr(a1), mkexpr(a0))) );
16109 assign( z0, binop(Iop_Add64, mkexpr(b0),
16110 binop(Iop_Add64,
16111 binop(Iop_Add64, mkexpr(a3), mkexpr(a2)),
16112 binop(Iop_Add64, mkexpr(a1), mkexpr(a0)))) );
16151 putVReg( vD_addr, binop(Iop_AndV128, mkexpr(vA), mkexpr(vB)) );
16156 putVReg( vD_addr, binop(Iop_AndV128, mkexpr(vA),
16162 putVReg( vD_addr, binop(Iop_OrV128, mkexpr(vA), mkexpr(vB)) );
16167 putVReg( vD_addr, binop(Iop_XorV128, mkexpr(vA), mkexpr(vB)) );
16173 unop(Iop_NotV128, binop(Iop_OrV128, mkexpr(vA), mkexpr(vB))) );
16178 putVReg( vD_addr, binop( Iop_OrV128,
16186 binop(Iop_AndV128, mkexpr( vA ),
16193 binop( Iop_XorV128, mkexpr( vA ),
16232 assign( vD, binop(Iop_CmpEQ8x16, mkexpr(vA), mkexpr(vB)) );
16238 assign( vD, binop(Iop_CmpEQ16x8, mkexpr(vA), mkexpr(vB)) );
16244 assign( vD, binop(Iop_CmpEQ32x4, mkexpr(vA), mkexpr(vB)) );
16250 assign( vD, binop(Iop_CmpEQ64x2, mkexpr(vA), mkexpr(vB)) );
16256 assign( vD, binop(Iop_CmpGT8Ux16, mkexpr(vA), mkexpr(vB)) );
16262 assign( vD, binop(Iop_CmpGT16Ux8, mkexpr(vA), mkexpr(vB)) );
16268 assign( vD, binop(Iop_CmpGT32Ux4, mkexpr(vA), mkexpr(vB)) );
16274 assign( vD, binop(Iop_CmpGT64Ux2, mkexpr(vA), mkexpr(vB)) );
16280 assign( vD, binop(Iop_CmpGT8Sx16, mkexpr(vA), mkexpr(vB)) );
16286 assign( vD, binop(Iop_CmpGT16Sx8, mkexpr(vA), mkexpr(vB)) );
16292 assign( vD, binop(Iop_CmpGT32Sx4, mkexpr(vA), mkexpr(vB)) );
16298 assign( vD, binop(Iop_CmpGT64Sx2, mkexpr(vA), mkexpr(vB)) );
16367 assign(cSigns, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vC)));
16368 assign(aLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vA)));
16369 assign(bLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vB)));
16370 assign(cLo, binop(Iop_InterleaveLO16x8, mkexpr(cSigns),mkexpr(vC)));
16371 assign(aHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vA)));
16372 assign(bHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vB)));
16373 assign(cHi, binop(Iop_InterleaveHI16x8, mkexpr(cSigns),mkexpr(vC)));
16375 assign( zLo, binop(Iop_Add32x4, mkexpr(cLo),
16376 binop(Iop_SarN32x4,
16377 binop(Iop_MullEven16Sx8,
16381 assign( zHi, binop(Iop_Add32x4, mkexpr(cHi),
16382 binop(Iop_SarN32x4,
16383 binop(Iop_MullEven16Sx8,
16388 binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
16396 assign(cSigns, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vC)) );
16397 assign(aLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vA)));
16398 assign(bLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vB)));
16399 assign(cLo, binop(Iop_InterleaveLO16x8, mkexpr(cSigns),mkexpr(vC)));
16400 assign(aHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vA)));
16401 assign(bHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vB)));
16402 assign(cHi, binop(Iop_InterleaveHI16x8, mkexpr(cSigns),mkexpr(vC)));
16405 assign( zKonst, binop(Iop_ShlN32x4, unop(Iop_Dup32x4, mkU32(0x1)),
16408 assign( zLo, binop(Iop_Add32x4, mkexpr(cLo),
16409 binop(Iop_SarN32x4,
16410 binop(Iop_Add32x4, mkexpr(zKonst),
16411 binop(Iop_MullEven16Sx8,
16415 assign( zHi, binop(Iop_Add32x4, mkexpr(cHi),
16416 binop(Iop_SarN32x4,
16417 binop(Iop_Add32x4, mkexpr(zKonst),
16418 binop(Iop_MullEven16Sx8,
16423 binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
16429 assign(aLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vA)));
16430 assign(bLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vB)));
16431 assign(cLo, binop(Iop_InterleaveLO16x8, mkexpr(zeros), mkexpr(vC)));
16432 assign(aHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vA)));
16433 assign(bHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vB)));
16434 assign(cHi, binop(Iop_InterleaveHI16x8, mkexpr(zeros), mkexpr(vC)));
16435 assign(zLo, binop(Iop_Add32x4,
16436 binop(Iop_MullEven16Ux8, mkexpr(aLo), mkexpr(bLo)),
16438 assign(zHi, binop(Iop_Add32x4,
16439 binop(Iop_MullEven16Ux8, mkexpr(aHi), mkexpr(bHi)),
16442 binop(Iop_NarrowBin32to16x8, mkexpr(zHi), mkexpr(zLo)) );
16456 assign( abOdd, binop(Iop_MullEven8Ux16, mkexpr(vA), mkexpr(vB)) );
16463 binop(Iop_Add32x4, mkexpr(vC),
16464 binop(Iop_Add32x4,
16465 binop(Iop_Add32x4, mkexpr(abEE), mkexpr(abEO)),
16466 binop(Iop_Add32x4, mkexpr(abOE), mkexpr(abOO)))) );
16486 assign( abEO, binop(Iop_MullEven16Sx8, mkexpr(aEvn), mkexpr(bEvn)) );
16488 assign( abOO, binop(Iop_MullEven16Sx8, mkexpr(aOdd), mkexpr(bOdd)) );
16492 binop(Iop_QAdd32Sx4, mkexpr(vC),
16493 binop(Iop_QAdd32Sx4,
16494 binop(Iop_QAdd32Sx4, mkexpr(abEE), mkexpr(abEO)),
16495 binop(Iop_QAdd32Sx4, mkexpr(abOE), mkexpr(abOO)))) );
16502 assign( abOdd, binop(Iop_MullEven16Ux8, mkexpr(vA), mkexpr(vB)) );
16504 binop(Iop_Add32x4, mkexpr(vC),
16505 binop(Iop_Add32x4, mkexpr(abEvn), mkexpr(abOdd))) );
16513 assign( abOdd, binop(Iop_MullEven16Ux8, mkexpr(vA), mkexpr(vB)) );
16521 assign( z3, binop(Iop_Add64, mkexpr(c3),
16522 binop(Iop_Add64, mkexpr(ab7), mkexpr(ab6))));
16523 assign( z2, binop(Iop_Add64, mkexpr(c2),
16524 binop(Iop_Add64, mkexpr(ab5), mkexpr(ab4))));
16525 assign( z1, binop(Iop_Add64, mkexpr(c1),
16526 binop(Iop_Add64, mkexpr(ab3), mkexpr(ab2))));
16527 assign( z0, binop(Iop_Add64, mkexpr(c0),
16528 binop(Iop_Add64, mkexpr(ab1), mkexpr(ab0))));
16540 assign( abOdd, binop(Iop_MullEven16Sx8, mkexpr(vA), mkexpr(vB)) );
16542 binop(Iop_Add32x4, mkexpr(vC),
16543 binop(Iop_Add32x4, mkexpr(abOdd), mkexpr(abEvn))) );
16551 assign( abOdd, binop(Iop_MullEven16Sx8, mkexpr(vA), mkexpr(vB)) );
16559 assign( z3, binop(Iop_Add64, mkexpr(c3),
16560 binop(Iop_Add64, mkexpr(ab7), mkexpr(ab6))));
16561 assign( z2, binop(Iop_Add64, mkexpr(c2),
16562 binop(Iop_Add64, mkexpr(ab5), mkexpr(ab4))));
16563 assign( z1, binop(Iop_Add64, mkexpr(c1),
16564 binop(Iop_Add64, mkexpr(ab3), mkexpr(ab2))));
16565 assign( z0, binop(Iop_Add64, mkexpr(c0),
16566 binop(Iop_Add64, mkexpr(ab1), mkexpr(ab0))));
16609 putVReg( vD_addr, binop(Iop_PolynomialMulAdd8x16,
16614 putVReg( vD_addr, binop(Iop_PolynomialMulAdd64x2,
16619 putVReg( vD_addr, binop(Iop_PolynomialMulAdd32x4,
16624 putVReg( vD_addr, binop(Iop_PolynomialMulAdd16x8,
16660 putVReg( vD_addr, binop(Iop_Rol8x16, mkexpr(vA), mkexpr(vB)) );
16665 putVReg( vD_addr, binop(Iop_Rol16x8, mkexpr(vA), mkexpr(vB)) );
16670 putVReg( vD_addr, binop(Iop_Rol32x4, mkexpr(vA), mkexpr(vB)) );
16675 putVReg( vD_addr, binop(Iop_Rol64x2, mkexpr(vA), mkexpr(vB)) );
16682 putVReg( vD_addr, binop(Iop_Shl8x16, mkexpr(vA), mkexpr(vB)) );
16687 putVReg( vD_addr, binop(Iop_Shl16x8, mkexpr(vA), mkexpr(vB)) );
16692 putVReg( vD_addr, binop(Iop_Shl32x4, mkexpr(vA), mkexpr(vB)) );
16697 putVReg( vD_addr, binop(Iop_Shl64x2, mkexpr(vA), mkexpr(vB)) );
16703 assign( sh, binop(Iop_And8, mkU8(0x7),
16707 binop(Iop_ShlV128, mkexpr(vA), mkexpr(sh)) );
16713 assign( sh, binop(Iop_And8, mkU8(0x78),
16717 binop(Iop_ShlV128, mkexpr(vA), mkexpr(sh)) );
16725 putVReg( vD_addr, binop(Iop_Shr8x16, mkexpr(vA), mkexpr(vB)) );
16730 putVReg( vD_addr, binop(Iop_Shr16x8, mkexpr(vA), mkexpr(vB)) );
16735 putVReg( vD_addr, binop(Iop_Shr32x4, mkexpr(vA), mkexpr(vB)) );
16741 assign( sh, binop(Iop_And8, mkU8(0x7),
16745 binop(Iop_ShrV128, mkexpr(vA), mkexpr(sh)) );
16750 putVReg( vD_addr, binop(Iop_Sar8x16, mkexpr(vA), mkexpr(vB)) );
16755 putVReg( vD_addr, binop(Iop_Sar16x8, mkexpr(vA), mkexpr(vB)) );
16760 putVReg( vD_addr, binop(Iop_Sar32x4, mkexpr(vA), mkexpr(vB)) );
16765 putVReg( vD_addr, binop(Iop_Sar64x2, mkexpr(vA), mkexpr(vB)) );
16771 assign( sh, binop(Iop_And8, mkU8(0x78),
16775 binop(Iop_ShrV128, mkexpr(vA), mkexpr(sh)) );
16781 putVReg( vD_addr, binop(Iop_Shr64x2, mkexpr(vA), mkexpr(vB)) );
16826 putVReg( vD_addr, binop(Iop_OrV128,
16827 binop(Iop_AndV128, mkexpr(vA), unop(Iop_NotV128, mkexpr(vC))),
16828 binop(Iop_AndV128, mkexpr(vB), mkexpr(vC))) );
16843 binop(Iop_AndV128, mkexpr(vC),
16846 binop(Iop_Perm8x16, mkexpr(vA), mkexpr(vC_andF)) );
16848 binop(Iop_Perm8x16, mkexpr(vB), mkexpr(vC_andF)) );
16850 assign( mask, binop(Iop_SarN8x16,
16851 binop(Iop_ShlN8x16, mkexpr(vC), mkU8(3)),
16854 putVReg( vD_addr, binop(Iop_OrV128,
16855 binop(Iop_AndV128, mkexpr(a_perm),
16857 binop(Iop_AndV128, mkexpr(b_perm),
16872 binop(Iop_OrV128,
16873 binop(Iop_ShlV128, mkexpr(vA), mkU8(SHB_uimm4*8)),
16874 binop(Iop_ShrV128, mkexpr(vB), mkU8((16-SHB_uimm4)*8))) );
16883 assign( vrc_b, binop( Iop_AndV128, mkexpr( vC ),
16885 assign( vrc_a, binop( Iop_ShrV128,
16886 binop( Iop_AndV128, mkexpr( vC ),
16889 assign( a_perm, binop( Iop_Perm8x16, mkexpr( vA ), mkexpr( vrc_a ) ) );
16890 assign( b_perm, binop( Iop_Perm8x16, mkexpr( vB ), mkexpr( vrc_b ) ) );
16891 putVReg( vD_addr, binop( Iop_XorV128,
16906 binop(Iop_InterleaveHI8x16, mkexpr(vA), mkexpr(vB)) );
16912 binop(Iop_InterleaveHI16x8, mkexpr(vA), mkexpr(vB)) );
16918 binop(Iop_InterleaveHI32x4, mkexpr(vA), mkexpr(vB)) );
16924 binop(Iop_InterleaveLO8x16, mkexpr(vA), mkexpr(vB)) );
16930 binop(Iop_InterleaveLO16x8, mkexpr(vA), mkexpr(vB)) );
16936 binop(Iop_InterleaveLO32x4, mkexpr(vA), mkexpr(vB)) );
16947 binop(Iop_ShrV128, mkexpr(vB), mkU8(sh_uimm))))) );
16955 binop(Iop_ShrV128, mkexpr(vB), mkU8(sh_uimm))))) );
16964 binop(Iop_ShrV128, mkexpr(vB), mkU8(sh_uimm)))) );
16992 binop(Iop_CatOddLanes32x4, mkexpr(vA), mkexpr(vB) ) );
17003 binop(Iop_CatEvenLanes32x4, mkexpr(vA), mkexpr(vB) ) );
17041 binop(Iop_NarrowBin16to8x16, mkexpr(vA), mkexpr(vB)) );
17047 binop(Iop_NarrowBin32to16x8, mkexpr(vA), mkexpr(vB)) );
17053 binop(Iop_QNarrowBin16Uto8Ux16, mkexpr(vA), mkexpr(vB)) );
17060 binop(Iop_QNarrowBin32Uto16Ux8, mkexpr(vA), mkexpr(vB)) );
17071 assign( vA_tmp, binop(Iop_AndV128, mkexpr(vA),
17073 binop(Iop_SarN16x8,
17075 assign( vB_tmp, binop(Iop_AndV128, mkexpr(vB),
17077 binop(Iop_SarN16x8,
17079 putVReg( vD_addr, binop(Iop_QNarrowBin16Uto8Ux16,
17091 assign( vA_tmp, binop(Iop_AndV128, mkexpr(vA),
17093 binop(Iop_SarN32x4,
17095 assign( vB_tmp, binop(Iop_AndV128, mkexpr(vB),
17097 binop(Iop_SarN32x4,
17099 putVReg( vD_addr, binop(Iop_QNarrowBin32Uto16Ux8,
17107 binop(Iop_QNarrowBin16Sto8Sx16, mkexpr(vA), mkexpr(vB)) );
17114 binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(vA), mkexpr(vB)) );
17130 assign( a1, binop(Iop_ShlN16x8,
17131 binop(Iop_ShrN32x4, mkexpr(vA), mkU8(19)),
17133 assign( a2, binop(Iop_ShlN16x8,
17134 binop(Iop_ShrN16x8, mkexpr(vA), mkU8(11)),
17136 assign( a3, binop(Iop_ShrN16x8,
17137 binop(Iop_ShlN16x8, mkexpr(vA), mkU8(8)),
17139 assign( a_tmp, binop(Iop_OrV128, mkexpr(a1),
17140 binop(Iop_OrV128, mkexpr(a2), mkexpr(a3))) );
17142 assign( b1, binop(Iop_ShlN16x8,
17143 binop(Iop_ShrN32x4, mkexpr(vB), mkU8(19)),
17145 assign( b2, binop(Iop_ShlN16x8,
17146 binop(Iop_ShrN16x8, mkexpr(vB), mkU8(11)),
17148 assign( b3, binop(Iop_ShrN16x8,
17149 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(8)),
17151 assign( b_tmp, binop(Iop_OrV128, mkexpr(b1),
17152 binop(Iop_OrV128, mkexpr(b2), mkexpr(b3))) );
17154 putVReg( vD_addr, binop(Iop_NarrowBin32to16x8,
17162 binop(Iop_NarrowBin64to32x4, mkexpr(vA), mkexpr(vB)) );
17168 binop(Iop_QNarrowBin64Uto32Ux4, mkexpr(vA), mkexpr(vB)) );
17181 assign( vA_tmp, binop(Iop_AndV128, mkexpr(vA),
17183 binop(Iop_SarN64x2,
17185 assign( vB_tmp, binop(Iop_AndV128, mkexpr(vB),
17187 binop(Iop_SarN64x2,
17189 putVReg( vD_addr, binop(Iop_QNarrowBin64Uto32Ux4,
17198 binop(Iop_QNarrowBin64Sto32Sx4, mkexpr(vA), mkexpr(vB)) );
17219 assign( signs, binop(Iop_CmpGT8Sx16, mkexpr(zeros), mkexpr(vB)) );
17221 binop(Iop_InterleaveHI8x16, mkexpr(signs), mkexpr(vB)) );
17226 assign( signs, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vB)) );
17228 binop(Iop_InterleaveHI16x8, mkexpr(signs), mkexpr(vB)) );
17233 assign( signs, binop(Iop_CmpGT8Sx16, mkexpr(zeros), mkexpr(vB)) );
17235 binop(Iop_InterleaveLO8x16, mkexpr(signs), mkexpr(vB)) );
17240 assign( signs, binop(Iop_CmpGT16Sx8, mkexpr(zeros), mkexpr(vB)) );
17242 binop(Iop_InterleaveLO16x8, mkexpr(signs), mkexpr(vB)) );
17255 assign( z0, binop(Iop_ShlN16x8,
17256 binop(Iop_SarN16x8, mkexpr(vB), mkU8(15)),
17258 assign( z1, binop(Iop_ShrN16x8,
17259 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(1)),
17261 assign( z01, binop(Iop_InterleaveHI16x8, mkexpr(zeros),
17262 binop(Iop_OrV128, mkexpr(z0), mkexpr(z1))) );
17263 assign( z2, binop(Iop_ShrN16x8,
17264 binop(Iop_ShlN16x8,
17265 binop(Iop_ShrN16x8, mkexpr(vB), mkU8(5)),
17268 assign( z3, binop(Iop_ShrN16x8,
17269 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(11)),
17271 assign( z23, binop(Iop_InterleaveHI16x8, mkexpr(zeros),
17272 binop(Iop_OrV128, mkexpr(z2), mkexpr(z3))) );
17274 binop(Iop_OrV128,
17275 binop(Iop_ShlN32x4, mkexpr(z01), mkU8(16)),
17288 assign( z0, binop(Iop_ShlN16x8,
17289 binop(Iop_SarN16x8, mkexpr(vB), mkU8(15)),
17291 assign( z1, binop(Iop_ShrN16x8,
17292 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(1)),
17294 assign( z01, binop(Iop_InterleaveLO16x8, mkexpr(zeros),
17295 binop(Iop_OrV128, mkexpr(z0), mkexpr(z1))) );
17296 assign( z2, binop(Iop_ShrN16x8,
17297 binop(Iop_ShlN16x8,
17298 binop(Iop_ShrN16x8, mkexpr(vB), mkU8(5)),
17301 assign( z3, binop(Iop_ShrN16x8,
17302 binop(Iop_ShlN16x8, mkexpr(vB), mkU8(11)),
17304 assign( z23, binop(Iop_InterleaveLO16x8, mkexpr(zeros),
17305 binop
17307 binop(Iop_OrV128,
17308 binop(Iop_ShlN32x4, mkexpr(z01), mkU8(16)),
17314 assign( signs, binop(Iop_CmpGT32Sx4, mkexpr(zeros), mkexpr(vB)) );
17316 binop(Iop_InterleaveHI32x4, mkexpr(signs), mkexpr(vB)) );
17321 assign( signs, binop(Iop_CmpGT32Sx4, mkexpr(zeros), mkexpr(vB)) );
17323 binop(Iop_InterleaveLO32x4, mkexpr(signs), mkexpr(vB)) );
17358 binop(Iop_CipherV128, mkexpr(vA), mkexpr(vB)) );
17364 binop(Iop_CipherLV128, mkexpr(vA), mkexpr(vB)) );
17370 binop(Iop_NCipherV128, mkexpr(vA), mkexpr(vB)) );
17376 binop(Iop_NCipherLV128, mkexpr(vA), mkexpr(vB)) );
17420 assign( dst, binop( Iop_SHA256, mkexpr( vA ), mkU8( s_field) ) );
17426 putVReg( vRT_addr, binop( Iop_SHA512, mkexpr( vA ), mkU8( s_field) ) );
17485 assign(res_32, binop( Iop_Add32,
17486 binop( Iop_Add32,
17487 binop ( Iop_Add32,
17494 assign(result, binop( Iop_OrV128,
17495 (i == 0) ? binop( Iop_64HLtoV128,
17498 binop( Iop_ShlV128,
17499 binop( Iop_64HLtoV128,
17501 binop( Iop_32HLto64,
17509 assign(carry, unop(Iop_1Uto32, binop( Iop_CmpLT32U,
17577 IRExpr * res = binop(Iop_AndV128, mkV128(0), mkV128(0));
17587 binop( Iop_AndV128,
17588 binop( Iop_64HLtoV128,
17593 binop( Iop_CmpEQ32,
17595 unop( Iop_V128to64, binop( Iop_ShrV128,
17604 binop( Iop_And8,
17611 binop( Iop_64HLtoV128,
17616 binop( Iop_AndV128,
17618 binop( Iop_ShrV128,
17619 binop( Iop_AndV128,
17620 binop (Iop_64HLtoV128,
17623 binop( Iop_ShlV128,
17627 res = binop( Iop_OrV128,
17629 binop( Iop_ShlV128,
17632 vB_expr = binop( Iop_ShrV128, vB_expr, mkU8( 8 ) );
17653 assign(cin, binop( Iop_And32,
17667 assign(cin, binop( Iop_And32,
17680 assign(cin, binop( Iop_And32,
17696 assign(cin, binop( Iop_And32,
17836 putVReg( vD_addr, binop(Iop_Max32Fx4, mkexpr(vA), mkexpr(vB)) );
17841 putVReg( vD_addr, binop(Iop_Min32Fx4, mkexpr(vA), mkexpr(vB)) );
17912 assign( vD, binop(Iop_CmpEQ32Fx4, mkexpr(vA), mkexpr(vB)) );
17918 assign( vD, binop(Iop_CmpGE32Fx4, mkexpr(vA), mkexpr(vB)) );
17924 assign( vD, binop(Iop_CmpGT32Fx4, mkexpr(vA), mkexpr(vB)) );
17945 binop(Iop_CmpLE32Fx4, mkexpr(vA), mkexpr(vB))) );
17947 binop(Iop_CmpGE32Fx4, mkexpr(vA),
17953 assign( vD, binop(Iop_ShlN32x4,
17954 binop(Iop_OrV128,
17955 binop(Iop_AndV128, mkexpr(gt),
17957 binop(Iop_AndV128, mkexpr(lt),
19573 IRExpr_ITE( binop(Iop_CmpNE32, getCRbit( bi ), mkU32(0)),
20026 // assign(n2, binop(Iop_Or32, mkexpr(n1), binop(Iop_Shr32, mkexpr(n1), mkU8(1))));
20027 // assign(n3, binop(Iop_Or32, mkexpr(n2), binop(Iop_Shr32, mkexpr(n2), mkU8(2))));
20028 // assign(n4, binop(Iop_Or32, mkexpr(n3), binop(Iop_Shr32, mkexpr(n3), mkU8(4))));
20029 // assign(n5, binop(Iop_Or32, mkexpr(n4), binop(Iop_Shr32, mkexpr(n4), mkU8(8))));
20030 // assign(n6, binop(Iop_Or32, mkexpr(n5), binop(Iop_Shr32, mkexpr(n5), mkU8(16))));
20048 // binop(Iop_Sub32,
20050 // binop(Iop_And32,
20051 // binop(Iop_Shr32, mkexpr(n7), mkU8(1)),
20054 // binop(Iop_Add32,
20055 // binop(Iop_And32, mkexpr(n8), mkU32(0x33333333)),
20056 // binop(Iop_And32,
20057 // binop(Iop_Shr32, mkexpr(n8), mkU8(2)),
20060 // binop(Iop_And32,
20061 // binop(Iop_Add32,
20063 // binop(Iop_Shr32, mkexpr(n9), mkU8(4))),
20066 // binop(Iop_Add32,
20068 // binop(Iop_Shr32, mkexpr(n10), mkU8(8))));
20070 // binop(Iop_Add32,
20072 // binop(Iop_Shr32, mkexpr(n11), mkU8(16))));
20074 // binop(Iop_And32, mkexpr(n12), mkU32(0x3F));