Home | History | Annotate | Download | only in priv

Lines Matching defs:ty

230 static IRTemp newTemp ( IRType ty )
232 vassert(isPlausibleIRType(ty));
233 return newIRTemp( irsb->tyenv, ty );
291 static IRExpr* mkU ( IRType ty, ULong i )
293 switch (ty) {
307 static IRExpr* loadLE ( IRType ty, IRExpr* addr )
309 return IRExpr_Load(Iend_LE, ty, addr);
312 static IROp mkSizedOp ( IRType ty, IROp op8 )
321 switch (ty) {
988 IRType ty = typeOfIRExpr(irsb->tyenv, e);
991 case 8: vassert(ty == Ity_I64);
994 case 4: vassert(ty == Ity_I32);
997 case 2: vassert(ty == Ity_I16);
1000 case 1: vassert(ty == Ity_I8);
1645 void setFlags_DEP1_DEP2 ( IROp op8, IRTemp dep1, IRTemp dep2, IRType ty )
1648 switch (ty) {
1670 void setFlags_DEP1 ( IROp op8, IRTemp dep1, IRType ty )
1673 switch (ty) {
1700 IRType ty,
1704 switch (ty) {
1744 static void setFlags_INC_DEC ( Bool inc, IRTemp res, IRType ty )
1748 switch (ty) {
1769 void setFlags_MUL ( IRType ty, IRTemp arg1, IRTemp arg2, ULong base_op )
1771 switch (ty) {
1864 IRType ty = szToITy(sz);
1866 IRTemp oldcn = newTemp(ty);
1867 IROp plus = mkSizedOp(ty, Iop_Add8);
1868 IROp xor = mkSizedOp(ty, Iop_Xor8);
1870 vassert(typeOfIRTemp(irsb->tyenv, tres) == ty);
1885 assign( oldcn, narrowTo(ty, mkexpr(oldc)) );
1898 vassert(typeOfIRTemp(irsb->tyenv, texpVal) == ty);
1923 IRType ty = szToITy(sz);
1925 IRTemp oldcn = newTemp(ty);
1926 IROp minus = mkSizedOp(ty, Iop_Sub8);
1927 IROp xor = mkSizedOp(ty, Iop_Xor8);
1929 vassert(typeOfIRTemp(irsb->tyenv, tres) == ty);
1944 assign( oldcn, narrowTo(ty, mkexpr(oldc)) );
1957 vassert(typeOfIRTemp(irsb->tyenv, texpVal) == ty);
2672 IRType ty = szToITy(size);
2673 IRTemp dst1 = newTemp(ty);
2674 IRTemp src = newTemp(ty);
2675 IRTemp dst0 = newTemp(ty);
2695 putIRegG(size,pfx,rm, mkU(ty,0));
2711 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2713 setFlags_DEP1_DEP2(op8, dst0, src, ty);
2715 setFlags_DEP1(op8, dst1, ty);
2740 assign( dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
2742 setFlags_DEP1_DEP2(op8, dst0, src, ty);
2744 setFlags_DEP1(op8, dst1, ty);
2788 IRType ty = szToITy(size);
2789 IRTemp dst1 = newTemp(ty);
2790 IRTemp src = newTemp(ty);
2791 IRTemp dst0 = newTemp(ty);
2809 putIRegE(size,pfx,rm, mkU(ty,0));
2825 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2827 setFlags_DEP1_DEP2(op8, dst0, src, ty);
2829 setFlags_DEP1(op8, dst1, ty);
2843 assign(dst0, loadLE(ty,mkexpr(addr)));
2868 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
2881 setFlags_DEP1_DEP2(op8, dst0, src, ty);
2883 setFlags_DEP1(op8, dst1, ty);
2995 IRType ty = szToITy(size);
2996 IRTemp dst0 = newTemp(ty);
2997 IRTemp src = newTemp(ty);
2998 IRTemp dst1 = newTemp(ty);
3001 assign(src, mkU(ty,lit & mkSizeMask(size)));
3004 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
3005 setFlags_DEP1_DEP2(op8, dst0, src, ty);
3010 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)) );
3011 setFlags_DEP1(op8, dst1, ty);
3148 IRType ty = szToITy(sz);
3149 IRTemp dst1 = newTemp(ty);
3150 IRTemp src = newTemp(ty);
3151 IRTemp dst0 = newTemp(ty);
3170 assign(src, mkU(ty,d64 & mask));
3180 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
3182 setFlags_DEP1_DEP2(op8, dst0, src, ty);
3184 setFlags_DEP1(op8, dst1, ty);
3197 assign(dst0, loadLE(ty,mkexpr(addr)));
3198 assign(src, mkU(ty,d64 & mask));
3222 assign(dst1, binop(mkSizedOp(ty,op8), mkexpr(dst0), mkexpr(src)));
3233 setFlags_DEP1_DEP2(op8, dst0, src, ty);
3235 setFlags_DEP1(op8, dst1, ty);
3261 IRType ty = szToITy(sz);
3262 IRTemp dst0 = newTemp(ty);
3263 IRTemp dst1 = newTemp(ty);
3276 assign(dst0, loadLE(ty,mkexpr(addr)));
3343 assign( dst1, narrowTo(ty, mkexpr(new_value)) );
3402 setFlags_DEP1_DEP2_shift(op64, res64, res64ss, ty, shift_amt);
3405 assign( dst1, narrowTo(ty, mkexpr(res64)) );
3411 Int ccOp = ty==Ity_I8 ? 0 : (ty==Ity_I16 ? 1
3412 : (ty==Ity_I32 ? 2 : 3));
3425 if (ty == Ity_I64)
3434 binop( mkSizedOp(ty,Iop_Or8),
3435 binop( mkSizedOp(ty,Iop_Shl8),
3439 binop( mkSizedOp(ty,Iop_Shr8),
3451 binop( mkSizedOp(ty,Iop_Or8),
3452 binop( mkSizedOp(ty,Iop_Shr8),
3456 binop( mkSizedOp(ty,Iop_Shl8),
3530 IRType ty = szToITy(sz);
3576 assign( t2, widenUto64(loadLE(ty, mkexpr(t_addr))) );
3603 putIRegE(sz, pfx, modrm, narrowTo(ty, mkexpr(t2m)));
3607 narrowTo(ty, mkexpr(t2))/*expd*/,
3608 narrowTo(ty, mkexpr(t2m))/*new*/,
3611 storeLE(mkexpr(t_addr), narrowTo(ty, mkexpr(t2m)));
3641 IRType ty = szToITy(sz);
3642 IRTemp t1 = newTemp(ty);
3646 switch (ty) {
3703 ppIRType(ty);
3720 IRType ty = szToITy(sz);
3721 IRTemp t1 = newTemp(ty);
3731 dst1 = newTemp(ty);
3732 assign(dst1, binop(mkSizedOp(ty,Iop_And8),
3734 mkU(ty, d64 & mkSizeMask(sz))));
3735 setFlags_DEP1( Iop_And8, dst1, ty );
3747 unop(mkSizedOp(ty,Iop_Not8),
3754 dst0 = newTemp(ty);
3755 src = newTemp(ty);
3756 dst1 = newTemp(ty);
3757 assign(dst0, mkU(ty,0));
3759 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8), mkexpr(dst0),
3761 setFlags_DEP1_DEP2(Iop_Sub8, dst0, src, ty);
3767 src = newTemp(ty);
3774 src = newTemp(ty);
3805 t1 = newTemp(ty);
3807 assign(t1, loadLE(ty,mkexpr(addr)));
3812 dst1 = newTemp(ty);
3813 assign(dst1, binop(mkSizedOp(ty,Iop_And8),
3815 mkU(ty, d64 & mkSizeMask(sz))));
3816 setFlags_DEP1( Iop_And8, dst1, ty );
3824 dst1 = newTemp(ty);
3825 assign(dst1, unop(mkSizedOp(ty,Iop_Not8), mkexpr(t1)));
3835 dst0 = newTemp(ty);
3836 src = newTemp(ty);
3837 dst1 = newTemp(ty);
3838 assign(dst0, mkU(ty,0));
3840 assign(dst1, binop(mkSizedOp(ty,Iop_Sub8), mkexpr(dst0),
3848 setFlags_DEP1_DEP2(Iop_Sub8, dst0, src, ty);
3882 IRType ty = Ity_I8;
3883 IRTemp t1 = newTemp(ty);
3884 IRTemp t2 = newTemp(ty);
3895 setFlags_INC_DEC( True, t2, ty );
3900 setFlags_INC_DEC( False, t2, ty );
3911 assign( t1, loadLE(ty, mkexpr(addr)) );
3921 setFlags_INC_DEC( True, t2, ty );
3931 setFlags_INC_DEC( False, t2, ty );
3954 IRType ty = szToITy(sz);
3955 IRTemp t1 = newTemp(ty);
3967 t2 = newTemp(ty);
3968 assign(t2, binop(mkSizedOp(ty,Iop_Add8),
3969 mkexpr(t1), mkU(ty,1)));
3970 setFlags_INC_DEC( True, t2, ty );
3974 t2 = newTemp(ty);
3975 assign(t2, binop(mkSizedOp(ty,Iop_Sub8),
3976 mkexpr(t1), mkU(ty,1)));
3977 setFlags_INC_DEC( False, t2, ty );
4017 assign(t1, loadLE(ty,mkexpr(addr)));
4021 t2 = newTemp(ty);
4022 assign(t2, binop(mkSizedOp(ty,Iop_Add8),
4023 mkexpr(t1), mkU(ty,1)));
4030 setFlags_INC_DEC( True, t2, ty );
4033 t2 = newTemp(ty);
4034 assign(t2, binop(mkSizedOp(ty,Iop_Sub8),
4035 mkexpr(t1), mkU(ty,1)));
4042 setFlags_INC_DEC( False, t2, ty );
4136 IRType ty = szToITy(sz);
4149 storeLE( mkexpr(td), loadLE(ty,mkexpr(ts)) );
4164 IRType ty = szToITy(sz);
4173 putIRegRAX ( sz, loadLE(ty, mkexpr(ts)) );
4184 IRType ty = szToITy(sz);
4185 IRTemp ta = newTemp(ty); /* rAX */
4207 IRType ty = szToITy(sz);
4208 IRTemp tdv = newTemp(ty); /* (RDI) */
4209 IRTemp tsv = newTemp(ty); /* (RSI) */
4222 assign( tdv, loadLE(ty,mkexpr(td)) );
4224 assign( tsv, loadLE(ty,mkexpr(ts)) );
4226 setFlags_DEP1_DEP2 ( Iop_Sub8, tsv, tdv, ty );
4241 IRType ty = szToITy(sz);
4242 IRTemp ta = newTemp(ty); /* rAX */
4244 IRTemp tdv = newTemp(ty); /* (RDI) */
4254 assign( tdv, loadLE(ty,mkexpr(td)) );
4256 setFlags_DEP1_DEP2 ( Iop_Sub8, ta, tdv, ty );
4328 IRType ty = szToITy(size);
4329 IRTemp te = newTemp(ty);
4330 IRTemp tg = newTemp(ty);
4331 IRTemp resLo = newTemp(ty);
4338 assign( te, loadLE(ty,mkexpr(addr)) );
4341 setFlags_MUL ( ty, te, tg, AMD64G_CC_OP_SMULB );
4343 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tg) ) );
4373 IRType ty = szToITy(size);
4374 IRTemp te = newTemp(ty);
4375 IRTemp tl = newTemp(ty);
4376 IRTemp resLo = newTemp(ty);
4386 assign(te, loadLE(ty, mkexpr(addr)));
4393 assign(tl, mkU(ty,d64));
4395 assign( resLo, binop( mkSizedOp(ty, Iop_Mul8), mkexpr(te), mkexpr(tl) ));
4397 setFlags_MUL ( ty, te, tl, AMD64G_CC_OP_SMULB );
4410 IRTemp, and return a new IRTemp holding the result. 'ty' may be
4412 static IRTemp gen_POPCOUNT ( IRType ty, IRTemp src )
4415 if (ty == Ity_I16) {
4420 mask[i] = newTemp(ty);
4429 nyu = newTemp(ty);
4442 if (ty == Ity_I32) {
4447 mask[i] = newTemp(ty);
4457 nyu = newTemp(ty);
4470 if (ty == Ity_I64) {
4475 mask[i] = newTemp(ty);
4486 nyu = newTemp(ty);
4506 'ty' may be Ity_I16, Ity_I32 or Ity_I64 only. In the case where
4509 static IRTemp gen_LZCNT ( IRType ty, IRTemp src )
4511 vassert(ty == Ity_I64 || ty == Ity_I32 || ty == Ity_I16);
4519 mkU8(64 - 8 * sizeofIRType(ty))));
4529 mkU64(8 * sizeofIRType(ty))
4532 IRTemp res = newTemp(ty);
4533 assign(res, narrowTo(ty, mkexpr(res64)));
7237 IRType ty = szToITy(sz);
7238 IRTemp gsrc = newTemp(ty);
7239 IRTemp esrc = newTemp(ty);
7280 assign( esrc, loadLE(ty, mkexpr(addr)) );
7370 resTy = newTemp(ty);
7371 rssTy = newTemp(ty);
7372 assign( resTy, narrowTo(ty, mkexpr(res64)) );
7373 assign( rssTy, narrowTo(ty, mkexpr(rss64)) );
7377 resTy, rssTy, ty, tmpSH );
7573 IRType ty = szToITy(sz);
7574 IRTemp src = newTemp(ty);
7575 IRTemp dst = newTemp(ty);
7591 assign( src, loadLE(ty, mkexpr(addr)) );
7685 IRType ty = szToITy(sz);
7686 IRTemp t1 = newTemp(ty);
7687 IRTemp t2 = newTemp(ty);
7774 IRType ty = szToITy(size);
7775 IRTemp acc = newTemp(ty);
7776 IRTemp src = newTemp(ty);
7777 IRTemp dest = newTemp(ty);
7778 IRTemp dest2 = newTemp(ty);
7779 IRTemp acc2 = newTemp(ty);
7801 setFlags_DEP1_DEP2(Iop_Sub8, acc, dest, ty);
7814 assign( dest, loadLE(ty, mkexpr(addr)) );
7818 setFlags_DEP1_DEP2(Iop_Sub8, acc, dest, ty);
7841 setFlags_DEP1_DEP2(Iop_Sub8, acc, dest, ty);
7883 IRType ty = szToITy(sz);
7884 IRTemp tmps = newTemp(ty);
7885 IRTemp tmpd = newTemp(ty);
7906 assign( tmps, loadLE(ty, mkexpr(addr)) );
7933 IRType ty = szToITy(sz);
7934 IRTemp tmpd = newTemp(ty);
7935 IRTemp tmpt0 = newTemp(ty);
7936 IRTemp tmpt1 = newTemp(ty);
7953 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
7955 setFlags_DEP1_DEP2( Iop_Add8, tmpd, tmpt0, ty );
7967 assign( tmpd, loadLE(ty, mkexpr(addr)) );
7969 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
7971 setFlags_DEP1_DEP2( Iop_Add8, tmpd, tmpt0, ty );
7982 assign( tmpd, loadLE(ty, mkexpr(addr)) );
7984 assign( tmpt1, binop(mkSizedOp(ty,Iop_Add8),
7988 setFlags_DEP1_DEP2( Iop_Add8, tmpd, tmpt0, ty );
9064 IRType ty;
15415 /*IRType*/ ty = szToITy(sz);
15416 IRTemp src = newTemp(ty);
15425 assign(src, loadLE(ty, mkexpr(addr)));
15431 IRTemp result = gen_POPCOUNT(ty, src);
15641 /*IRType*/ ty = szToITy(sz);
15642 IRTemp src = newTemp(ty);
15651 assign(src, loadLE(ty, mkexpr(addr)));
15657 IRTemp res = gen_LZCNT(ty, src);
16364 ty = szToITy(sz);
16366 binop(mkSizedOp(ty,Iop_Sar8),
16715 ty = szToITy(sz);
16718 putIRegRAX(sz, loadLE( ty, mkexpr(addr) ));
16733 ty = szToITy(sz);
17265 ty = sz==2 ? Ity_I16 : Ity_I64;
17266 t1 = newTemp(ty);
17289 ty = szToITy(sz);
17291 t2 = newTemp(ty);
17296 if (ty == Ity_I16)
17298 storeLE( mkexpr(t1), mkU(ty,d64) );
17613 ty = szToITy(sz);
17614 t1 = newTemp(ty); t2 = newTemp(ty);
17627 assign( t1, loadLE(ty, mkexpr(addr)) );
17724 ty = szToITy(sz);
17735 putIRegRAX(sz, narrowTo( ty, mkexpr(t2) ) );
17773 ty = szToITy(sz);
18867 //static IRTemp gen_LZCNT ( IRType ty, IRTemp src )
18879 // t[i] = newTemp(ty);
18881 // if (ty == Ity_I64) {
18895 // return gen_POPCOUNT(ty, t[6]);
18897 // if (ty == Ity_I32) {
18909 // return gen_POPCOUNT(ty, t[5]);
18911 // if (ty == Ity_I16) {
18921 // return gen_POPCOUNT(ty, t[4]);