Lines Matching refs:binop
248 static IRExpr* binop ( IROp op, IRExpr* a1, IRExpr* a2 )
1592 binop(Iop_And64,
1619 binop( mkSizedOp(tyE,Iop_CasCmpNE8),
1857 assign( guardB, binop(Iop_CmpNE8, mkexpr(guard), mkU8(0)) );
2016 assign( oldc, binop(Iop_And64,
2022 assign( tres, binop(plus,
2023 binop(plus,mkexpr(ta1),mkexpr(ta2)),
2042 stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto64(binop(xor, mkexpr(ta2),
2075 binop(Iop_And64,
2081 assign( tres, binop(minus,
2082 binop(minus,mkexpr(ta1),mkexpr(ta2)),
2101 stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto64(binop(xor, mkexpr(ta2),
2294 binop(Iop_Sub64, mkexpr(new_rsp), mkU64(szB)),
2332 virtual = binop(Iop_Add64, virtual,
2344 virtual = binop(Iop_Add64, virtual,
2411 //.. binop(Iop_CmpNE32, unop(Iop_64HIto32, mkexpr(r64)), mkU32(0)),
2493 binop(Iop_Add64,getIRegRexB(8,pfx,rm),mkU64(d))));
2507 binop(Iop_Add64,getIRegRexB(8,pfx,rm),mkU64(d))));
2532 binop(Iop_Add64, mkU64(guest_RIP_next_assumed),
2576 binop(Iop_Add64,
2578 binop(Iop_Shl64, getIReg64rexX(pfx,index_r),
2590 binop(Iop_Add64,
2591 binop(Iop_Shl64, getIReg64rexX(pfx,index_r),
2636 binop(Iop_Add64, getIRegRexB(8,pfx,base_r), mkU64(d)) ));
2651 binop(Iop_Add64,
2652 binop(Iop_Add64,
2654 binop(Iop_Shl64,
2683 binop(Iop_Add64, getIRegRexB(8,pfx,base_r), mkU64(d)) ));
2698 binop(Iop_Add64,
2699 binop(Iop_Add64,
2701 binop(Iop_Shl64,
2792 return disAMode_copy2tmp( binop(Iop_Add64, getIRegRexB(8,pfx,base_r),
2958 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2987 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
3072 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
3115 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
3258 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
3264 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
3339 assign( src128, binop(Iop_64HLto128,
3342 assign( dst128, binop(op, mkexpr(src128), mkexpr(t)) );
3353 binop(Iop_32HLto64, getIRegRDX(4), getIRegRAX(4)) );
3355 binop(op, mkexpr(src64), mkexpr(t)) );
3363 binop(Iop_16HLto32,
3366 assign( dst64, binop(op, mkexpr(src64), unop(widen1632,mkexpr(t))) );
3378 binop(op, mkexpr(src64),
3434 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
3476 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
3637 assign( shift_amt, binop(Iop_And8, shift_expr, mkU8(mask)) );
3644 assign( res64, binop(op64, mkexpr(pre64), mkexpr(shift_amt)) );
3648 binop(op64,
3650 binop(Iop_And8,
3651 binop(Iop_Sub8,
3677 assign(rot_amt64, binop(Iop_And8, shift_expr, mkU8(mask)));
3682 assign(rot_amt, binop(Iop_And8, mkexpr(rot_amt64), mkU8(8*sz-1)));
3688 binop( mkSizedOp(ty,Iop_Or8),
3689 binop( mkSizedOp(ty,Iop_Shl8),
3693 binop( mkSizedOp(ty,Iop_Shr8),
3695 binop(Iop_Sub8,mkU8(8*sz), mkexpr(rot_amt))
3705 binop( mkSizedOp(ty,Iop_Or8),
3706 binop( mkSizedOp(ty,Iop_Shr8),
3710 binop( mkSizedOp(ty,Iop_Shl8),
3712 binop(Iop_Sub8,mkU8(8*sz), mkexpr(rot_amt))
3728 assign(rot_amt64b, binop(Iop_CmpNE8, mkexpr(rot_amt64), mkU8(0)) );
3863 assign( t2m, binop(Iop_Or64, mkU64(mask), mkexpr(t2)) );
3866 assign( t2m, binop(Iop_And64, mkU64(mask), mkexpr(t2)) );
3869 assign( t2m, binop(Iop_Xor64, mkU64(mask), mkexpr(t2)) );
3898 binop(Iop_And64,
3899 binop(Iop_Shr64, mkexpr(t2), mkU8(src_val)),
3930 assign( res128, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
3944 assign( res64, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
3958 assign( res32, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
3972 assign( res16, binop(mulOp, mkexpr(t1), mkexpr(tmp)) );
4011 assign(dst1, binop(mkSizedOp(ty,Iop_And8),
4038 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8), mkexpr(dst0),
4100 assign(dst1, binop(mkSizedOp(ty,Iop_And8),
4127 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8), mkexpr(dst0),
4186 assign(t2, binop(Iop_Add8, mkexpr(t1), mkU8(1)));
4191 assign(t2, binop(Iop_Sub8, mkexpr(t1), mkU8(1)));
4215 assign(t2, binop(Iop_Add8, mkexpr(t1), mkU8(1)));
4225 assign(t2, binop(Iop_Sub8, mkexpr(t1), mkU8(1)));
4279 assign(t2, binop(mkSizedOp(ty,Iop_Add8),
4286 assign(t2, binop(mkSizedOp(ty,Iop_Sub8),
4299 assign(t2, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(8)));
4326 assign( t2, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
4362 assign(t2, binop(mkSizedOp(ty,Iop_Add8),
4374 assign(t2, binop(mkSizedOp(ty,Iop_Sub8),
4392 assign(t2, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(8)));
4419 assign( t2, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
4454 binop(Iop_Shl64, IRExpr_Get( OFFB_DFLAG, Ity_I64 ),
4493 incd = binop(Iop_Add64, mkexpr(td), mkexpr(t_inc));
4494 incs = binop(Iop_Add64, mkexpr(ts), mkexpr(t_inc));
4517 incs = binop(Iop_Add64, mkexpr(ts), mkexpr(t_inc));
4540 incd = binop(Iop_Add64, mkexpr(td), mkexpr(t_inc));
4570 incd = binop(Iop_Add64, mkexpr(td), mkexpr(t_inc));
4571 incs = binop(Iop_Add64, mkexpr(ts), mkexpr(t_inc));
4600 incd = binop(Iop_Add64, mkexpr(td), mkexpr(t_inc));
4628 cmp = binop(Iop_CmpEQ32, mkexpr(tc), mkU32(0));
4632 cmp = binop(Iop_CmpEQ64, mkexpr(tc), mkU64(0));
4639 putIReg32(R_RCX, binop(Iop_Sub32, mkexpr(tc), mkU32(1)) );
4641 putIReg64(R_RCX, binop(Iop_Sub64, mkexpr(tc), mkU64(1)) );
4690 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tg) ) );
4742 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tl) ));
4778 binop(Iop_Add16,
4779 binop(Iop_And16,
4782 binop(Iop_And16,
4783 binop(Iop_Shr16, mkexpr(old), mkU8(shift[i])),
4806 binop(Iop_Add32,
4807 binop(Iop_And32,
4810 binop(Iop_And32,
4811 binop(Iop_Shr32, mkexpr(old), mkU8(shift[i])),
4835 binop(Iop_Add64,
4836 binop(Iop_And64,
4839 binop(Iop_And64,
4840 binop(Iop_Shr64, mkexpr(old), mkU8(shift[i])),
4865 binop(Iop_Shl64, mkexpr(src64),
4873 binop(Iop_CmpEQ64, mkexpr(src64x), mkU64(0)),
4901 binop(Iop_CmpEQ64, mkexpr(src64), mkU64(0)),
4986 return binop( Iop_And32, get_fpround(), mkU32(3) );
5042 IRExpr_ITE( binop(Iop_CmpNE8, get_ST_TAG(i), mkU8(0)),
5068 IRExpr_ITE( binop(Iop_CmpNE8, get_ST_TAG(i), mkU8(0)),
5099 IRExpr_ITE(binop(Iop_CmpNE8, mkexpr(old_tag), mkU8(0)),
5116 put_ftop( binop(Iop_Sub32, get_ftop(), mkU32(1)) );
5124 put_ftop( binop(Iop_Sub32, get_ftop(), unop(Iop_1Uto32,mkexpr(cond))) );
5133 put_ftop( binop(Iop_Add32, get_ftop(), mkU32(1)) );
5141 IRExpr* cleared = binop(Iop_And64, get_C3210(), mkU64(~AMD64G_FC_MASK_C2));
5142 put_C3210( binop(Iop_Or64,
5144 binop(Iop_Shl64, e, mkU8(AMD64G_FC_SHIFT_C2))) );
5172 binop(Iop_And32,
5173 binop(Iop_Shr32, unop(Iop_64HIto32, mkexpr(i64)), mkU8(20)),
5177 binop(Iop_CmpLE32U, mkexpr(exponent), mkU32(0x43D)));
5188 binop(Iop_Or32,
5189 binop(Iop_Shl32,
5190 binop(Iop_And32, get_ftop(), mkU32(7)),
5192 binop(Iop_And32, unop(Iop_64to32, get_C3210()),
5307 binop( Iop_And64,
5309 binop(Iop_CmpF64, get_ST(0), get_ST(i))),
5326 binop(Iop_CmpLT64U,
5328 binop(Iop_Add32, mkexpr(t32), mkU32(32768))),
5376 binop( Iop_And32,
5377 binop(Iop_Shl32,
5378 binop(Iop_CmpF64,
5394 binop( Iop_And32,
5395 binop(Iop_Shl32,
5396 binop(Iop_CmpF64,
5446 binop( Iop_And32,
5447 binop(Iop_Shl32,
5448 binop(Iop_CmpF64, get_ST(0), get_ST(r_dst)),
5461 binop( Iop_And32,
5462 binop(Iop_Shl32,
5463 binop(Iop_CmpF64, get_ST(0), get_ST(r_dst)),
5514 binop(Iop_F64toF32, get_roundingmode(), get_ST(0)));
5520 binop(Iop_F64toF32, get_roundingmode(), get_ST(0)));
5571 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
5614 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
5793 binop(Iop_2xm1F64,
5817 binop(Iop_TanF64,
5828 set_C2( binop(Iop_Xor64,
5904 put_ftop( binop(Iop_Add32, get_ftop(), mkU32(1)) );
5942 binop(Iop_SqrtF64,
5956 binop(Iop_SinF64,
5966 binop(Iop_CosF64,
5969 set_C2( binop(Iop_Xor64,
5978 binop(Iop_RoundF64toInt, get_roundingmode(), get_ST(0)) );
6001 binop(isSIN ? Iop_SinF64 : Iop_CosF64,
6007 set_C2( binop(Iop_Xor64,
6132 binop( Iop_And32,
6133 binop(Iop_Shl32,
6134 binop(Iop_CmpF64, get_ST(0), get_ST(1)),
6171 binop(Iop_F64toI32S, mkU32(Irrm_ZERO), get_ST(0)) );
6178 binop(Iop_F64toI32S, get_roundingmode(), get_ST(0)) );
6184 binop(Iop_F64toI32S, get_roundingmode(), get_ST(0)) );
6385 //.. binop( Iop_And32,
6386 //.. binop(Iop_Shl32,
6387 //.. binop(Iop_CmpF64,
6400 binop( Iop_And32,
6401 binop(Iop_Shl32,
6402 binop(Iop_CmpF64,
6491 binop(Iop_F64toI64S, mkU32(Irrm_ZERO), get_ST(0)) );
6574 binop(Iop_CmpNE32, mkexpr(ew), mkU32(0)),
6702 binop( Iop_And32,
6703 binop(Iop_Shl32,
6704 binop(Iop_CmpF64, get_ST(0), get_ST(r_dst)),
6716 binop( Iop_And32,
6717 binop(Iop_Shl32,
6718 binop(Iop_CmpF64, get_ST(0), get_ST(r_dst)),
6819 binop( Iop_And32,
6820 binop(Iop_Shl32,
6821 binop(Iop_CmpF64, get_ST(0), get_ST(1)),
6877 binop(Iop_F64toI32S, mkU32(Irrm_ZERO), get_ST(0)) ));
6885 binop(Iop_F64toI32S, get_roundingmode(), get_ST(0)) ));
6892 binop(Iop_F64toI32S, get_roundingmode(), get_ST(0)) ));
6899 put_ST(0, binop(Iop_I64StoF64,
6907 binop(Iop_F64toI64S, get_roundingmode(), get_ST(0)) );
6937 binop(Iop_Or32,
6938 binop(Iop_Shl32,
6939 binop(Iop_And32, get_ftop(), mkU32(7)),
6941 binop(Iop_And32,
7159 assign(res, binop(op, argL, argR));
7235 binop(Iop_CmpLT64U,mkexpr(amt),mkU64(size)),
7236 binop(op, mkexpr(g0), mkexpr(amt8)),
7245 binop(Iop_CmpLT64U,mkexpr(amt),mkU64(size)),
7246 binop(op, mkexpr(g0), mkexpr(amt8)),
7247 binop(op, mkexpr(g0), mkU8(size-1))
7298 : binop(op, mkexpr(e0), mkU8(amt))
7303 ? binop(op, mkexpr(e0), mkU8(size-1))
7304 : binop(op, mkexpr(e0), mkU8(amt))
7340 binop( Iop_32HLto64,
7351 binop( Iop_32HLto64,
7678 assign( mask, binop(Iop_SarN8x8, mkexpr(regM), mkU8(7)) );
7681 binop(Iop_Or64,
7682 binop(Iop_And64,
7685 binop(Iop_And64,
7722 binop(Iop_CmpNE8, mkexpr(amt), mkU8(0)),
7723 binop(Iop_Or64,
7724 binop(Iop_Shl64, mkexpr(base), mkexpr(amt)),
7725 binop(Iop_Shr64, mkexpr(xtra),
7726 binop(Iop_Sub8, mkU8(64), mkexpr(amt)))
7743 binop(Iop_CmpNE8, mkexpr(amt), mkU8(0)),
7744 binop(Iop_Or64,
7745 binop(Iop_Shr64, mkexpr(base), mkexpr(amt)),
7746 binop(Iop_Shl64, mkexpr(xtra),
7747 binop(Iop_Sub8, mkU8(64), mkexpr(amt)))
7824 assign( tmpSH, binop(Iop_And8, shift_amt, mkU8(mask)) );
7825 assign( tmpSS, binop(Iop_And8,
7826 binop(Iop_Sub8, mkexpr(tmpSH), mkU8(1) ),
7838 assign( tmp64, binop(Iop_32HLto64, mkexpr(esrc), mkexpr(gsrc)) );
7840 binop(Iop_Shr64,
7841 binop(Iop_Shl64, mkexpr(tmp64), mkexpr(tmpSH)),
7844 binop(Iop_Shr64,
7845 binop(Iop_Shl64, mkexpr(tmp64), mkexpr(tmpSS)),
7850 assign( tmp64, binop(Iop_32HLto64, mkexpr(gsrc), mkexpr(esrc)) );
7851 assign( res64, binop(Iop_Shr64, mkexpr(tmp64), mkexpr(tmpSH)) );
7852 assign( rss64, binop(Iop_Shr64, mkexpr(tmp64), mkexpr(tmpSS)) );
7857 binop(Iop_32HLto64,
7858 binop(Iop_16HLto32, mkexpr(esrc), mkexpr(gsrc)),
7859 binop(Iop_16HLto32, mkexpr(gsrc), mkexpr(gsrc))
7863 binop(Iop_Shr64,
7864 binop(Iop_Shl64, mkexpr(tmp64), mkexpr(tmpSH)),
7868 binop(Iop_Shr64,
7869 binop(Iop_Shl64,
7870 binop(Iop_Shl64, unop(Iop_16Uto64, mkexpr(esrc)),
7878 binop(Iop_32HLto64,
7879 binop(Iop_16HLto32, mkexpr(gsrc), mkexpr(gsrc)),
7880 binop(Iop_16HLto32, mkexpr(gsrc), mkexpr(esrc))
7883 assign( res64, binop(Iop_Shr64, mkexpr(tmp64), mkexpr(tmpSH)) );
7885 assign( rss64, binop(Iop_Shr64,
8005 assign( t_rsp, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(288)) );
8015 assign( t_bitno1, binop(Iop_And64,
8032 binop(Iop_Add64,
8034 binop(Iop_Sar64, mkexpr(t_bitno1), mkU8(3))) );
8040 binop(Iop_And64, mkexpr(t_bitno1), mkU64(7))) );
8046 assign( t_mask, binop(Iop_Shl8, mkU8(1), mkexpr(t_bitno2)) );
8057 binop(Iop_Or8, mkexpr(t_fetched), mkexpr(t_mask)) );
8061 binop(Iop_Xor8, mkexpr(t_fetched), mkexpr(t_mask)) );
8065 binop(Iop_And8, mkexpr(t_fetched),
8086 binop(Iop_And64,
8087 binop(Iop_Shr64,
8104 putIReg64(R_RSP, binop(Iop_Add64, mkexpr(t_rsp), mkU64(288)) );
8160 assign( srcB, binop(Iop_ExpCmpNE64, mkexpr(src64), mkU64(0)) );
8211 : binop(Iop_Sub64,
8282 binop(Iop_Or64,
8283 binop(Iop_And64, mkexpr(oldflags), mkU64(AMD64G_CC_MASK_O)),
8284 binop(Iop_And64,
8285 binop(Iop_Shr64, getIReg64(R_RAX), mkU8(8)),
8306 = binop(Iop_And64, getIReg64(R_RAX), mkU64(~0xFF00ULL));
8308 = binop(Iop_Or64, binop(Iop_And64, mkexpr(flags), mkU64(mask_SZACP)),
8311 = binop(Iop_Or64, rax_with_hole,
8312 binop(Iop_Shl64, new_byte, mkU8(8)));
8521 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
8536 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
8551 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
8628 //.. assign( ta, binop(Iop_Sub32, getIReg(4, R_ESP), mkU32(sz)) );
8645 //.. putIReg(4, R_ESP, binop(Iop_Add32, mkexpr(ta), mkU32(sz)) );
8658 assign(t3, binop(Iop_Add64, mkexpr(t1), mkU64(8+d64)));
8722 : binop(op, gpart,
8737 : binop(op, gpart,
8782 binop(op, gpart,
8796 binop(op, gpart, mkexpr(epart)) );
8818 binop(op, gpart,
8832 binop(op, gpart, mkexpr(epart)) );
8893 binop( Iop_SetV128lo32,
8904 binop( Iop_SetV128lo32,
8937 binop( Iop_SetV128lo64,
8948 binop( Iop_SetV128lo64,
8992 eLeft ? binop(op, epart, gpart)
8993 : binop(op, gpart, epart) );
9142 assign( plain, binop(op, getXMMReg(gregOfRexRM(pfx,rm)),
9157 binop(
9183 binop(Iop_XorV128, mkexpr(plain), mkV128(mask)) );
9244 binop(Iop_CmpLT64U, mkexpr(amt), mkU64(size)),
9245 binop(op, mkexpr(g0), mkexpr(amt8)),
9254 binop(Iop_CmpLT64U, mkexpr(amt), mkU64(size)),
9255 binop(op, mkexpr(g0), mkexpr(amt8)),
9256 binop(op, mkexpr(g0), mkU8(size-1))
9306 : binop(op, mkexpr(e0), mkU8(amt))
9311 ? binop(op, mkexpr(e0), mkU8(size-1))
9312 : binop(op, mkexpr(e0), mkU8(amt))
9329 binop( Iop_And64,
9374 binop( Iop_64HLtoV128,
9375 binop(Iop_32HLto64, mkexpr(t3), mkexpr(t2)),
9376 binop(Iop_32HLto64, mkexpr(t1), mkexpr(t0))
9413 binop( Iop_32HLto64,
9414 binop(Iop_16HLto32, mkexpr(t3), mkexpr(t2)),
9415 binop(Iop_16HLto32, mkexpr(t1), mkexpr(t0))
9492 binop( Iop_V128HLtoV256,
9493 binop( Iop_64HLtoV128,
9494 binop(Iop_32HLto64, mkexpr(t7), mkexpr(t6)),
9495 binop(Iop_32HLto64, mkexpr(t5), mkexpr(t4)) ),
9496 binop( Iop_64HLtoV128,
9497 binop(Iop_32HLto64, mkexpr(t3), mkexpr(t2)),
9498 binop(Iop_32HLto64, mkexpr(t1), mkexpr(t0)) )
9508 binop( Iop_V128HLtoV256,
9509 binop(Iop_64HLtoV128, mkexpr(t3), mkexpr(t2)),
9510 binop(Iop_64HLtoV128, mkexpr(t1), mkexpr(t0))
9533 binop(Iop_SarN32x2,
9534 binop(Iop_InterleaveHI16x4, mkexpr(aa), mkexpr(aa)),
9537 binop(Iop_SarN32x2,
9538 binop(Iop_InterleaveLO16x4, mkexpr(aa), mkexpr(aa)),
9541 binop(Iop_SarN32x2,
9542 binop(Iop_InterleaveHI16x4, mkexpr(bb), mkexpr(bb)),
9545 binop(Iop_SarN32x2,
9546 binop(Iop_InterleaveLO16x4, mkexpr(bb), mkexpr(bb)),
9551 binop(
9553 binop(
9555 binop(
9557 binop(Iop_Mul32x2, mkexpr(aahi32s), mkexpr(bbhi32s)),
9567 binop(
9569 binop(
9571 binop(
9573 binop(Iop_Mul32x2, mkexpr(aalo32s), mkexpr(bblo32s)),
9582 binop(Iop_CatEvenLanes16x4, mkexpr(rHi), mkexpr(rLo));
9613 assign( bbNeg, binop(opSub, mkexpr(zero), mkexpr(bb)) );
9614 assign( negMask, binop(opCmpGTS, mkexpr(zero), mkexpr(aa)) );
9615 assign( posMask, binop(opCmpGTS, mkexpr(aa), mkexpr(zero)) );
9618 binop(Iop_Or64,
9619 binop(Iop_And64, mkexpr(bb), mkexpr(posMask)),
9620 binop(Iop_And64, mkexpr(bbNeg), mkexpr(negMask)) );
9651 assign( negMask, binop(opSarN, mkexpr(aa), mkU8(8*laneszB-1)) );
9654 assign( aaNeg, binop(opSub, mkexpr(zero), mkexpr(aa)) );
9656 binop(Iop_Or64,
9657 binop(Iop_And64, mkexpr(aa), mkexpr(posMask)),
9658 binop(Iop_And64, mkexpr(aaNeg), mkexpr(negMask)) ));
9670 assign(res, binop(Iop_64HLtoV128,
9697 assign(res, binop(Iop_V128HLtoV256,
9720 binop(Iop_Or64,
9721 binop(Iop_Shl64, mkexpr(hi64), mkU8(8*(8-byteShift))),
9722 binop(Iop_Shr64, mkexpr(lo64), mkU8(8*byteShift))
9762 assign( rHi, binop(Iop_Shr64, mkexpr(dHi), mkU8(8*(imm8-16))) );
9771 assign( rLo, binop(Iop_Shr64, mkexpr(dHi), mkU8(8*(imm8-24))) );
9780 assign( res, binop(Iop_64HLtoV128, mkexpr(rHi), mkexpr(rLo)));
9794 binop(Iop_CmpNE64,
9795 binop(Iop_And64,mkexpr(effective_addr),mkU64(mask)),
9982 binop( Iop_And64,
9984 binop(Iop_CmpF64, mkexpr(argL), mkexpr(argR)) ),
10025 binop( Iop_And64,
10027 binop(Iop_CmpF64,
10152 assign( lo64r, binop( Iop_Shr64, mkexpr(hi64), mkU8( 8*(imm-8) ) ));
10154 assign( hi64r, binop( Iop_Shr64, mkexpr(hi64), mkU8(8 * imm) ));
10156 binop( Iop_Or64,
10157 binop(Iop_Shr64, mkexpr(lo64),
10159 binop(Iop_Shl64, mkexpr(hi64),
10165 assign( dV, binop(Iop_64HLtoV128, mkexpr(hi64r), mkexpr(lo64r)) );
10199 assign( hi64r, binop( Iop_Shl64, mkexpr(lo64), mkU8( 8*(imm-8) ) ));
10201 assign( lo64r, binop( Iop_Shl64, mkexpr(lo64), mkU8(8 * imm) ));
10203 binop( Iop_Or64,
10204 binop(Iop_Shl64, mkexpr(hi64),
10206 binop(Iop_Shr64, mkexpr(lo64),
10212 assign( dV, binop(Iop_64HLtoV128, mkexpr(hi64r), mkexpr(lo64r)) );
10254 binop( Iop_F64toI32S, mkexpr(rmode), mkexpr(f64lo)) );
10258 binop( Iop_F64toI64S, mkexpr(rmode), mkexpr(f64lo)) );
10302 binop( Iop_F64toI32S,
10308 binop( Iop_F64toI64S,
10338 binop(Iop_Add64,mkexpr(addr),mkU64(4))) );
10376 binop(Iop_Add64,mkexpr(addr),mkU64(4))) );
10378 binop(Iop_Add64,mkexpr(addr),mkU64(8))) );
10380 binop(Iop_Add64,mkexpr(addr),mkU64(12))) );
10425 # define CVT(_t) binop( Iop_F64toF32, mkexpr(rmode), mkexpr(_t) )
10471 binop( Iop_F64toI32S, \
10521 binop( Iop_F64toI32S, \
10579 # define CVT(_t) binop( Iop_F64toI32S, \
10633 # define CVT(_t) binop( Iop_F64toI32S, \
10682 # define CVT(_t) binop( Iop_F64toF32, \
10732 # define CVT(_t) binop( Iop_F64toF32, \
10784 putIReg32(rG, binop(Iop_16HLto32, mkexpr(t3), mkexpr(t2)));
10820 assign(res, xIsH ? binop(Iop_64HLtoV128, mkexpr(s1), mkexpr(d1))
10821 : binop(Iop_64HLtoV128, mkexpr(s0), mkexpr(d0)));
10861 assign(rV, binop(Iop_V128HLtoV256, mkexpr(rVhi), mkexpr(rVlo)));
10899 assign(rV, binop(Iop_V128HLtoV256, mkexpr(rVhi), mkexpr(rVlo)));
10920 assign(res, binop( Iop_64HLtoV128,
10938 assign(rV, binop(Iop_V128HLtoV256, mkexpr(rVhi), mkexpr(rVlo)));
10958 assign ( res, binop( Iop_OrV128,
10959 binop( Iop_AndV128, mkexpr(sV),
10961 binop( Iop_AndV128, mkexpr(dV),
10976 assign(rV, binop(Iop_V128HLtoV256, mkexpr(rVhi), mkexpr(rVlo)));
10991 assign ( res, binop( Iop_OrV128,
10992 binop( Iop_AndV128, mkexpr(sV),
10994 binop( Iop_AndV128, mkexpr(dV),
11009 assign(rV, binop(Iop_V128HLtoV256, mkexpr(rVhi), mkexpr(rVlo)));
11028 assign ( res, binop( Iop_OrV128,
11029 binop( Iop_AndV128, mkexpr(sV),
11031 binop( Iop_AndV128, mkexpr(dV),
11046 assign(res, binop(Iop_64HLtoV128,
11047 binop( Iop_MullU32, mkexpr(d2), mkexpr(s2)),
11048 binop( Iop_MullU32, mkexpr(d0), mkexpr(s0)) ));
11062 assign(res, binop(Iop_V128HLtoV256,
11078 assign(res, binop(Iop_64HLtoV128,
11079 binop( Iop_MullS32, mkexpr(d2), mkexpr(s2)),
11080 binop( Iop_MullS32, mkexpr(d0), mkexpr(s0)) ));
11094 assign(res, binop(Iop_V128HLtoV256,
11118 assign( res, binop(Iop_64HLtoV128, mkexpr(resHi), mkexpr(resLo))) ;
11130 assign(res, binop(Iop_V128HLtoV256,
11153 assign( res, binop(Iop_64HLtoV128, mkexpr(a1), mkexpr(s0)) );
11270 assign(dV, xIsH ? binop(Iop_64HLtoV128, mkexpr(dVmut), mkexpr(sVcon))
11271 : binop(Iop_64HLtoV128, mkexpr(sVcon), mkexpr(dVmut)) );
11477 binop(Iop_CmpNE64, unop(Iop_32Uto64,mkexpr(ew)), mkU64(0)),
11495 assign(halfshift, binop(Iop_Shl64,
11499 assign(tmp128, binop(Iop_64HLtoV128, mkU64(0), mkexpr(halfshift)));
11501 assign(tmp128, binop(Iop_64HLtoV128, mkexpr(halfshift), mkU64(0)));
11506 assign( res, binop(Iop_OrV128,
11508 binop(Iop_AndV128, mkexpr(v128), mkV128(mask))) );
11523 binop(Iop_64HLtoV128,
11543 assign(res, binop(Iop_V128HLtoV256,
11569 binop(Iop_64HLtoV128,
11570 binop(Iop_SarN8x8,
11573 binop(Iop_SarN8x8,
11577 assign( newdata, binop(Iop_OrV128,
11578 binop(Iop_AndV128,
11581 binop(Iop_AndV128,
11604 assign( t0, binop( Iop_And32,
11605 binop(Iop_Shr32, getXMMRegLane32(rE,0), mkU8(31)),
11607 assign( t1, binop( Iop_And32,
11608 binop(Iop_Shr32, getXMMRegLane32(rE,1), mkU8(30)),
11610 assign( t2, binop( Iop_And32,
11611 binop(Iop_Shr32, getXMMRegLane32(rE,2), mkU8(29)),
11613 assign( t3, binop( Iop_And32,
11614 binop(Iop_Shr32, getXMMRegLane32(rE,3), mkU8(28)),
11616 putIReg32( rG, binop(Iop_Or32,
11617 binop(Iop_Or32, mkexpr(t0), mkexpr(t1)),
11618 binop(Iop_Or32, mkexpr(t2), mkexpr(t3)) ) );
11639 assign( t0, binop( Iop_And32,
11640 binop(Iop_Shr32, getYMMRegLane32(rE,0), mkU8(31)),
11642 assign( t1, binop( Iop_And32,
11643 binop(Iop_Shr32, getYMMRegLane32(rE,1), mkU8(30)),
11645 assign( t2, binop( Iop_And32,
11646 binop(Iop_Shr32, getYMMRegLane32(rE,2), mkU8(29)),
11648 assign( t3, binop( Iop_And32,
11649 binop(Iop_Shr32, getYMMRegLane32(rE,3), mkU8(28)),
11651 assign( t4, binop( Iop_And32,
11652 binop(Iop_Shr32, getYMMRegLane32(rE,4), mkU8(27)),
11654 assign( t5, binop( Iop_And32,
11655 binop(Iop_Shr32, getYMMRegLane32(rE,5), mkU8(26)),
11657 assign( t6, binop( Iop_And32,
11658 binop(Iop_Shr32, getYMMRegLane32(rE,6), mkU8(25)),
11660 assign( t7, binop( Iop_And32,
11661 binop(Iop_Shr32, getYMMRegLane32(rE,7), mkU8(24)),
11663 putIReg32( rG, binop(Iop_Or32,
11664 binop(Iop_Or32,
11665 binop(Iop_Or32, mkexpr(t0), mkexpr(t1)),
11666 binop(Iop_Or32, mkexpr(t2), mkexpr(t3)) ),
11667 binop(Iop_Or32,
11668 binop(Iop_Or32, mkexpr(t4), mkexpr(t5)),
11669 binop(Iop_Or32, mkexpr(t6), mkexpr(t7)) ) ) );
11684 assign( t0, binop( Iop_And32,
11685 binop(Iop_Shr32, getXMMRegLane32(rE,1), mkU8(31)),
11687 assign( t1, binop( Iop_And32,
11688 binop(Iop_Shr32, getXMMRegLane32(rE,3), mkU8(30)),
11690 putIReg32( rG, binop(Iop_Or32, mkexpr(t0), mkexpr(t1) ) );
11707 assign( t0, binop( Iop_And32,
11708 binop(Iop_Shr32, getYMMRegLane32(rE,1), mkU8(31)),
11710 assign( t1, binop( Iop_And32,
11711 binop(Iop_Shr32, getYMMRegLane32(rE,3), mkU8(30)),
11713 assign( t2, binop( Iop_And32,
11714 binop(Iop_Shr32, getYMMRegLane32(rE,5), mkU8(29)),
11716 assign( t3, binop( Iop_And32,
11717 binop(Iop_Shr32, getYMMRegLane32(rE,7), mkU8(28)),
11719 putIReg32( rG, binop(Iop_Or32,
11720 binop(Iop_Or32, mkexpr(t0), mkexpr(t1)),
11721 binop
12276 binop(Iop_F64toF32,
12283 binop(Iop_F64toF32,
12313 binop(Iop_F64toF32,
12333 binop(Iop_F64toF32,
12335 binop(Iop_I64StoF64, mkexpr(rmode), mkexpr(arg64)) ) );
12380 binop( Iop_I64StoF64,
12474 assign(f32hi, loadLE(Ity_F32, binop( Iop_Add64,
12491 binop( Iop_32HLto64,
12492 binop( Iop_F64toI32S,
12495 binop( Iop_F64toI32S,
12560 assign(f64hi, loadLE(Ity_F64, binop( Iop_Add64,
12577 binop( Iop_32HLto64,
12578 binop( Iop_F64toI32S, mkexpr(rmode), mkexpr(f64hi) ),
12579 binop( Iop_F64toI32S, mkexpr(rmode), mkexpr(f64lo) )
12858 binop( Iop_F64toF32, mkexpr(rmode), mkexpr(f64lo) )
13531 binop( Iop_And64,
14458 binop( Iop_MullU32, mkexpr(t0), mkexpr(t1) ) );
14654 ( rG, binop(Iop_64HLtoV128,mkexpr(d0),mkexpr(d0)) );
14678 assign( d1, loadLE(Ity_I64, binop(Iop_Add64,
14791 assign( leftV, binop(Iop_64HLtoV128, mkexpr(s0), mkexpr(d0)) );
14792 assign( rightV, binop(Iop_64HLtoV128, mkexpr(s1), mkexpr(d1)) );
15025 unop(Iop_Not64, binop(Iop_SarN8x8,mkexpr(sHi),mkU8(7))));
15029 binop(Iop_SarN8x8,
15030 binop(Iop_ShlN8x8,mkexpr(sHi),mkU8(4)),
15033 assign(sAnd7hi, binop(Iop_And64,mkexpr(sHi),mkexpr(sevens)));
15037 binop(
15039 binop(Iop_And64,
15040 binop(Iop_Perm8x8,mkexpr(dHi),mkexpr(sAnd7hi)),
15042 binop(Iop_And64,
15043 binop(Iop_Perm8x8,mkexpr(dLo),mkexpr(sAnd7hi)),
15046 assign(rHi, binop(Iop_And64,mkexpr(permdHi),mkexpr(mask0x80hi)) );
15052 unop(Iop_Not64, binop(Iop_SarN8x8,mkexpr(sLo),mkU8(7))));
15056 binop(Iop_SarN8x8,
15057 binop(Iop_ShlN8x8,mkexpr(sLo),mkU8(4)),
15060 assign(sAnd7lo, binop(Iop_And64,mkexpr(sLo),mkexpr(sevens)));
15064 binop(
15066 binop(Iop_And64,
15067 binop(Iop_Perm8x8,mkexpr(dHi),mkexpr(sAnd7lo)),
15069 binop(Iop_And64,
15070 binop(Iop_Perm8x8,mkexpr(dLo),mkexpr(sAnd7lo)),
15073 assign(rLo, binop(Iop_And64,mkexpr(permdLo),mkexpr(mask0x80lo)) );
15075 assign(res, binop(Iop_64HLtoV128, mkexpr(rHi), mkexpr(rLo)));
15088 assign(res, binop(Iop_V128HLtoV256,
15158 binop(Iop_64HLtoV128,
15159 binop(opV64,
15160 binop(opCatE,mkexpr(sHi),mkexpr(sLo)),
15161 binop(opCatO,mkexpr(sHi),mkexpr(sLo)) ),
15162 binop(opV64,
15163 binop(opCatE,mkexpr(dHi),mkexpr(dLo)),
15164 binop(opCatO,mkexpr(dHi),mkexpr(dLo)) ) ) );
15222 binop(Iop_V128HLtoV256,
15223 binop(Iop_64HLtoV128,
15224 binop(opV64,
15225 binop(opCatE,mkexpr(s3),mkexpr(s2)),
15226 binop(opCatO,mkexpr(s3),mkexpr(s2)) ),
15227 binop(opV64,
15228 binop(opCatE,mkexpr(d3),mkexpr(d2)),
15229 binop(opCatO,mkexpr(d3),mkexpr(d2)) ) ),
15230 binop(Iop_64HLtoV128,
15231 binop(opV64,
15232 binop(opCatE,mkexpr(s1),mkexpr(s0)),
15233 binop(opCatO,mkexpr(s1),mkexpr(s0)) ),
15234 binop(opV64,
15235 binop(opCatE,mkexpr(d1),mkexpr(d0)),
15236 binop(opCatO,mkexpr(d1),mkexpr(d0)) ) ) ) );
15248 assign( sVoddsSX, binop(Iop_SarN16x8, mkexpr(sV), mkU8(8)) );
15249 assign( sVevensSX, binop(Iop_SarN16x8,
15250 binop(Iop_ShlN16x8, mkexpr(sV), mkU8(8)),
15252 assign( dVoddsZX, binop(Iop_ShrN16x8, mkexpr(dV), mkU8(8)) );
15253 assign( dVevensZX, binop(Iop_ShrN16x8,
15254 binop(Iop_ShlN16x8, mkexpr(dV), mkU8(8)),
15258 assign( res, binop(Iop_QAdd16Sx8,
15259 binop(Iop_Mul16x8, mkexpr(sVoddsSX), mkexpr(dVoddsZX)),
15260 binop(Iop_Mul16x8, mkexpr(sVevensSX), mkexpr(dVevensZX))
15275 assign(res, binop(Iop_V128HLtoV256,
15352 binop(
15355 binop(
15358 binop(Iop_And64, mkexpr(sV), mkU64(0x0707070707070707ULL))
15361 unop(Iop_Not64, binop(Iop_SarN8x8, mkexpr(sV), mkU8(7)))
15446 binop(opV64,
15447 binop(opCatE,mkexpr(sV),mkexpr(dV)),
15448 binop(opCatO,mkexpr(sV),mkexpr(dV))
15512 binop(Iop_SarN16x4, mkexpr(sV), mkU8(8)) );
15514 binop(Iop_SarN16x4,
15515 binop(Iop_ShlN16x4, mkexpr(sV), mkU8(8)),
15518 binop(Iop_ShrN16x4, mkexpr(dV), mkU8(8)) );
15520 binop(Iop_ShrN16x4,
15521 binop(Iop_ShlN16x4, mkexpr(dV), mkU8(8)),
15526 binop(Iop_QAdd16Sx4,
15527 binop(Iop_Mul16x4, mkexpr(sVoddsSX), mkexpr(dVoddsZX)),
15528 binop(Iop_Mul16x4, mkexpr(sVevensSX), mkexpr(dVevensZX))
15583 binop(Iop_64HLtoV128,
15667 binop(Iop_64HLtoV128,
15884 binop(Iop_Or64,
15885 binop(Iop_Shr64, mkexpr(sV), mkU8(8*d64)),
15886 binop(Iop_Shl64, mkexpr(dV), mkU8(8*(8-d64))
15893 assign( res, binop(Iop_Shr64, mkexpr(dV), mkU8(8*(d64-8))) );
15979 binop(Iop_Shl64,
15981 binop(Iop_CmpEQ64,
16029 binop(Iop_Or64,
16030 binop(Iop_Shl64,
16032 binop(Iop_CmpEQ64, mkexpr(res64), mkU64(0))),
16034 binop(Iop_Shl64,
16036 binop(Iop_CmpEQ64, mkexpr(src64), mkU64(0))),
16090 binop(Iop_Or64,
16091 binop(Iop_Shl64,
16093 binop(Iop_CmpEQ64, mkexpr(res64), mkU64(0))),
16095 binop(Iop_Shl64,
16097 binop(Iop_CmpEQ64, mkexpr(src64), mkU64(0))),
16143 assign(mask, binop(opSAR, mkexpr(vec0), mkexpr(sh)));
16149 assign(res, binop(Iop_OrV128,
16150 binop(Iop_AndV128, mkexpr(vecE), mkexpr(mask)),
16151 binop(Iop_AndV128, mkexpr(vecG), mkexpr(notmask))));
16170 assign(mask, binop(Iop_V128HLtoV256,
16171 binop(opSAR128, mkexpr(vec0Hi), mkexpr(sh)),
16172 binop(opSAR128, mkexpr(vec0Lo), mkexpr(sh))));
16178 assign(res, binop(Iop_OrV256,
16179 binop(Iop_AndV256, mkexpr(vecE), mkexpr(mask)),
16180 binop(Iop_AndV256, mkexpr(vecG), mkexpr(notmask))));
16286 binop(Iop_OrV128,
16287 binop(Iop_InterleaveLO64x2,
16289 binop(Iop_InterleaveHI64x2,
16294 binop(Iop_OrV128,
16295 binop(Iop_InterleaveLO64x2,
16297 binop(Iop_InterleaveHI64x2,
16307 binop(Iop_Sar64, mkexpr(and64), mkU8(63))));
16311 binop(Iop_Sar64, mkexpr(andn64), mkU8(63))));
16320 assign(t1, binop(Iop_And64, mkexpr(and64), mkexpr(t0)));
16321 assign(t2, binop(Iop_And64, mkexpr(andn64), mkexpr(t0)));
16332 binop(Iop_Sar64,
16333 binop(Iop_Or64,
16334 binop(Iop_Sub64, mkU64(0), mkexpr(and64)),
16339 binop(Iop_Sar64,
16340 binop(Iop_Or64,
16341 binop(Iop_Sub64, mkU64(0), mkexpr(andn64)),
16349 binop(Iop_Or64,
16350 binop(Iop_And64, mkexpr(z64), mkU64(AMD64G_CC_MASK_Z)),
16351 binop(Iop_And64, mkexpr(c64), mkU64(AMD64G_CC_MASK_C))));
16402 assign(andV, binop(Iop_AndV128, mkexpr(vecE), mkexpr(vecG)));
16403 assign(andnV, binop(Iop_AndV128,
16405 binop(Iop_XorV128, mkexpr(vecG),
16451 assign(andV, binop(Iop_AndV256, mkexpr(vecE), mkexpr(vecG)));
16452 assign(andnV, binop(Iop_AndV256,
16464 assign( andV128, binop( Iop_OrV128, mkexpr(andVhi), mkexpr(andVlo) ) );
16465 assign( andnV128, binop( Iop_OrV128, mkexpr(andnVhi), mkexpr(andnVlo) ) );
16499 ? binop( Iop_InterleaveLO8x16,
16501 : binop( Iop_SarN16x8,
16502 binop( Iop_ShlN16x8,
16503 binop( Iop_InterleaveLO8x16,
16540 = binop( Iop_V128HLtoV256,
16541 binop( Iop_InterleaveHI8x16,
16543 binop( Iop_InterleaveLO8x16,
16547 res = binop( Iop_SarN16x16,
16548 binop( Iop_ShlN16x16, res, mkU8(8) ), mkU8(8) );
16582 = binop( Iop_InterleaveLO16x8,
16585 res = binop(Iop_SarN32x4,
16586 binop(Iop_ShlN32x4, res, mkU8(16)), mkU8(16));
16619 = binop( Iop_V128HLtoV256,
16620 binop( Iop_InterleaveHI16x8,
16622 binop( Iop_InterleaveLO16x8,
16625 res = binop(Iop_SarN32x8,
16626 binop(Iop_ShlN32x8, res, mkU8(16)), mkU8(16));
16658 ( rG, binop( Iop_64HLtoV128,
16691 putYMMReg( rG, binop( Iop_V128HLtoV256,
16692 binop( Iop_64HLtoV128,
16695 binop( Iop_64HLtoV128,
16730 ( rG, binop( Iop_InterleaveLO16x8,
16732 binop( Iop_InterleaveLO16x8,
16764 putYMMReg( rG, binop( Iop_V128HLtoV256,
16765 binop( Iop_InterleaveHI16x8,
16767 binop( Iop_InterleaveLO16x8,
16769 binop( Iop_InterleaveLO16x8,
16771 binop( Iop_InterleaveLO16x8,
16810 ? binop( Iop_InterleaveLO32x4,
16812 : binop( Iop_64HLtoV128,
16853 res = binop( Iop_V128HLtoV256,
16854 binop( Iop_InterleaveHI32x4,
16856 binop( Iop_InterleaveLO32x4,
16862 res = binop( Iop_V128HLtoV256,
16863 binop( Iop_64HLtoV128,
16866 binop( Iop_64HLtoV128,
16906 = binop(Iop_InterleaveLO8x16,
16908 binop(Iop_InterleaveLO8x16,
16911 res = binop(Iop_SarN32x4,
16912 binop(Iop_ShlN32x4, res, mkU8(24)), mkU8(24));
16948 = binop( Iop_V128HLtoV256,
16949 binop(Iop_InterleaveHI8x16,
16951 binop(Iop_InterleaveLO8x16,
16953 binop(Iop_InterleaveLO8x16,
16955 binop(Iop_InterleaveLO8x16,
16958 res = binop(Iop_SarN32x8,
16959 binop(Iop_ShlN32x8, res, mkU8(24)), mkU8(24));
16991 ( rG, binop( Iop_64HLtoV128,
17023 ( rG, binop( Iop_V128HLtoV256,
17024 binop( Iop_64HLtoV128,
17033 binop( Iop_64HLtoV128,
17075 ( rG, binop( Iop_InterleaveLO8x16,
17077 binop( Iop_InterleaveLO8x16,
17079 binop( Iop_InterleaveLO8x16,
17112 ( rG, binop( Iop_V128HLtoV256,
17113 binop( Iop_InterleaveHI8x16,
17115 binop( Iop_InterleaveLO8x16,
17117 binop( Iop_InterleaveLO8x16,
17119 binop( Iop_InterleaveLO8x16,
17121 binop( Iop_InterleaveLO8x16,
17123 binop( Iop_InterleaveLO8x16,
17557 binop( Iop_QNarrowBin32Sto16Ux8,
17740 binop( Iop_Mul32x4, mkexpr(argL), mkexpr(argR)) );
17808 assign(valG0, binop(Iop_And64, getIRegG(8, pfx, modrm),
18035 binop(Iop_CmpEQ8x16, mkexpr(argL), mkV128(0)))));
18039 binop(Iop_CmpEQ8x16, mkexpr(argR), mkV128(0)))));
18056 assign(zmaskL_zero, binop(Iop_ExpCmpNE32, mkexpr(zmaskL), mkU32(0)));
18059 assign(validL, binop(Iop_Sub32,
18061 binop(Iop_Shl32, mkU32(1), ctzL),
18068 assign(zmaskR_zero, binop(Iop_ExpCmpNE32, mkexpr(zmaskR), mkU32(0)));
18070 assign(validR, binop(Iop_Sub32,
18072 binop(Iop_Shl32, mkU32(1), ctzR),
18079 binop(Iop_CmpEQ8x16, mkexpr(argL),
18084 IRExpr *intRes1_a = binop(Iop_And32, boolResII,
18085 binop(Iop_And32,
18089 IRExpr *intRes1_b = unop(Iop_Not32, binop(Iop_Or32,
18092 IRExpr *intRes1 = binop(Iop_And32, mkU32(0xFFFF),
18093 binop(Iop_Or32, intRes1_a, intRes1_b));
18098 assign(intRes2, binop(Iop_And32, mkU32(0xFFFF),
18099 binop(Iop_Xor32, intRes1, mkexpr(validL))));
18104 IRExpr *newECX = math_CTZ32(binop(Iop_Or32,
18113 IRExpr *c_bit = IRExpr_ITE( binop(Iop_ExpCmpNE32, mkexpr(intRes2),
18126 IRExpr *o_bit = binop(Iop_Shl32, binop(Iop_And32, mkexpr(intRes2),
18132 assign(cc, widenUto64(binop(Iop_Or32,
18133 binop(Iop_Or32, c_bit, z_bit),
18134 binop(Iop_Or32, s_bit, o_bit))));
18263 putIReg64(R_RCX, binop(Iop_And64,
18264 binop(Iop_Shr64, mkexpr(resT), mkU8(16)),
18274 binop(Iop_And64, mkexpr(resT), mkU64(0xFFFF))
18292 assign(halfshift, binop(Iop_Shl64,
18296 assign(tmp128, binop(Iop_64HLtoV128, mkU64(0), mkexpr(halfshift)));
18298 assign(tmp128, binop(Iop_64HLtoV128, mkexpr(halfshift), mkU64(0)));
18303 assign( res, binop(Iop_OrV128,
18305 binop(Iop_AndV128, mkexpr(v128), mkV128(mask))) );
18336 assign(res, binop( Iop_OrV128,
18338 binop( Iop_AndV128, mkexpr(v128), mkV128(mask) ) ) );
18351 assign(withZs, binop(Iop_64HLtoV128, mkU64(0), mkexpr(u64)));
18355 assign( withZs, binop(Iop_64HLtoV128, mkexpr(u64), mkU64(0)));
18359 assign( res, binop( Iop_OrV128,
18361 binop( Iop_AndV128, mkexpr(v128), mkV128(mask) ) ) );
18419 binop( Iop_Shr32, mkexpr(sel_lane), mkU8(((imm8 & 3)*8)) ) );
18424 binop(Iop_And32, mkexpr(shr_lane), mkU32(255)) ) );
18448 assign( and_vec, binop( Iop_AndV128,
18454 assign( sum_vec, binop( Iop_Add64F0x2,
18455 binop( Iop_InterleaveHI64x2,
18457 binop( Iop_InterleaveLO64x2,
18460 assign(res, binop( Iop_AndV128,
18461 binop( Iop_InterleaveLO64x2,
18484 binop( Iop_AndV128,
18493 binop( Iop_InterleaveHI32x4,
18495 binop( Iop_InterleaveLO32x4,
18499 assign( res, binop( Iop_AndV128,
18502 binop( Iop_InterleaveHI32x4,
18504 binop( Iop_InterleaveLO32x4,
18527 assign(src_masked, binop(Iop_AndV128, mkexpr(src_vec), mkexpr(src_maskV)));
18528 assign(dst_masked, binop(Iop_AndV128, mkexpr(dst_vec), mkexpr(dst_maskV)));
18560 assign(res, binop(Iop_64HLtoV128, mkexpr(resHi), mkexpr(resLo)));
18635 assign(res, binop(Iop_64HLtoV128, mkexpr(t3), mkexpr(t2)));
18694 binop(Iop_Add64, mkexpr(addr), mkU64(0) )));
18696 binop(Iop_Add64, mkexpr(addr), mkU64(4) )));
18698 binop(Iop_Add64, mkexpr(addr), mkU64(8) )));
18700 binop(Iop_Add64, mkexpr(addr), mkU64(12) )));
18714 assign(res0, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src0)) );
18715 assign(res1, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src1)) );
18716 assign(res2, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src2)) );
18717 assign(res3, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src3)) );
18756 binop(Iop_Add64, mkexpr(addr), mkU64(0) )));
18758 binop(Iop_Add64, mkexpr(addr), mkU64(8) )));
18772 assign(res0, binop(Iop_RoundF64toInt, mkexpr(rm), mkexpr(src0)) );
18773 assign(res1, binop(Iop_RoundF64toInt, mkexpr(rm), mkexpr(src1)) );
18822 assign(res, binop(isD ? Iop_RoundF64toInt : Iop_RoundF32toInt,
19621 assign(t2, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(sz)));
19643 putIReg64(R_RSP, binop(Iop_Add64, mkexpr(t2), mkU64(sz)));
19700 assign( t1, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
19966 putIReg64(R_RSP, binop(Iop_Add64, mkexpr(t1), mkU64(sz)) );
20032 binop(mkSizedOp(ty,Iop_Sar8),
20056 assign( t1, binop(Iop_Sub64,getIReg64(R_RSP),mkU64(sz)) );
20065 assign( t3, binop(Iop_Or64,
20067 binop(Iop_And64,
20074 assign( t4, binop(Iop_Or64,
20076 binop(Iop_And64,
20077 binop(Iop_Shl64, IRExpr_Get(OFFB_IDFLAG,Ity_I64),
20084 assign( t5, binop(Iop_Or64,
20086 binop(Iop_And64,
20087 binop(Iop_Shl64, IRExpr_Get(OFFB_ACFLAG,Ity_I64),
20113 putIReg64(R_RSP, binop(Iop_Add64, mkexpr(t2), mkU64(sz)));
20119 binop(Iop_And64,
20134 binop(Iop_And64,
20135 binop(Iop_Shr64, mkexpr(t1), mkU8(10)),
20146 binop(Iop_And64,
20147 binop(Iop_Shr64, mkexpr(t1), mkU8(21)),
20158 binop(Iop_And64,
20159 binop(Iop_Shr64, mkexpr(t1), mkU8(18)),
20488 assign(t2, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(8)));
20493 putIReg64(R_RSP, binop(Iop_Sub64, mkexpr(t2), mkU64(d64)));
20512 putIReg64(R_RSP, binop(Iop_Add64, mkexpr(t1), mkU64(8)) );
20640 putIReg32(R_RCX, binop(Iop_Sub32,
20644 putIReg64(R_RCX, binop(Iop_Sub64, getIReg64(R_RCX), mkU64(1)));
20652 cond = binop(Iop_CmpNE64, count, mkU64(0));
20683 stmt( IRStmt_Exit( binop(Iop_CmpEQ64,
20693 stmt( IRStmt_Exit( binop(Iop_CmpEQ64,
20807 assign(t1, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(8)));
20866 assign( t2, binop(Iop_Xor64, mkexpr(t1),
20871 assign( t2, binop(Iop_And64, mkexpr(t1),
20876 assign( t2, binop(Iop_Or64, mkexpr(t1),
20966 binop(Iop_Or64,
20967 binop(Iop_Shr64,
20968 binop(Iop_And64,mkexpr(t1),mkexpr(m8)),
20970 binop(Iop_And64,
20971 binop(Iop_Shl64,mkexpr(t1),mkU8(8)),
20978 binop(Iop_Or64,
20979 binop(Iop_Shr64,
20980 binop(Iop_And64,mkexpr(s8),mkexpr(m16)),
20982 binop(Iop_And64,
20983 binop(Iop_Shl64,mkexpr(s8),mkU8(16)),
20990 binop(Iop_Or64,
20991 binop(Iop_Shr64,
20992 binop(Iop_And64,mkexpr(s16),mkexpr(m32)),
20994 binop(Iop_And64,
20995 binop(Iop_Shl64,mkexpr(s16),mkU8(32)),
21003 binop(
21005 binop(Iop_Shl32, mkexpr(t1), mkU8(24)),
21006 binop(
21008 binop(Iop_And32, binop(Iop_Shl32, mkexpr(t1), mkU8(8)),
21010 binop(Iop_Or32,
21011 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(8)),
21013 binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(24)),
21021 binop(Iop_Or16,
21022 binop(Iop_Shl16, mkexpr(t1), mkU8(8)),
21023 binop(Iop_Shr16, mkexpr(t1), mkU8(8)) ));
21101 stmt( IRStmt_Exit(binop(Iop_CmpNE32, mkexpr(t1), mkU32(0)),
21722 binop(opCasCmpEQ,
21723 binop(opOR,
21724 binop(opXOR, mkexpr(oldHi), mkexpr(expdHi)),
21725 binop(opXOR, mkexpr(oldLo), mkexpr(expdLo))
21764 binop(Iop_Or64,
21765 binop(Iop_And64, mkexpr(flags_old),
21767 binop(Iop_Shl64,
21768 binop(Iop_And64,
22155 ? binop(op, mkexpr(tSR), mkexpr(tSL))
22156 : binop(op, mkexpr(tSL), mkexpr(tSR)));
22251 binop(Iop_CmpLT64U, mkexpr(amt), mkU64(size)),
22252 binop(op, mkexpr(g0), mkexpr(amt8)),
22261 binop(Iop_CmpLT64U, mkexpr(amt), mkU64(size)),
22262 binop(op, mkexpr(g0), mkexpr(amt8)),
22263 binop(op, mkexpr(g0), mkU8(size-1))
22325 binop(Iop_CmpLT64U, mkexpr(amt), mkU64(size)),
22326 binop(op, mkexpr(g0), mkexpr(amt8)),
22327 binop(Iop_V128HLtoV256, mkV128(0), mkV128(0))
22335 binop(Iop_CmpLT64U, mkexpr(amt), mkU64(size)),
22336 binop(op, mkexpr(g0), mkexpr(amt8)),
22337 binop(op, mkexpr(g0), mkU8(size-1))
22433 binop(size == 32 ? Iop_CmpLT32U : Iop_CmpLT64U,
22436 binop(op, mkexpr(sVs[i]),
22439 op == Iop_Sar32 ? binop(op, mkexpr(sVs[i]), mkU8(size-1))
22501 : binop(op, mkexpr(e0), mkU8(amt))
22506 ? binop(op, mkexpr(e0), mkU8(size-1))
22507 : binop(op, mkexpr(e0), mkU8(amt))
22558 ? binop(Iop_V128HLtoV256, mkV128(0), mkV128(0))
22559 : binop(op, mkexpr(e0), mkU8(amt))
22564 ? binop(op, mkexpr(e0), mkU8(size-1))
22565 : binop(op, mkexpr(e0), mkU8(amt))
22597 putXMMReg( rG, binop(op, vpart, getXMMReg(rE)) );
22608 putXMMReg( rG, binop(op, vpart, mkexpr(epart)) );
22657 binop(Iop_SetV128lo64,
22704 binop(Iop_SetV128lo32,
22734 putXMMReg( rG, binop(op, vpart, getXMMReg(rE)) );
22745 putXMMReg( rG, binop(op, vpart, mkexpr(epart)) );
22822 assign(plain, preSwap ? binop(op, mkexpr(argR), mkexpr(argL))
22823 : binop(op, mkexpr(argL), mkexpr(argR)));
22842 putYMMRegLoAndZU( rG, binop(Iop_XorV128, mkexpr(plain),
22861 binop(Iop_OrV128,
22862 binop(Iop_AndV128,
22865 binop(Iop_AndV128, mkexpr(argL), mkexpr(notMask))));
22868 binop(Iop_OrV128,
22869 binop(Iop_AndV128,
22872 binop(Iop_AndV128, mkexpr(argL), mkexpr(notMask))));
22937 assign(plain, binop( Iop_V128HLtoV256,
22938 binop(op, mkexpr(argLhi), mkexpr(argRhi)),
22939 binop(op, mkexpr(argLlo), mkexpr(argRlo)) ) );
23068 ? binop(op, mkexpr(tSR), mkexpr(tSL))
23069 : binop(op, mkexpr(tSL), mkexpr(tSR)));
23256 # define CVT(_t) binop( Iop_F64toF32, mkexpr(rmode), \
23275 assign( res, binop( Iop_V128HLtoV256,
23276 binop( op, mkexpr(tRhi), mkexpr(tLhi) ),
23277 binop( op, mkexpr(tRlo), mkexpr(tLlo) ) ) );
23406 assign(res, binop(Iop_64HLtoV128,
23441 assign( res, binop( Iop_64HLtoV128,
23443 binop(Iop_32HLto64,
23544 assign(res, binop(Iop_64HLtoV128,
23574 assign( res, binop( Iop_64HLtoV128,
23576 binop(Iop_32HLto64,
23676 assign(res, binop(Iop_64HLtoV128,
23697 assign(res, binop(Iop_64HLtoV128,
23863 assign(res, binop(Iop_64HLtoV128,
23884 assign(res, binop(Iop_64HLtoV128,
24123 binop( Iop_I64StoF64,
24151 binop(Iop_F64toF32,
24153 binop(Iop_I64StoF64, mkexpr(rmode),
24181 binop(Iop_F64toF32,
24638 binop( Iop_F64toF32, mkexpr(rmode),
25615 putYMMReg( rG, binop(Iop_V128HLtoV256,
25677 putYMMReg( rG, binop(Iop_V128HLtoV256,
26906 IRExpr* cv1 = binop(Iop_ShrN32x4,
26907 binop(Iop_ShlN32x4, mkexpr(ctrlV), mkU8(30)),
26912 assign(res, binop(Iop_Perm32x4, mkexpr(dataV), cv1));
26925 assign(res, binop(Iop_V128HLtoV256, mkexpr(rHi), mkexpr(rLo)));
26938 binop(Iop_Shr64, mkexpr(cHi), mkU8(1))),
26942 binop(Iop_Shr64, mkexpr(cLo), mkU8(1))),
26945 assign(res, binop(Iop_64HLtoV128, rHi, rLo));
26958 assign(res, binop(Iop_V128HLtoV256, mkexpr(rHi), mkexpr(rLo)));
26966 IRExpr* cv1 = binop(Iop_ShrN32x8,
26967 binop(Iop_ShlN32x8, mkexpr(ctrlV), mkU8(29)),
26972 assign(res, binop(Iop_Perm32x8, mkexpr(dataV), cv1));
27003 binop(mkSizedOp(ty,op8), mkexpr(src),
27004 narrowTo(Ity_I8, binop(mkSizedOp(ty,Iop_And8), mkexpr(amt),
27223 binop(ty == Ity_I32 ? Iop_CmpLT32S : Iop_CmpLT64S,
27232 binop(Iop_Add64, mkexpr(addr),
27297 putYMMReg( rV, binop(Iop_SarN32x8, getYMMReg( rV ), mkU8(31)) );
27299 putYMMRegLoAndZU( rV, binop(Iop_SarN32x4, getXMMReg( rV ), mkU8(31)) );
27302 putYMMRegLane64( rV, i, binop(Iop_Sar64, getYMMRegLane64( rV, i ),
27313 binop(ty == Ity_I32 ? Iop_CmpLT32S : Iop_CmpLT64S,
27322 case 2: addr_expr = binop(Iop_Shl64, addr_expr, mkU8(1)); break;
27323 case 4: addr_expr = binop(Iop_Shl64, addr_expr, mkU8(2)); break;
27324 case 8: addr_expr = binop(Iop_Shl64, addr_expr, mkU8(3)); break;
27327 addr_expr = binop(Iop_Add64, mkexpr(addr), addr_expr);
27499 binop(Iop_64HLtoV128,
27550 binop( Iop_V128HLtoV256,
27551 binop(Iop_64HLtoV128,
27555 binop(Iop_64HLtoV128,
27598 binop(Iop_64HLtoV128,
27637 binop(Iop_V128HLtoV256,
27638 binop(Iop_64HLtoV128,
27641 binop(Iop_64HLtoV128,
27827 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
27828 IRExpr* res = binop(Iop_64HLtoV128, mkexpr(t64), mkexpr(t64));
27844 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
27861 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
27862 IRExpr* res = binop(Iop_64HLtoV128, mkexpr(t64), mkexpr(t64));
27878 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
27934 putYMMReg( rG, binop(Iop_V128HLtoV256, mkexpr(t128), mkexpr(t128)) );
28543 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
28544 IRExpr* res = binop(Iop_64HLtoV128, mkexpr(t64), mkexpr(t64));
28566 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
28592 IRExpr* res = binop(Iop_64HLtoV128, mkexpr(t64), mkexpr(t64));
28632 putYMMReg( rG, binop(Iop_V128HLtoV256, mkexpr(t128), mkexpr(t128)) );
28655 assign(t16, binop(Iop_8HLto16, mkexpr(t8), mkexpr(t8)));
28657 assign(t32, binop(Iop_16HLto32, mkexpr(t16), mkexpr(t16)));
28659 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
28660 IRExpr* res = binop(Iop_64HLtoV128, mkexpr(t64), mkexpr(t64));
28681 assign(t16, binop(Iop_8HLto16, mkexpr(t8), mkexpr(t8)));
28683 assign(t32, binop(Iop_16HLto32, mkexpr(t16), mkexpr(t16)));
28685 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
28711 assign(t32, binop(Iop_16HLto32, mkexpr(t16), mkexpr(t16)));
28713 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
28714 IRExpr* res = binop(Iop_64HLtoV128, mkexpr(t64), mkexpr(t64));
28735 assign(t32, binop(Iop_16HLto32, mkexpr(t16), mkexpr(t16)));
28737 assign(t64, binop(Iop_32HLto64, mkexpr(t32), mkexpr(t32)));
29080 assign( dst, binop( mkSizedOp(ty,Iop_And8),
29117 assign( dst, binop(mkSizedOp(ty,Iop_And8),
29118 binop(mkSizedOp(ty,Iop_Sub8), mkU(ty, 0),
29151 assign( dst, binop(mkSizedOp(ty,Iop_Xor8),
29152 binop(mkSizedOp(ty,Iop_Sub8), mkexpr(src),
29185 assign( dst, binop(mkSizedOp(ty,Iop_And8),
29186 binop(mkSizedOp(ty,Iop_Sub8), mkexpr(src),
29227 assign( cond, binop(Iop_CmpLT32U,
29242 binop(Iop_CmpEQ8, mkexpr(start), mkU8(0)),
29244 binop(
29246 binop(
29249 binop(Iop_Sub8, mkU8(8*size), mkexpr(start))
29251 binop(Iop_Sub8, mkU8(8*size), mkexpr(start))
29324 IRExpr* masked = binop(mkSizedOp(ty,Iop_And8),
29363 assign( res, binop(size == 8 ? Iop_MullU64 : Iop_MullU32,
29438 binop(Iop_CmpLT32U,
29439 binop(Iop_Add32,
29444 binop(Iop_CmpEQ8, mkexpr(len), mkU8(0)),
29446 binop(mkSizedOp(ty,Iop_Shr8),
29447 binop(mkSizedOp(ty,Iop_Shl8), mkexpr(src1),
29448 binop(Iop_Sub8,
29449 binop(Iop_Sub8, mkU8(8*size),
29452 binop(Iop_Sub8, mkU8(8*size),
29456 binop(Iop_CmpLT32U,
29459 binop(mkSizedOp(ty,Iop_Shr8), mkexpr(src1),
29687 IRExpr* res = binop(Iop_V128HLtoV256, mkexpr(dVhi), mkexpr(dVlo));
29746 assign(dV, binop(Iop_64HLtoV128,
29816 assign(s10, loadLE(Ity_V128, binop(Iop_Add64,
29818 assign(s11, loadLE(Ity_V128, binop(Iop_Add64,
29874 # define CVT(s) binop(Iop_RoundF32toInt, mkexpr(rm), \
29925 # define CVT(s) binop(Iop_RoundF32toInt, mkexpr(rm), \
29977 # define CVT(s) binop(Iop_RoundF64toInt, mkexpr(rm), \
30022 # define CVT(s) binop(Iop_RoundF64toInt, mkexpr(rm), \
30072 assign(res, binop(isD ? Iop_RoundF64toInt : Iop_RoundF32toInt,
30282 putYMMReg( rG, binop( Iop_V128HLtoV256,
30356 putYMMReg( rG, binop( Iop_V128HLtoV256,
30746 putYMMReg( rG, binop( Iop_V128HLtoV256,
30857 putYMMReg( rG, binop( Iop_V128HLtoV256,
30933 assign(s10, loadLE(Ity_V128, binop(Iop_Add64,
30935 assign(s11, loadLE(Ity_V128, binop(Iop_Add64,
31069 : binop( mkSizedOp(ty,Iop_Or8),
31070 binop( mkSizedOp(ty,Iop_Shr8), mkexpr(src),
31072 binop( mkSizedOp(ty,Iop_Shl8), mkexpr(src),
31195 assign(t2, binop(Iop_Sub64, getIReg64(R_RSP), mkU64(8)));
31842 // assign(t[0], binop(Iop_Or64, mkexpr(src),
31843 // binop(Iop_Shr64, mkexpr(src), mkU8(1))));
31844 // assign(t[1], binop(Iop_Or64, mkexpr(t[0]),
31845 // binop(Iop_Shr64, mkexpr(t[0]), mkU8(2))));
31846 // assign(t[2], binop(Iop_Or64, mkexpr(t[1]),
31847 // binop(Iop_Shr64, mkexpr(t[1]), mkU8(4))));
31848 // assign(t[3], binop(Iop_Or64, mkexpr(t[2]),
31849 // binop(Iop_Shr64, mkexpr(t[2]), mkU8(8))));
31850 // assign(t[4], binop(Iop_Or64, mkexpr(t[3]),
31851 // binop(Iop_Shr64, mkexpr(t[3]), mkU8(16))));
31852 // assign(t[5], binop(Iop_Or64, mkexpr(t[4]),
31853 // binop(Iop_Shr64, mkexpr(t[4]), mkU8(32))));
31858 // assign(t[0], binop(Iop_Or32, mkexpr(src),
31859 // binop(Iop_Shr32, mkexpr(src), mkU8(1))));
31860 // assign(t[1], binop(Iop_Or32, mkexpr(t[0]),
31861 // binop(Iop_Shr32, mkexpr(t[0]), mkU8(2))));
31862 // assign(t[2], binop(Iop_Or32, mkexpr(t[1]),
31863 // binop(Iop_Shr32, mkexpr(t[1]), mkU8(4))));
31864 // assign(t[3], binop(Iop_Or32, mkexpr(t[2]),
31865 // binop(Iop_Shr32, mkexpr(t[2]), mkU8(8))));
31866 // assign(t[4], binop(Iop_Or32, mkexpr(t[3]),
31867 // binop(Iop_Shr32, mkexpr(t[3]), mkU8(16))));
31872 // assign(t[0], binop(Iop_Or16, mkexpr(src),
31873 // binop(Iop_Shr16, mkexpr(src), mkU8(1))));
31874 // assign(t[1], binop(Iop_Or16, mkexpr(t[0]),
31875 // binop(Iop_Shr16, mkexpr(t[0]), mkU8(2))));
31876 // assign(t[2], binop(Iop_Or16, mkexpr(t[1]),
31877 // binop(Iop_Shr16, mkexpr(t[1]), mkU8(4))));
31878 // assign(t[3], binop(Iop_Or16, mkexpr(t[2]),
31879 // binop(Iop_Shr16, mkexpr(t[2]), mkU8(8))));